首先,我们要明白一点:程序不能独立运行,作为资源分配和独立运行的单位是进程。操作系统所具有的四大特征也都是基于进程而形成的。
学习进程的前提:
根据前趋图,我们就可以发现程序有以下的三个特性:
但是,当程序中引入了并发这么一个概念的时候,会给程序带来新的特征:
为什么要引入进程:
在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性,以及其运行结果不可再现性的特征。由此,决定了通常的程序是不能参与并发执行的,否则,程序的运行也就失去了意义。为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,人们引入了“进程”的概念。
小总结:引入进程就是为了能够让程序能够并发执行!
进程的定义:
进程的特征:
除了进程具有程序所没有的PCB结构外,还具有下面一些特征:
一般而言,每一个进程至少应处于以下三种基本状态之一: **(1) 就绪(Ready)状态。(2) 执行(Running)状态。(3) 阻塞(Block)状态。 **
进程控制是指系统使用一些具有特定功能的程序段来创建、撤消进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。
进程的控制是通过原语实现的。用于进程控制的原语有:创建原语、撤消原语、阻塞原语、唤醒原语、挂起原语和激活原语等。
一般,把系统态下执行的某些具有特定功能的程序段称为原语。 原语可分为机器指令级原语和功能级原语。 前者是一条语句,后者是一段代码。 机器指令级原语的特点是执行期间不允许中断,它是一个不可分割的基本单位。 功能级原语的特点是作为原语的程序段不允许并发执行。
引起挂起状态的原因:
这里写图片描述
在进程有关系的时候有两种关系
信号量机制进程同步的一个工具,使用它能够合理地分配CPU资源,管理进程
一般地,我们对资源分配的时候,我们有以下的原则:
记录型信号量机制
为使多个进程能互斥地访问某临界资源,只需为该资源设置一互斥信号量mutex,并设其初始值为1,然后将各进程访问该资源的临界区CS置于wait(mutex)和signal(mutex)操作之间即可。
还可利用信号量来描述程序或语句之间的前趋关系。设有两个并发执行的进程P1和P2。P1中有语句S1;P2中有语句S2。我们希望在S1执行后再执行S2。为实现这种前趋关系,只需使进程P1和P2共享一个公用信号量S,并赋予其初值为0,将signal(S)操作放在语句S1后面,而在S2语句前面插入wait(S)操作,即
在进程P1中,用S1;signal(S);
在进程P2中,用wait(S);S2;
进程通信,是指进程之间的信息交换,其所交换的信息量大小不一。
信号量机制在通信方面的缺点:1) 效率低;2) 通信对用户不透明。
高级进程通信是指用户可直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。(往往我们都是使用高级进程通信的)
在进程通信的时候还有几种类型可分:
消息传递系统的实现方法又可以分几种:
在间接通信的方式中,信箱作为的是一个实体
对于信箱而言也有几种关系: