操作系统系列笔记(四) - 进程,线程及CPU调度

进程和线程

进程

进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程
进程包含了正在运行的一个程序的所有状态信息, 代码, 数据, 状态寄存器, 通用寄存器, 进程占用系统资源等
进程的特点: 动态性(可动态的创建/结束), 并发性(可以被独立调度并占用CPU), 独立性(不同进程相互不影响), 制约性(因访问共享数据/资源或进程间同步而产生制约)

进程控制块(PCB, Process Control Block)

管理和控制进程运行所用的信息集合, 操作系统用PCB来描述进程的基本情况及运行变化的过程
PCB是进程存在的唯一标志, 对进程的组织管理都是通过PCB来实现的
进程控制块内容: 进程标识信息, 处理机现场保存, 进程控制信息(调度和状态, 进程间通信信息, 存储管理信息, 所用资源, 有关数据结构连接关系)
PCB可通过链表和索引表组织起来
链表, 同一状态的进程其PCB成一链表, 多个状态对应多个不同的链表, 就绪链表, 阻塞链表, 等待链表
索引表, 同一状态的进程归入一个索引表, 多个状态对应对个不同的索引表

进程状态

进程生命周期划分, 创建, 执行, 等待, 抢占, 唤醒, 结束
创建: 系统初始化/用户请求创建一个新进程/正在运行的进程执行了创建进程的系统调用, 创建好放到就绪队列
等待: 执行过程中某个条件不成立或资源不足够, 进入等待(阻塞)状态, 一定是进程内部的原因导致
被抢占: 有高优先级进程就绪/进程执行当前时间用完
唤醒: 被阻塞进程需要的资源可被满足/等待的事件到达, 只能被别的进程或操作系统唤醒
结束: 正常退出/错误退出(自愿的), 致命错误/被其他进程所杀(强制性的)
挂起: 把进程从内存转到外存,处在挂起状态的进程映像在磁盘上, 目的是减少进程占用内存
就绪, 运行, 等待, 是进程整个生命周期中三种基本状态

线程

线程是进程的一部分, 描述指令流执行状态, 它是进程中指令执行流的最小单元, 是CPU调度的基本单位
进程负责调度线程, 进程控制块保存多个线程堆栈, 线程控制块指针指向各自堆栈
优点: 一个进程中可同时存在多个线程, 各个线程之间可以并发执行, 各个线程可以共享地址空间和文件资源
缺点: 一个线程崩溃会导致所属进程的所有线程崩溃
线程和进程的比较
进程是资源分配单位, 线程是CPU调度单位
进程拥有一个完整的资源平台, 线程只独享指令流执行的必要资源(寄存器和栈)
总结: 线程能减少并发执行的时间和空间开销, 创建终止时间更短, 线程切换时间短, 同一进程的各线程共享内存和文件资源, 不需要通过内核可直接通信

CPU调度

简介

CPU资源的时分复用
进程切换: CPU资源的当前占用者切换, 处理机调度, 从就绪队列中挑选下一个占用CPU运行的进程,从多个可用CPU中挑选就绪进程可用的CPU资源
调度程序: 挑选就绪进程的内核函数, 需要注意调度策略和调度时机
调度时机: 进程从运行状态切换到等待状态/进程被终结
比较调度算法的准则: CPU使用率, 吞吐量(单位时间内完成的进程数量), 周转时间(进程从初始化到结束包括等待的总时间), 等待时间(进程在就绪队列的总时间), 响应时间(从提交请求到产生相应的总时间)
响应时间目标: 减少响应时间, 减少平均响应时间的波动
吞吐量目标: 增加吞吐量, 减少等待时间
公平性目标: 保证每个进程占用相同的CPU时间和相同的等待时间, 但公平通常会增加平均响应时间

调度算法

先来先服务算法(FCFS, First Come First Served): 依据进程进入就绪状态的先后顺序排列, 简单, 但平均等待时间波动较大, I/O和CPU资源的利用率较低
短进程优先算法(SPN, SJF, SRT): 选择就绪队列中执行时间最短进程占用CPU进入执行状态, 具有最优平均周转时间, 可能导致饥饿, 长进程无法获得CPU
最高响应比优先算法(HRRN): 选择就绪队列中响应比最高的进程, (等待时间+执行时间)/执行时间, 基于上一个的改进, 不可抢占, 关注进程的等待时间, 防止无限期推迟
时间片轮转算法(RR, Round-Robin): 时间片: 分配处理机资源的基本时间单元, 时间片结束时, 按FCFS算法切换到下一个就绪进程, 每隔n-1个时间片, 进程执行一个时间片
时间片太大等待时间长, 时间片太小影响吞吐量, 合适长度, 经验规则,维持上下文切换开销处于1%以内
多级反馈队列算法(MLFQ):
多级队列: 就绪队列被划分为多个独立的子队列, 比如交互, 批处理, 每个队列拥有自己的调度策略, 队列间的调度使用时间片轮转
多级反馈队列: 进程可在不同队列间移动的多级队列算法, 时间片大小随优先级增加而增加, 如进程在当前时间片没有完成, 则降到下一个优先级
公平共享调度算法(FSS, Fair Share Scheduling): 资源访问的公平, 对用户分组, 一些用户组比其他用户组更重要, 保证不重要的组无法垄断资源

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2017-2023 王丹鹏
  • Powered by Hexo Theme Ayer
  • 冀ICP备15029707号

请我喝杯咖啡吧~

支付宝
微信