进程控制块(PCB) = Process Control Block,用来描述进程的数据结构,保存与该进程有关的各种状态信息以及运行变化的过程,是进程存在的唯一标识。
进程控制块的功能使用PCB可以:
创建进程
终止进程
组织管理进程
进程控制块内容(一)进程标识信息:如本进程的标识、父进程标识、用户标识
(二)处理器状态信息:使用寄存器保存进程的运行现场信息
用户可见寄存器:用户程序可以使用的数据,地址等寄存器
控制和状态寄存器:如程序寄存器(PC),程序状态字(PSW)
栈指针:过程调用、系统调用、中断处理和返回时需要用到它
(三)进程控制信息:状态的控制
调度和状态信息:操作系统调度进程并占用处理机使用,描述进程的执行现状
进程间通讯信息:通信相关的标识、信号、信件
存储管理信息:包含指向本进程映像存储空间的数据结构
进程所用信息:进程打开使用的资源,如文件等
数据结构连接信息:进程可以连接到一个进程队列或其他进程的PCB中,描述进程之间的关系,如父进程、子进程
PCB的组织方式链表:同一状态的进程其PCB组成一条链表(运行表、就绪表、阻塞表)
索引表:同上,数据结构使用数组
5.2 进程状态(动) 5.2.1 进程的生命周期管理 graph LR New(创建状态) -->|进入就绪队列| Ready[就绪状态] Ready -->|被调度| Running[运行状态] Running -->|时间片结束| Ready Running -->|等待事件| JudgeBlocked{是否阻塞} JudgeBlocked -->|是| Blocked[等待状态] Blocked -->|事件发生| JudgeWakeup{是否唤醒} JudgeWakeup -->|是| Ready Running -->|终止| Done(结束状态)创建状态:一个进程刚被创建但并未就绪。(PCB初始化)
就绪状态:操作系统选择就绪进程,获得除CPU以外的所有资源。(PCB初始化完成)
运行状态:获得CPU并运行。
等待状态(阻塞状态):等待某一事件而暂停运行。
结束状态:一个进程正在从系统中消失。(PCB删除)
创建事件:系统初始化;用户创建新进程;运行中进程执行系统调用。
阻塞事件:等待系统调用;等待异步调用;数据未就位。(进程只能自己阻塞自己)
唤醒事件:系统调用完成;异步调用完成;数据就位。(只能别的进程唤醒自己)
结束事件:自愿的;异常的警告;致命的错误;别其他进程杀死。
为了充分且合理的利用系统资源将进程挂起,并将挂起的进程映像从内存放到外存上。
分为阻塞挂起和就绪挂起:
graph LR Blocked[等待状态] -->|就绪进程要求更多资源时| BlockedSuspend[等待挂起状态] Ready[就绪状态] -->|被高优先级进程阻塞| ReadySuspend[就绪挂起状态] Running[运行状态] -->|分时系统中被高优先级进程阻塞| ReadySuspend BlockedSuspend -->|事件发生| ReadySuspend BlockedSuspend -.有足够资源时.-> Blocked ReadySuspend -.没有高优先级进程阻塞.-> Ready 5.2.3 PCB实现进程管理 5.3 线程(Thread)轻量版的进程,也可以并发执行,并且共享相同的地址空间,以此实现通信和交互。
5.3.1 什么是线程线程是进程中的一条执行流程。
抽象一下,进程只管理资源和线程,线程是进程的执行流程,负责应用的执行逻辑。
线程让进程的数据与业务分离
一个进程可以同时存在多个线程
线程也可以并发执行
各线程可以共享地址空间和资源
线程的缺点一个线程的崩溃会导致所属进程的崩溃。
5.3.3 进程和线程的比较 进程 线程资源分配单位 CPU调度单位
独享完整的资源平台 只独享寄存器和运行栈
具有状态和转换 具有状态和转换
并发执行时间和空间开销多 开销少
5.3.4 线程的实现
用户线程:在用户空间实现;(用户级线程库来管理)
内核线程:在内核空间实现;(OS内核感知和管理)
轻量级进程:在内核空间实现;
六、CPU调度算法从就绪队列中选择一个进程/线程,在之后可以获得CPU资源。
6.1 调度条件进程的状态从运行切换到等待
一个进程被终止了
6.2 调度原则 基本概念CPU使用率:CPU处于忙状态所占时间的百分比
吞吐量:在单位时间内完成的进程数量
周转时间:一个进程从初始化到结束所需时间(包括等待时间)
等待时间:进程在就绪队列中的总时间(就绪到运行状态所需时间)
响应时间:进程从提交到第一次响应所花费的时间
“更快”的服务更快 = 高带宽(吞吐量) + 低延迟(响应时间)
目标减少等待时间
减少响应时间
减少平均响应时间的波动,越平稳越好
增加吞吐量
6.3 调度算法先来先服务算法(FCFS)()()
短进程优先(SPN)()()
短作业优先(SJF)(Shortest Job First)(同SPN)
短剩余时间优先(SRT)(Shortest Remaining Time)(同SPN)
最高响应比优先(HRRN)()()
时间片轮循(Round Robin)()()
多级反馈队列(Multilevel Feedback Queues)()()
公平共享调度(Fair Share Scheduling)()()
6.3.1 先来先服务(FCFS)FCFS = First Come First Served
6.3.2 短进程优先(SPN)SPN = Shortest Process Next
6.3.3 最高响应比优先(HRRN)HRRN = Highest Response Ratio Next
6.3.4 时间片轮循(Round Robin) 6.3.5 多级反馈队列(Multilevel Feedback Queues) 6.3.6 公平共享调度(Fair Share Scheduling)