操作系统--进程管理(一)

缅怀

avatar

就在昨天,MVP 的呼声响彻标靶中心球馆,步入不惑的玫瑰,拿下了生涯新高 50 分,曾经的天之骄子,风城玫瑰,NBA 历史上最年轻的常规赛 MVP,经过多年坎途,不曾在病魔面前哭泣,而在昨天却低下了头,落下了泪… 感慨万千,脑海中记着的依然是 09 年那一轮史诗级季后赛,还有那个给芝加哥带来无限希望的玫瑰。此刻,向传奇致敬!加油,罗斯!

进程定义

一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程

说的直接一点,我们编写代码时,一个 mian() 函数的动态执行过程就是一个进程,当然还包括这个 main() 函数执行过程中使用的资源和数据。

进程的组成

一个进程应该包括:

  • 程序的代码;
  • 程序处理的数据;
  • 程序计数器中的值,指示下一条将运行的指令;
  • 一组通用的寄存器的当前值,堆,栈;
  • 一组系统资源(如内存资源,文件系统,网络等一系列资源)

总之,进程包含了正在运行的一个程序的所有状态信息

进程与程序的关系

  • 程序是产生进程的基础
  • 程序的每次运行构成不同的进程
  • 进程是程序功能的体现
  • 通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包含多个程序。

进程与程序的区别

  • 进程是 动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行,进程有核心态用户态
  • 进程是 暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存
  • 进程与程序的组成不同:进程的组成包括程序,数据和进程控制块(即进程状态信息)

进程的特点

  • 动态性:可动态的创建,结束进程; 创建接口 fork(), 结束进程: kill 等。
  • 并发性:进程可以被独立调度并占有处理机运行;多核并行,单核一段时间内并发执行;
  • 独立性:不同进程的工作不相互影响;(正确性不受影响,操作系统内存管理,页表管理使得不同进程访问不同的物理内存,相互之间独立不受影响。越过地址空间会产生缺页异常。保证进程独数据独立性。)
  • 制约性:因访问共享数据/资源或者进程间同步产生制约;

进程控制结构(PCB)

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

使用进程控制块

进程的创建:为该进程生成一个PCB
进程终止:回收它的PCB
进程的组织管理:通过对PCB的组织管理来实现

对进程的创建,终止和管理都是通过处理PCB来完成

PCB包含的三大类信息

  • 进程标识信息。如本进程的标识,本进程的产生者标识(父进程标识);用户标识。
  • 处理机状态信息保存区。保存进程的运行现场信息:
    1. 用户可见寄存器,用户程序可以使用数据,地址等寄存器。 
    2. 控制和状态寄存器,如程序计数器(PC),程序状态字(PSW)。
    3. 栈指针,过程调用/系统调用/中断处理和返回时需要用到它。
    
  • 进程控制信息
    1. 调度和状态信息,用于操作系统调度进程并占用处理机使用。
    2. 进程间通信信息,为支持进程间与通信相关的各种标识,信号,信件等,这些信息存放在接收方的进程控制块里面。
    3. 存储管理信息,包含有指向本进程影像存储空间的数据结构。
    4. 进程所用的资源,说明由进程打开,使用的系统资源,如打开的文件等。
    5. 有关数据结构连接信息,进程可以连接到一个进程队列中,或连接到相关的其他进程的PCB。
    

PCB的组织方式

  • 链表: 同一状态的进程其 PCB 组成一个链表,多个状态对应多个不同的链表。各状态的进程形成不同的链表:就绪链表,阻塞链表。(一般采用链表,动态插入删除,开销较小)
  • 索引表:同一状态的进程归入一个 index 表(由 index 指向 PCB ),多个状态对应多个不同的 index 表。各状态的进程形成不同的索引表:就绪索引表,阻塞索引表。(如果 PCB 个数比较固定,不会频繁插入删除,使用索引表)

参考链接

https://www.bilibili.com/video/av6538245/?p=2