0%

第2章-进程的描述与控制

💡 TIP

相关链接|

进程的基本状态

  1. 执行

  2. 就绪

  3. 阻塞

image-20241219203552806

💡 TIP

绝对不会出现,CPU空闲而还有进程就绪的情况

cpu一定会从就绪队列中取下一个进程运行

进程的五种基本状态

  • 创建状态 -> 即进程在申请PCB的阶段

  • 终止状态 -> 进程已经完全运行完,等待OS善后,并回收PCB也称将死状态

进程的7种基本状态

  • 挂起状态

即在状态转换种加入了人的参与,由用户操作将进程挂起

由,就绪和阻塞拓展出了两种新状态,

即,静态就绪和静态阻塞

用户执行挂起操作时就会将进程转换为这两种状态

image-20241219204500153

进程控制块

PCB是进程的一部分,是操作系统中最重要的记录型数据结构,是进程存在的唯一标志,常驻内存

PCB的作用

  • 作为独立运行基本单位的标志

  • 能实现间断性的运行方式

  • 提供进程管理所需要的信息

  • 提供基础调度所需要的信息

  • 实现与其他进程的同步与通信

PCB的信息——处理机状态信息

处理机状态信息主要是由处理机各种寄存器的内容所组成

  • 通用寄存器

  • 指令寄存器:存放要访问的下一条指令

  • 程序状态字PSW:条件码,执行方式,中断屏蔽标志

  • 用户栈指针:每个用户进程有一个或若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址

PCB的信息——进程控制信息

  • 程序和数据的地址

  • 进程同步和通信机制

  • 资源清单

  • 链接指针

image-20241220084923485

进程切换时的过程

PCB表

系统把所有的PCB组织在一起,并把他们放在内存的固定区域,就构成了PCB表。

💡 TIP

PCB表的大小决定了系统中最多可同时存在的进程格式,称为系统的并发度

PCB表的组织方式

  • 线性方式

  • 链接方式

  • 索引方式

image-20241220085403229

线性组织方式

image-20241220085453303

链接组织方式

image-20241220085625834

索引组织方式

进程控制

原语

  • 原语

    由若干条指令组成,用于完成一定功能的一个过程。

  • 进程管理最基本的功能:由OS内核中的原语实现

进程创建

进程具有层次结构

有些进程会由于自身业务的需要,去主动创建子进程去处理业务

此时,就出现了层级关系,即父子进程

进程创建过程

  1. 申请空白PCB

  2. 分配所需要资源

  3. 初始化PCB

  4. 插入就绪队列

进程终止

引起进程终止的事件

正常结束

异常结束

外界干预

进程终止过程

找进程的PCB,读取进程状态

终止进程,并设置调度标志

终止所有子进程

回收进程所拥有的全部资源

回收PCB,生命周期结束

进程的阻塞与唤醒

引起进程阻塞的事件

image-20241220090934888

进程阻塞过程

  • 停止执行

  • 状态由执行改为阻塞

  • 将PCB插入阻塞队列

唤醒过程

  • 从阻塞队列中移出

  • 状态由阻塞改为就绪

  • 将PCB插入就绪队列

💡 TIP

进程的阻塞与唤醒一般成对出现

Unix进程控制实现

创建——fork()

  • 为子进程分配进程表

  • 为子进程分配进程标识符

  • 复制进程的进程映像,但不复制共享内存区

  • 增加父进程所打开文件的计数,表示新进程也在使用这些文件

  • 把子进程置为“就绪”

  • 返回子进程标识符给父进程,把0值返回给子进程

image-20241220091917855

💡 TIP

如果创建失败,则父进程会返回$-1$

进程映像的改换——exec

更改进程执行代码,更改正文段,数据段

调用格式:exec(文件名,参数列表,环境变量)

进程终止——exit

当一个进程指向性结束后,进程可以调用exit自我终止。

终止时它放弃占用的所有资源,清除缓冲区,处于等待父进程善后处理状态。

等待子进程终止——wait

父进程等待子进程的终止

对处于等待善后处理状态的子进程进行善后处理。

在用户态进程中,父进程调用wait(status)等待它的一个子进程终止

若子进程没有终止,则它进入阻塞态

进程通信

进程通信是指进程之间的信息交换

image-20241220093317725

信号

概念

软件中断

处理异步事件的机制

信号名(以SIG开头)

信号产生

按中断键,硬件异常,kill函数,kill命令

信号

image-20241220093706272

image-20241220093717283

无名管道

原理

  • 管道是连接读写进程的一个特殊文件,允许进程按先进先出的方式传送数据,也能使进程同步执行操作

  • 发送进程以字符流形式把大量数据送入管道,接收进程重管道中读取数据,所以叫管道通信

相关系统调用

通过pipe系统调用创建无名管道,得到两个文件描述符,分别用于写和读

image-20241220094536400

image-20241220094559790

消息队列

msgget

根据用户给出的整数值key,创建新消息队列或打开现有消息队列,返回一个消息队列ID

msgsnd

发送消息

msgrcv

接收消息,可以指定消息类型;没有消息返回-1

msgctl

对消息队列进行控制,如删除消息队列;

无名管道

原理

  • 共享内存是内核为进程创建的一个特殊的内存段,它可连接到自己的地址空间,也可以连接到其他进程的地址空间

  • 最快的进程间通信方式

  • 不提供任何同步功能

image-20241220100757861

线程的概念及实现

💡 TIP

进程的两个基本属性

  • 进程是一个可拥有资源的独立单位

  • 进程是一个可独立调度和分派的基本单位

  • 进程是拥有资源的基本单位

  • 线程作为调度和分派的基本单位

调度的基本单位

并发性

  • 在引入线程的操作系统中,不仅进程中间可以并发执行,而且在一个进程中的多个线程之间,也可以并发执行

线程状态

  • 执行态、就绪态、阻塞态

  • 线程状态转换与进程状态转换一样

进程控制块

  • 线程标识符、一组寄存器、线程运行态、优先级、线程专有存储器、信号屏蔽、堆栈指针

线程实现

实现方式

  • 内核支持线程KST

  • 用户级线程ULT

  • 组合方式

具体实现:

  • 内核支持线程的实现

  • 用户级线程的实现

在内核空间的实现

优点

  • 在多处理机系统中,内核可同时调度同一进程的多个线程

  • 如果一个线程阻塞了,内核可调度其他线程(同一或其他进程)

  • 线程切换比较块,开销小

  • 内核本身可采用多线程技术,提高执行速度和效率

缺点

  • 对用户线程切换,开销较大

用户级线程ULT

image-20241220103748808

优点

  • 线程切换不需要转换到内核空间

  • 调度算法可以是进程专用的

  • 线程的实现与OS平台无关

缺点

  • 系统调用的阻塞问题

  • 多线程应用不能利用多处理机进行多重处理的优点

image-20241220104928083

进程线程对比

  1. 需要频繁创建销毁的优先用线程

  2. 需要进行大量计算的优先使用线程。所谓大量计算,会耗费很多CPU,切换频繁,优先选择线程。

  3. 强相关处理用线程,弱相关处理用进程

  4. 可能要拓展到多机分布的用进程,多核分布的用线程

💡 TIP

课后习题

  1. 🚩采用轮换调度算法,进程中设置内核进程和用户进程效果完全不同


(完)