计算机操作系统进程管理

计算机操作系统

作用

通过资源管理提高计算机系统的效率; 改善人机界面向用户提供友好的工作环境。

特征

并发性 、 共享性 、 虚拟性 、 不确定性。

功能

进程管理 、存储管理 、 文件管理 、设备管理 、作业管理。

分类

批处理操作系统 、分时操作系统(轮流使用CPU工作片) 、
实时操作系统(快速响应) 、网络操作系统 、分布式操作系统(物理分散的
计 算机互联系统) 、微机操作系统(Windows) 、嵌入式操作系统。

启动流程

BIOS->主引导记录->操作系统。

进程

进程是计算机中正在运行的程序的实例 。它是操作系统进行资源分配和管理的基本单位, 包括代码、数据和执行状态等信息

进程控制块PCB(唯一标志) 、程序(描述进程要做什么) 、数据(存放进程执行时 所需数据)

状态图

分为三态图,五态图
1
1

前趋图

用来表示哪些任务可以并行执行, 哪些任务之间有顺序关系
任务间的并行 、 任务间的先后顺序。
1

资源图

用来表示进程和资源之间的分配和请求关系。
1
P代表进程, R代表资源, R方框中有几个圆球就表示有几个这种资源, 在图中, R1指向P1, 表示R1有一个资源已经分配给了P1, P1指向R2, 表示P1还需要P1请求一个R2资源才能执行。

阻塞节点: 某进程所请求的资源已经全部分配完毕,先分配,后请求, 无法获取所需资源, 该进程被阻塞了无法
继 续 。如上图中P2。
非阻塞节点: 某进程所请求的资源还有剩余, 可以分配给该进程继续运行 。如上图中P1、P3。
当一个进程资源图中所有进程都是阻塞节点时, 即陷入死锁状态。

同步与互斥

互斥: 某资源(即临界资源)在同一时间内只能由一个任务单独使用, 使用时需要加锁,使用完后解锁才能被其他任务使用;

临界资源: 各进程间需要以互斥方式对其进行访问的资源。
临界区: 指进程中对临界资源实施操作的那段程序 。本质是一段程序代码。
互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1。

同步: 多个任务可以并发执行, 只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题;

同步信号量: 对共享资源的访问控制,初值一般是共享资源的数量。

信号量

P操作: 申请资源, S=S-1,若S>=0, 则执行P操作的进程继续执行;若S<0, 则
置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
V操作: 释放资源, S=S+1,若S>0, 代表此时资源有空余, 没有阻塞的进程, 则
该进程继续执行; 若S<=0, 代表此时线程在被阻塞, 所以需要从阻塞状态唤醒一
个进程, 并将其插入就绪队列(此时因为缺少资源被P操作阻塞的进程可以继续执
行),然后执行V操作的进程继续。

经典问题: 生产者和消费者的问题
三个信号量: 互斥信号量S0(仓库独立使用权), 同步信号量S1(仓库空闲位
置), 同步信号量S2(仓库商品个数) 。
生产者流程:
生产一个商品S
P(S0) 占用仓库
P(S1) 申请资源,申请一个位置
将商品放入仓库中
V(S2) 释放资源,商品个数+1
V(S0) 不再占用仓库
消费者流程:
P(S0) 占用仓库
P(S2) 消耗一个商品,商品个数-1
取出一个商品
V(S1) 商品被取出,释放一个位置+1
V(S0) 不再占用仓库

1、PV对等,会形成平衡

2、先P后V

1、图上面都是P操作,下面都是V操作,根据V的信号量,在前驱图标出信号量S

前驱图:

指进去P操作,指进去的前面的点就是V操作,指出去V操作,指出去后面的点就是P操作

如果第一个进程只有一步,就是V操作

如果最后一个点只有一步,就是P操作

2、两个程序段推导,根据S信号量的初始值,然后PV的操作顺序,来控制程序等待,如果唤醒了其他进程,需要当前进程执行完,才去执行被唤醒的进程

死锁

当一个进程在等待永远不可能发生的事件时, 就会产生死锁, 若系统中
有 多个进程处于死锁状态, 就会造成系统死锁。
死锁产生的四个必要条件:
• 资源互斥
• 每个进程占有资源并等待其他资源
• 系统不能剥夺进程资源
• 进程资源图是一个环路。

死锁产生后, 解决措施是打破四大条件, 有下列方法:
死锁预防: 采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一, 使系统任何时刻都不满足死锁的条件。
死锁避免: 一般采用银行家算法来避免,银行家算法, 就是提前计算出一条不会死锁的资源分配方法, 才分配资源,否则不分配资源,相当于借贷, 考虑对方 还得起才借钱, 提前考虑好以后, 就可以避免死锁。
死锁检测: 允许死锁产生, 但系统定时运行一个检测死锁的程序,若检测到系
统 中发生死锁, 则设法加以解除。
死锁解除: 即死锁发生后的解除方法, 如强制剥夺资源,撤销进程等。

死锁计算问题: 系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最 大资源数为n(R-1) 。其不发生死锁的最小资源数为n(R-1)+1。

银行家算法问题:

根据总资源数-已分配资源数,得到剩余资源数,然后看满足哪个进程资源先执行,先执行后就会释放资源

线程

传统的进程有两个属性:
• 可拥有资源的独立单位
• 可独立调度和分配的基本单位
引入线程后, 线程是独立调度的最小单位, 进程是拥有资源的最小单位,
线程可以共享进程的公共数据 、全局变量 、代码 、文件等资源, 但不能
共 享线程独有的资源, 如线程的栈指针等标识数据