操作系统(二)——进程管理

2020-03-25  本文已影响0人  花卷呀花卷

程序活着的标志是进程,把进程总结为一个公式:进程=程序+状态。
多个进程在内存中运行过程就像一场社交活动,需要交流,为了保证社交活动能够正常进行就要对进程的行为作出干预(调度)。因此需要对单个进程、多个进程的交流进行管理。

image.png

(一)进程

1.什么是进程

关于进程的定义有很多,其中一个定义是:进程是进程实体的运行过程,是系统进行资源分配调度的一个独立单位。

其实进程也就是程序在内存中运行时的标志,当一个程序被执行时,它从外存被调入到内存中工作,通过进程来标志它的工作状态。因此需要创建小本本一样东西来记录它的状态,这个东西就要做进程控制块(Process Control Block,PCB),一旦PCB被创建了,也就意味着该程序的进程创建了。

程序被调入内存.png

2.进程为什么会出现

由于多道批处理操作系统的出现,多个程序可以并发运行,并且可共享资源,这导致了它们失去了封闭性。一旦失去封闭性,某个程序执行的命令、使用的变量都会受到其他程序的影响,因此引入进程来管理程序的运行状态。

3.进程有哪些特征

每个程序运行都会创建一个进程,进程通过PCB来记录动态运行时的状态,既然PCB用于记录,那么要符合一定的约束条件,记录必须描述,才便于管理。由此可得出进程的特征:

4.如何创建一个进程

程序放在外存中,当用户运行某个程序时,该程序会从外存调入到内存中,这是进程创建的过程。具体实现过程如下图所示:

进程创建过程

PCB记录进程的基本描述信息、控制和管理等一系列信息。其中一项——进程当前状态,不断更新进程的生命状态。进程有5种生命状态:新建、就绪、运行、阻塞和终止。
进程一旦被创建就加入到就绪队列等待调度,此时进程获得除处理机以外的所有资源,只要进程获得处理机便进入到运行态;进程在运行一个时间片周期后,没有执行完毕,重新调回就绪队列中,如果执行过程中需要获取如打印机这类资源,则调入阻塞队列;只要进程等待事件到来,便重新加入就绪队列中。

image.png

5.什么是线程

线程是“轻量级进程”。如果把进程比作工厂,那么线程就是工厂里的生产线,生产线上的元件是共享资源。
同进程一样,线程可以创建和撤销子线程,多个线程之间可以并发执行,同时它也有就绪、阻塞和运行三种状态。

线程示意图

6.线程实现了什么

由于进程的并发性,使得其在创建、相互切换等花费较大的时空开销,引入线程,目的就是为了实现减小程序在并发执行时所付出的时空开销。
体现在以下方面:

(二)调度

1.进程调度史

在多道批处理系统中,进程并发运行,争夺处理机,为了解决这个问题,使用处理机调度,利用公平、高效的算法选择一个进程运行。

程序执行往往经历三级调度:

2.调度方式

如果某个进程A正在CPU上执行时,有一个优先级更高的进程B进入就绪队列,如何分配CPU?两种方式,第一种,等待A的时间片用完或者进入阻塞态后,才把CPU分配给B,第二种,直接暂停A,把CPU分配给B。
这两种方式分别称为非剥夺调度方式剥夺调度方式

调度方式

非剥夺调度方式相比较剥夺调度方式来说优雅一些,比如你在排队在窗口买火车票,有个人很着急,他越过排在你后面的所有人,直接排在你后面,等你买完票后轮到他买,这就像非剥夺调度,而另一种人则直接把你从买票窗口推开,直接买票,这是剥夺式调度。

3.调度算法

操作系统中有6中常用的调度算法:

image.png image.png image.png

(三)进程同步

1.进程之间的关系

多个进程并发运行,它们之前有什么联系?协助和竞争,也就是同步和互斥。
同步:多个进程为了完成同个任务而相互等待,它们之间是相互合作关系。
互斥:多个进程因争夺某一临界资源而等待,只有一个进程使用完后,另一个程序才能使用,它们是竞争关系。

2.解决同步、互斥的方法

解决同步、互斥问题的原因主要是为了保护数据,避免产生与最终预期不一致的结果。
1.软件实现方法
2.硬件实现方法
3.信号量

(四)死锁

1.死锁是什么

计算机内部资源有限,如果多个进程并发执行,且每个进程在执行一开始获得部分资源,执行过程中需要申请其他资源,此时申请的资源被其他程序占用,使得多个进程无法向前推进,形成死锁。

比如两辆车同时过河,它们上桥行驶一半后发现对方,但都不退让,使得双方都没办法继续先前行驶。


image.png

2.死锁产生的原因

系统资源的竞争和进程推进顺序非法。

系统资源的竞争:计算机内部存在不可剥夺的资源,一旦多个进程争夺这些资源,就有可能造成死锁;
进程推进顺序非法:进程执行过程中会不断请求和释放资源,如果某一进程对资源需求量大,不断请求该资源,使得其他进程无法请求足够资源,也会导致死锁。

3.什么条件下会产生死锁

死锁产生的必要条件:

4.避免死锁的策略

避免死锁的策略以破坏以上四个必要条件为目的,在三个不同时机(事前、事中和事后)提出不同的策略。
这三个时机分别对应:死锁预防、死锁避免和死锁检测。


image.png image.png
上一篇下一篇

猜你喜欢

热点阅读