操作系统(三)进程和线程

发布于 2020-04-13  399 次阅读


进 程

1.进程描述

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

进程包括:

  • 一个程序的代码
  • 程序处理的数据
  • 程序计数器的值(指示着下一条将运行的指令)
  • 一组通用寄存器的当前值,堆栈
  • 一组系统资源

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

与程序的联系

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

与程序的区别:

  • 进程是动态的,程序是静态的;进程有核心态和用户态
  • 进程是暂时的,程序是永久的
  • 组成不同:进程的组成包括程序,数据和进程控制块(PCB)

2.进程控制块/PCB/Process Control Block

描述进程的数据结构

OS为每一个进程都维护了一个PCB,用来保存与改进程有关的各种状态信息。

PCB是进程存在的唯一标志
进程的创建:生产一个PCB; 进程的终止:回收它的PCB

PCB包含的三大类信息:

1.进程标识信息

本进程的标识;父进程标识;用户标识

2.处理机状态信息保存区

  • 用户可见寄存器:用户程序可使用的数据,地址寄存器
  • 控制和状态寄存器:程序计数器/PC;程序状态字/PSW......
  • 栈指针:过程调用/系统调用/中断处理 和返回时需要用到它

3.进程控制信息

  • 调度状态信息:OS调度进程并占用处理机使用
  • 进程间通信信息:各种标识,信号,信件等(存在接收方的PCB中)
  • 存储管理信息:包含有指向本进程映像存储空间的数据结构
  • 进程所用资源:有进程打开使用的系统资源
  • 有关数据结构连接信息:进程可以连接到一个进程队列中,或连接到相关的其他进程的PCB

3.进程状态

进程的生命期:创建、(就绪)、运行、等待、唤醒、结束

引起进程的创建:

  • 系统初始化时——init进程
  • 用户请求创建一个新的进程
  • 正在运行的进程执行了创建进程的系统调用

进程运行:内核选择一个就绪的进程,让它占用处理及并执行

进程 等待/阻塞 的三种情况:

  • 请求并等待OS服务
  • 执行某种操作无法马上完成
  • 需要的数据没有到达,进程只能自己阻塞自己

进程唤醒的原因:

  • 被阻塞的进程需要的资源得到满足
  • 被阻塞进程所等待的时间到达
  • 将改进程的PCB插入到就绪队列

进程只能被别的进程或者OS唤醒

进程结束

  • 自愿:正常退出;错误退出
  • 强制性:致命错误;被其他进程所杀

进程状态变化模型


4. 进程挂起

为了合理且充分利用资源

进程在挂起状态时,没有占用内存空间,进程映像在磁盘上

挂起状态:

  • 阻塞挂起/Block-suspend:进程在外存并等待某事件的出现
  • 就绪挂起/Ready-suspend:进程在外存,只要进入内存就可执行

进程内存到外存的情况:

  1. 阻塞——>阻塞挂起
  2. 就绪——>就绪挂起
  3. 运行——>就绪挂起

在外存的状态变化:阻塞挂起——>就绪挂起

解挂/激活/Activate——从外存到内存:

  • 就绪挂起——>就绪:没有就绪进程,或挂起的就绪进程的优先级高于就绪进程
  • 阻塞挂起——>阻塞:当一个进程释放足够内存时,OS会把高优先级的阻塞挂起进程——>阻塞进程