进程(Process)
管理也称为处理机管理
,主要就是合理的分配各个进程使用处理机的时间。
之所以有了这个概念,是因为当系统中有多个并发执行的程序时,程序
这个静态的概念已经不能描述程序执行时的动态过程。
程序执行的特征
单个程序
可以用前趋图
来表示一个程序执行的过程。如下:
三个主要特征:
特征 | 描述 |
---|---|
顺序性 | 严格按照规定顺序执行 |
封闭性 | 独占资源,执行结果不受外界影响 |
可再现性 | 如果执行环境和初始条件都相同,则程序执行结果一定相同 |
多个程序
计算机系统采用多道程序设计技术
,则主存中的多道程序可处于并发执行状态。如下:
\(I_2和C_1,P_1、C_2和P_1,P_2\)并发执行
\(I_2、I_3受I_1的约束\)
并发执行的特征:
- 失去了封闭性
- 程序间相互约束
- 程序与机器执行程序的活动不再一一对应。
进程实体的组成
进程是程序的一次执行
,它由程序、数据和PCB
组成。PCB是进程存在的唯一标志。
被进程共享的程序是不可修改部分,以可再入码
的形式编制。
数据部分是一个进程所专用的,可修改。
PCB内容如下:
信息 | 含义 |
---|---|
进程标识符 | 标明各个进程 |
状态 | 说明进程当前状态 |
位置信息 | 程序和数据在内存或外存的物理位置 |
控制信息 | 参数、信号量和消息等 |
队列指针 | 链接同一状态的进程 |
优先级 | 进程调度的依据 |
现场保护区 | 将处理机的现场保护到该区以便再次调度时能正确运行 |
进程的状态
三态模型
状态:
(1)运行(running)态:进程占有处理器正在运行。
(2)就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行。
(3)阻塞(blocked)态:又称为等待(wait)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。
状态的转换:
(1)运行态一一>等待态:等待使用资源或某事件发生,如等待外设传输;等待人工干预。
(2)等待态一一>就绪态:资源得到满足或某事件己经发生,如外设传输结束;人工干预完成。
(3)运行态一一>就绪态:运行时间片到,或出现有更高优先权进程。
(4)就绪态一一>运行态:CPU空闲时被调度选中一个就绪进程执行。
五态模型
新建态对应于进程刚刚被创建的状态,创建1个进程要通过两个步骤,首先,是为一个新进程创建必要的管理信息;然后,让该进程进入就绪态。新建态可以增加系统调度的灵活性,系统可根据系统性能和内存容量的限制来推迟新建态进程的提交。
进程的终止也要通过两个步骤,首先,是等待操作系统进行善后;然后,退出主存。终止态防止系统进行善后处理时资源分配不当的问题.
三、进程的控制有效控制进程从创建到消亡。
主要包括创建新进程、撤销已完成进程、改变进程状态和实现进程通信等。
进程控制由操作系统内核(Kernel)中的原语(Primitive)实现。
进程通信是各个进程交换信息(互相制约)的过程。
同步和互斥
同步
合作进程的直接制约问题。
同步不是同时,而是交叉并行。
互斥
申请临界资源
的间接制约问题。
临界资源(Critical Resource,CR)一次只能一个进程使用。
临界区管理
临界区(Critical Section,CS)是操作临界资源的程序。
- 有空即进。临界区无进程时,允许等待的进程进入并维持有限时间。
- 无空则等。
- 有限等待。有访问临界区需求的进程不能等待太久,否则陷入"饥饿"状态。
- 让权等待。当前进程不能进入临界区时应立即释放处理机,否则陷入"忙等"状态。
信号量机制
信号量S是一个整数,S大于等于零是代表可供并发进程使用的资源实体数,当S小于零时则表示正在等待使用临界区的进程数(即阻塞队列)。
PV原语(低级通信)
P原语的操作:
(1)S减1;
(2)若S减1后仍大于或等于零,则进程继续执行;
(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。
V原语的操作:
(1)S加1;
(2)若相加结果大于零,则进程继续执行;
(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。
PV操作的缺点:
(1)编程难度大,对用户不透明,使用不当会引起死锁。
(2)效率低。
高级通信
高级进程通信分为三种方式:共享内存模式、消息传递模式、管道通信(共享文件)模式。
五、进程的调度三级调度
进程调度方式
进程调度算法
六、死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备四个必要条件。
1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
线程也称为轻型进程。
线程拥有PC、一组寄存器和栈。
同一进程的线程共享进程的全部资源。
线程的引入是为了减少程序执行的时空开销。
线程可创建另一个线程。