进程

2021-11-11  本文已影响0人  HardMan

进程的定义

某种程度上,进程代表程序的执行过程,会消耗各种资源(CPU 内存 IO等等)
一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。

进程的组成

一个进程应该包括

进程与程序的关系类比
有一个计算机科学家,想亲手给女儿做一个生日蛋糕。所以它就找了以本有关做蛋糕的食谱,买了一些原料,面粉、鸡蛋、糖、香料等,然后边看边做。

食谱=程序;科学家=CPU;原料=数据;做蛋糕=进程
进一步延展

这时小儿子跑进来,说手被蜜蜂蛰了,科学家只好停下手中的活,他在食谱上做了个标记,把状态信息保存了起来。
然后又去找了一本医疗手册,查到了相关的内容,按照上面的指令一步步执行。当伤口处理完之后,又回到厨房从上次停下的位置继续做蛋糕。
这就好比一个进程执行过程中,CPU要去执行另一个进程,那会记录当前进程的状态信息,当回来继续执行该进程的时候,会reload状态信息,从上一次停止的地方开始执行。

进程的特点

动态性:可动态的创建、结束进程
并发性:进程可以被独立调度并占用CPU运行。
独立性:不同进程的工作不相互影响(操作系统给不同的进程分配不同的页表,保证每个进程在独立的内存空间中运行)
制约性:因访问共享数据/资源或进程间同步而产生制约。

程序=算法+数据结构
描述进程的数据结构:进程控制块(Process Control Block,PCB)
操作系统为每个进程都维护了一个PCB,用来保存与该进程有关的各种状态信息。

进程控制结构

进程控制块:操作系统管理控制进程运行所用的信息集合
操作系统用PCB来描述进程的基本情况以及运行变化的过程
PCB是进程存在的唯一标识

进程的创建:为该进程生成一个PCB
进程的终止:回收它的PCB
进程的组织管理:通过对PCB的组织管理来实现
PCB含有3大类信息
(一)进程标识信息。入本进程的标识,本进程的产生者标识(父进程标识);用户标识
(二)处理机状态信息保存区。保存进行的运行现场信息

进程的生命周期

进程的生命期管理:
进程创建
引起进程创建的3个主要事件:

进程运行
内核选择一个就绪的进程,让它占用处理机执行
进程等待

进程状态变化模型

三种基本状态:
运行状态(Running):当一个进程正在处理机上运行
就绪状态(Ready):一个进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行
等待状态(又称阻塞状态 Blocked):一个进程正在等待某一事件而暂停运行时,如等待某资源,等待输入/输出完成。


进程的其它状态:
创建状态(New):一个进程正在被创建,还没有被转到就绪状态之前的状态
结束状态(Exit):一个进程正在从系统中消失时的状态,这是因为进程结束或由于其它原因造成。


进程挂起

进程在挂起状态时,意味着进程没有占用内存空间。处在挂起状态的进程映像在磁盘上。

解挂/激活(Activie):把一个进程从外存转到内存,可能有以下几种情况

问题:OS怎么通过PCB和定义的进程状态来管理PCB,帮助完成进程的调度过程?

状态队列

上下文切换

停止当前运行进程(从运行状态改变成其它状态)并且调度其它进程(转变为运行状态)



创建进程

Unix进程创建系统调用:fork/exec
fork()把一个进程复制成二个进程
parent(old PID), child(new PID)
exec()用新程序来重写当前进程
PID没有改变



image.png

等待和终止进程

wait()系统调用是被父进程用来等待子进程的结束


image.png

子进程执行了exit(),但父进程已经先于子进程死亡,此时没有父进程在等待它执行wait(),此时子进程就交给祖宗进程(init进程、root进程)管理,会定期扫描队列中是否有僵尸线程,如果有 会进行回收。


上一篇 下一篇

猜你喜欢

热点阅读