进程管理
进程是资源分配的最基本的单位
进程状态
在三态模型中,进程状态分为三个基本状态,即运行态,就绪态,阻塞态。
在五态模型中,进程分为新建态、终止态,运行态,就绪态,阻塞态。
PCB
-
PCB主要包含下面几部分的内容:
- 进程的描述信息,比如进程的名称,标识符,
- 处理机的状态信息,当程序中断是保留此时的信息,以便 CPU 返回时能从断点执行
- 进程调度信息,比如阻塞原因,状态,优先级等等
- 进程控制和资源占用,同步通信机制,链接指针(指向队列中下一个进程的 PCB 地址)
-
PCB 的作用
- PCB是进程实体的一部分,是操作系统中最重要的数据结构
- 由于它的存在,使得多道程序环境下,不能独立运行的程序成为一个能独立运行的基本单位,使得程序可以并发执行
- 系统通过 PCB 来感知进程的存在。(换句话说,PCB 是进程存在的唯一标识)
- 进程的组成可以用下图来表示,PCB 就是他唯一标识符。
进程之间的通信方式
管道通信
管道这种通信方式效率低,不适合进程间频繁地交换数据
消息队列
消息队列是保存在内核中的消息链表
消息队列不适合比较大数据的传输
消息队列通信过程中,存在用户态与内核态之间的数据拷⻉开销
共享内存
共享内存的机制,就是拿出一块虚拟地址空间来,映射到相同的物理内存中
信号量
信号量其实是一个整型的计数器,主要用于实现进程间的互斥与同步,而不是用于缓存进程间通信的数
据。
信号
对于异常情况下的工作模式,就需要用「信号」的方式来通知进程。
Socket
跨网络与不同主机上的进程之间通信,就需要 Socket 通信了。
进程调度算法
-
先来先服务调度算法
-
最短作业优先调度算法:它会优先选择运⾏时间最短的进程来运⾏
-
高响应比优先调度算法:先计算响应比优先级,然后运行最高相应比的进程。
![image-20211217210452281](https://gitee.com/CJ-cooper6/picgo/raw/master/image-20211217210452281.png)
-
时间片轮转调度算法:每个进程分配一个时间片,允许该进程在该时间段中运行。如果时间片用完,进程还在运行,则将CPU分配给另外一个进程
-
最高优先级调度算法:在就绪队列中选择最高优先级的进程运行。优先级有静态优先级和动态优先级
静态优先级:在创建进程的时候就确定了优先级
动态优先级:优先级会动态调整
-
多级反馈队列调度算法:是时间片轮转算法 和 最高优先级算法 的综合。
多级 代表有多个队列,每个队列优先级从高到低,同时优先级越高时间片越短
**反馈 **表示如果有新的进程加入高的优先队列,立刻停止当前运行的进程,转而去运行优先级高的队列
进程和线程创建和撤销的过程中发生了什么事情?
在应用中创建一个子进程的过程如下:
- 申请空白的PCB
- 初始化进程描述信息
- 为进程分配资源以及地址空间
- 将其插入就绪队列中
撤销进程的过程:
- 查找需要撤销的进程的 PCB
- 如果进程处于运行状态,终止进程并进行调度
- 终止子孙进程 - 归还资源
- 将它从所在的队列中移除