目录
概要
操作系统 概述
编辑
进程管理
进程的状态
进程管理-PV操作
利用PV操作实现进程的同步
进程管理-前趋图
进程管理-死锁
概要
操作系统 概述
操作系统的功能: 进程管理、存储管理、文件管理、作业管理、设备管理
操作系统的特征
- 并发性
- 共享性
- 虚拟性
- 不确定性
进程管理
- 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
- 进程的组成
- 进程控制块PCB(唯一标志)
- 程序:描述进程要做什么
- 数据:存放进程执行时所需数据
3. 进程与程序的区别:
- 进程是程序的一次执行过程,没有程序就没有进程
- 程序是完成某个特定功能的一系列程序语句的集合,只要不被破坏,它就永远存在
- 程序是一个静态的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撤销而消亡
- 进程是系统进行资源分配和调度的独立单位,而程序不是
进程与线程:
进程的2个基本属性:
1)可拥有资源的独立单位;
2)可独立调度和分配资源的基本单位;
ps: 线程 只能独立调度, 不分配资源
线程不共享: 程序计数器、栈、寄存器
PCB
PCB组织方式:线性方式、链接方式、索引方式
进程的状态
三态图:
运行 就绪 阻塞
CPU YES NO NO
非CPU YES YES NO
阻塞: 不能直接到「运行」
五态图:
挂起: 程序调度、异常等
「活跃就绪」: 只有此状态,可以到「运行」
「活跃阻塞」: 要经过「静止阻塞」「静止就绪」「活跃就绪」,才能到「运行」
进程管理-PV操作
信号量机制
1965年,荷兰学者Dijkstra提出的信号量机制是一种卓有成效的进程同步与互斥的工具。
信号量是一个整型变量,根据控制对象的不同赋不同的值。
PV操作是实现进程同步与互斥的常用方法。进程的同步与互斥是学习 PV 操作的前提。
同步和互斥往往在实际问题中共存,而不是反义词。
同步的反义词是异步。
互斥的反义词是共享。
互斥:某资源(即临界资源,如打印机、缓冲区。进程间接制约关系)在同一时间内只能由一个任务单独使用,使用时需要加锁,使用完后解锁才能被其他任务使用;
同步:多个任务可以并发执行,只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题;如自行车和汽车。 进程直接制约关系
P操作:【申请资源,S=S-1】,若S>=0,则执行P操作的进程继续执行;若S<0,表示资源不足,去排队,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
V操作:【释放资源,S=S+1】,若S>0,则执行V操作的进程继续执行;若S<=0,表示有进程在排队,则从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺少资源被P操作阻塞的进程可以继续执行),然后执行v操作的进程继续。
注意: 临界区,是一段代码;
S表示资源情况、负值等待的进程数。 S=S-1表示申请资源;S=S+1表示释放资源
互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1.
同步信号量:对共享资源的访问控制,初值一般是共享资源的数量。
利用PV操作实现进程的同步
进程的同步是由于进程间合作引起的相互制约的问题,要实现进程的同步可用一个信号量与消息联系起来。
同步问题的经典例子是生产者-消费者问题。
练习题:
进程管理-前趋图
ps: 依赖关系。只有A,B,C都完成了,才能开始D。 D完成了,才能开始E.
PS: 前置动作用V, 后置检查用P
练习题:
练习题:
ps: 直接制约关系,是先后顺序的影响
练习题:
进程管理-死锁
死锁: 一个进程等待一件不可能发生的事,进程就死锁了。
死锁的4个必要条件:
互斥条件:进程对分配到的资源进行排他使用,即在一段时间内某资源只能被一个进程占用,其他请求该资源的进程进行等待,直到该资源释放。
请求和保持条件:一个进程因为请求资源而阻塞等待时,对自己已经获得的资源保持不放。
不可抢占(剥夺)条件:进程已经获得的资源,在未使用完之前不能被强行剥夺。
循环等待条件:若干进程之间形成一种环形的等待资源关系。
练习题:
S < 5: 一定死锁
如果A,B,C每个都有4个资源,再多给1个资源,则不会死锁。 所以:
S= [5,12]可能死锁,可能不死锁
s>13,一定不会死锁。
如果有m个进程,都需要n个资源,
则 不可能发生死锁: S > m *(n-1) + 1