本笔记结合《2023王道操作系统考研复习指导》食用

操作系统OS第二章进程管理

  • 本笔记结合《2023王道操作系统考研复习指导》食用
  • 1、进程
    • 1.1、进程的组成
      • 1.1.1、PCB
      • 1.1.2、程序段、数据段
    • 1.2、进程的特征
    • 1.3、小结
  • 2、进程的状态
    • 2.1、创建态、就绪态
    • 2.2、运行态
    • 2.3、阻塞态
    • 2.4、终止态
    • 2.5、进程状态的转换(进程五状态模型)
    • 2.6、进程的组织
      • 2.6.1、链接方式
      • 2.6.2、索引方式
      • 2.6.2、小结
    • 2.7、小结
  • 3、进程控制
    • 3.1、如何实现进程控制
    • 3.2、进程控制相关的原语
      • 3.2.1、进程创建的原语
      • 3.2.2、进程终止的原语
      • 3.2.3、进程的阻塞和唤醒原语
      • 3.2.4、进程的切换原语
    • 3.4、小结
  • 4、进程通信IPC
    • 4.1、共享存储
    • 4.2、管道通信
    • 4.3、消息传递
      • 4.3.1、直接通信方式
      • 4.3.2、间接通信方式
    • 4.4、小结
  • 5、多线程模型
    • 5.1、什么是线程
    • 5.2、引入线程的变化
    • 5.3、线程的属性
  • 6、线程的实现方式
    • 6.1、用户级线程
    • 6.2、内核级线程
    • 6.3、多线程模型
      • 6.3.1、一对一模型
      • 6.3.2、多对一模型
      • 6.3.3、多对多模型
    • 6.4、小结
  • 7、进程调度
    • 7.1、调度的基本概念
    • 7.2、调度的三个层次
      • 7.2.1、高级调度
      • 7.2.2、低级调度
      • 7.2.3、中级调度
    • 7.3、七状态模型
    • 7.4、三层调度的联系
    • 7.5、小结
    • 7.6、进程调度的时机
    • 7.7、进程调度的方式
    • 7.8、进程的切换与过程
    • 7.9、小结
  • 8、调度算法的评价指标
    • 8.1、CPU利用率
    • 8.2、系统吞吐量
    • 8.3、周转时间
    • 8.4、等待时间
    • 8.5、响应时间
    • 8.6、小结
  • 9、调度算法
    • 9.1、早期批处理系统
      • 9.1.1、先来先服务FCFS
      • 9.1.2、短作业优先
        • 1、非抢占式的短作业/进程优先算法
        • 2、抢占式的短作业/进程优先算法
      • 9.1.3、高响应比优先
      • 9.1.4、小结
    • 9.2、交互式系统
      • 9.2.1、时间片轮转调度算法(RR)
      • 9.2.2、优先级调度算法
        • 1、非抢占式的优先级调度算法
        • 2、抢占式的优先级调度算法
        • 3、补充知识
      • 9.2.3、多级反馈队列调度算法
      • 9.2.4、小结
  • 10、进程同步/互斥
    • 10.1、进程同步
    • 10.2、进程互斥
    • 10.3、小结
  • 11、进程互斥的实现方法
    • 11.1、软件实现方法
      • 11.1.1、单标志法
      • 11.1.2、双标志先检查法
      • 11.1.3、双标志后检查法
      • 11.1.4、Peterson算法
      • 11.1.5、小结
    • 11.2、硬件实现方法
      • 11.2.1、中断屏蔽方法
      • 11.2.2、TestAndSet指令
      • 11.2.3、Swap指令
      • 11.2.4、小结

1、进程

程序:是静态的,就是个存放在磁盘里的可执行文件(QQ.exe),就是一系列的指令集合。

进程:是动态的,是程序的一次执行过程。

同一个程序多次执行会对应多个进程,例如下图中我们同一个程序QQ多次执行,每次都会对应不同的进程。

思考:操作系统是怎么区分这三个进程呢?

1.1、进程的组成

1.1.1、PCB

当进程被创建时,操作系统会为该进程分配一个 唯一的、不重复的身份证号:PID(Process ID),进程ID

  • 操作系统要记录PID、进程所属用户ID(UID)[基本的进程描述信息,可以让操作系统区分各个进程]
  • 还要记录给进程分配了哪些资源(如:分配了多少内存、正在使用哪些I/O设备、正在使用哪些文件)[可用于实现操作系统对资源的管理]
  • 还要记录进程的运行情况(如:CPU使用时间、磁盘使用情况、网络流量使用情况等)[可用于实现操作系统对进程的控制、调度]

这些信息都被保存在一个数据结构PCB(Oricess Control Block)中,即进程控制块,操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中。

1.1.2、程序段、数据段

进程的组成有三部分:PCB、程序段、数据段

  • PCB是给操作系统用的
  • 程序段、数据段是给进程自己用的

如上图,我们通常写的代码最终会被编译为可执行文件(.exe),当我们运行此程序前会将程序放入内存中,这时操作系统会为这个程序创建对应的PCB,除此之外程序的指令序列也会被存入内存中,这一系列的指令我们称为程序段,CPU会从内存中取出这些指令来执行,在CPU执行的过程中,代码中定义的数据也会被存放在内存中,我们称为数据段

一个进程实体(进程映像)由PCB、程序段、数据段组成。进程动态的,**进程实体(进程映像)是静态的。**我们可以把进程实体理解为进程在动态执行过程当中某一时刻的快照,也就是进程实体能够反映进程在某一时刻的状态。

1.2、进程的特征

程序是静态的,进程是动态的,相比于程序,进程拥有以下特征:

  • 动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的。
  • 并发性:内存中有多个进程实体,各进程可并发执行。
  • 独立性:进程是能独立运行、独立获得资源、独立接收调度的基本单位
  • 异步性:各进程是按各自独立的、不可预知的速度向前推进,操作系统要提供"进程同步机制"来解决异步问题。
  • 结构性:每个进程都会配置一个PCB。从结构上看,进程由程序段、数据段、PCB组成
  1. 动态性是进程最基本的特征
  2. 异步性会导致并发程序执行结果的不确定性

1.3、小结

2、进程的状态

2.1、创建态、就绪态

如下图,当我们在运行.exe文件时,进程正在被创建,状态是 创建态。当进程创建完成后,就进入了 就绪态。但是由于CPU可能很忙,所以就绪态的进程不能立即运行。所以处于就绪态的进程可能有很多个。

2.2、运行态

  • 当CPU空闲时,操作系统就会选择一个就绪进程,让它上处理机运行。如果一个进程此时在CPU上运行,那么这个进程处于"运行态"
  • 当进程1在CPU运行时,CPU会执行该进程对应的指令序列,如果某一时刻进程的指令序列发出系统调用,请求使用打印机资源,但是这个时候打印机正在为别的进程服务,那么这个进程1此时无法继续向下执行,操作系统便会让这个进程1下CPU,并让它进入 阻塞态

2.3、阻塞态

  • 在进程1运行过程中,可能会请求等待某个事件的的发生(如等待某种系统资源的分配,或者等待其他进程的响应)

  • 在这个事件发生之前,进程1无法继续往下执行,此时操作系统会让这个进程1下CPU,并让它进入"阻塞态"

  • 当CPU空闲时,又会选择另一个"就绪态"进程2上CPU运行

  • 如果某一时刻打印机空闲了,这说明进程1等待的资源有了,这个时候操作系统会将进程1从阻塞态变为就绪态

2.4、终止态

  • 进程2可以执行 exit 系统调用,请求操作系统终止进程2。此时进程2会进入"终止态",操作系统会让进程2下CPU,并回收内存空间等资源,最后还要回收进程2的PCB,当终止进程的工作完成之后,这个进程2就彻底消失了。

2.5、进程状态的转换(进程五状态模型)

  1. 进程运行之前需要被创建,在创建的过程中系统会完成一系列相应的工作,包括新建PCB、给进程分配一系列资源等,如果一个进程正在被创建的话,那么这个进程当前处于 创建态
  2. 当进程被创建完成就有了上CPU的条件,这个时候进程就处于 就绪态,也就是说处于就绪态的进程只差处理机这种资源,其他资源全部具备
  3. 处于就绪态的进程被操作系统调度这个进程就可以上处理机运行,当它在处理机上运行的时候它就处于 运行态,也就是说正在处理机上运行的进程既有其他全部资源也有了处理机这种资源
  4. 有时正在运行的进程可能会等待某种事件的发生,在这个事件发生之前这个进程是没有办法继续向下执行,所以这个进程此时会被剥夺处理机资源以及其他全部资源,这个时候进程就处于 阻塞态
  5. 若进程等待的事件发生了,那么这个进程就可以从 阻塞态 回到 就绪态
  6. 处于 运行态的进程可以主动请求运行结束,或者运行过程中遇到不可修复的错误时,会从 运行态转变为 终止态
  • 运行态->阻塞态 是一种进程自身做出的主动行为
  • 阻塞态->就绪态 不是进程自身能控制的,是一种被动行为。

注意:有的时候进程可以直接从运行态转换为 就绪态,比如说操作系统给进程分配的时间片用完了、或者处理机被更重要的进程抢占了的时候。

注意:不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态(因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求)

  • 单CPU情况下,同一时刻只能会有一个进程处于运行态,多核CPU情况下,可能有多个进程处于运行态。

  • 阻塞态又称等待态、创建态又称新建态,终止态又称结束态

  • 进程PCB中,会有一个变量state来表示进程的当前状态。如:1表示创建态、2表示就绪态、3表示运行态等等,为了对同一个状态下的各个进程进行统一的管理,操作系统会将各个进程的PCB组织起来,如何组织呢?

2.6、进程的组织

进程的组织方式分为链接方式和索引方式:

2.6.1、链接方式

链接方式是指操作系统会管理一系列的队列,每个队列都会指向相应状态的PCB,例如下图中阻塞队列指针指向当前处于阻塞态的进程,就绪队列指针指向当前处于就绪态的进程,并且通常会把优先级更高的进程放在队头。很多操作系统还会根据阻塞原因不同再分为多个阻塞队列,例如等待打印机的阻塞队列、等待磁盘的打印队列等等。

2.6.2、索引方式

索引方式:操作系统会给各种状态的进程建立索引表,每个索引表的表项又会指向相应状态的PCB。

2.6.2、小结

2.7、小结

3、进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简单理解:反正进程控制就是要实现进程状态转换

3.1、如何实现进程控制

实现进程控制是用原语实现的,原语是一种特殊的程序,它的执行具有原子性,也就是说,这段程序的运行必须是一气呵成,不能中断。

思考:为什么进程控制(状态转换)的过程要"一气呵成"?

如果不能一气呵成,就有可能导致操作系统中的某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作。例如阻塞队列里面有进程1在等待事件的发生,当进程1等待的事件发生后,操作系统要做这样两件事:

  1. 将进程1的state状态设置为1(就绪态状态对应的数字)
  2. 将进程1的PCB从阻塞队列放到就绪队列

如果操作系统完成第一步后收到中断信号,那么state=1的进程却被放在了阻塞队列里,这就导致了状态和队列信息对不上,造成信息不统一,系统就出错了。

如上图,此时CPU处于内核态,在执行一条一条的指令,每执行完一次指令都会检查是否有中断信号需要处理,例如执行指令2结束后发现有 关中断指令,那么CPU会暂停当前的程序,转而执行中断处理程序。

  • CPU执行了 关中断指令之后,就不再例行检查中断信号,直到执行 开中断指令之后才会恢复检查
  • 这样,关中断、开中断之间的指令序列就是不可被中断的,这样就实现了原子性

关中断指令开中断指令这两个是特权指令,如果是非特权指令,那么用户就想用就用,直接霸占CPU

【王道】操作系统OS第二章进程管理(二[1])相关推荐

  1. 操作系统:第二章 进程管理3 - 进程同步与互斥

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  2. 操作系统:第二章 进程管理2 - 处理机调度

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  3. 操作系统:第二章 进程管理1 - 进程、线程

    本文已收录至 Github(MD-Notes),若博客中图片打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵盖了互 ...

  4. 王道考研——操作系统(第二章 进程管理)(进程的同步,进程的互斥,管程)

    一.进程同步与进程互斥 什么是进程同步 "进程同步"讨论的就是怎么解决"进程异步"的问题 什么是进程互斥 知识回顾与重要考点 二.进程互斥的软件实现方法 学习提 ...

  5. (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题

    本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...

  6. (王道408考研操作系统)第二章进程管理-第三节10:经典同步问题之哲学家进餐问题

    本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 (王道408 ...

  7. (王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题

    注意:生产者与消费者问题Linux系统编程专栏有案例讲解 Linux系统编程39:多线程之基于阻塞队列生产者与消费者模型 Linux系统编程40:多线程之基于环形队列的生产者与消费者模型 本文接:(王 ...

  8. 操作系统 课堂笔记 第二章 进程管理

    第二章 进程管理 2.1 本章导学 基本内容: (1)进程的基本概念. (2)进程控制. (3)进程间互斥与同步. (4)进程通信. (5)进程调度. (6)进程死锁. (7)线程. 学习重点: (1 ...

  9. 笔记篇:操作系统第二章 进程管理

    笔记篇:操作系统第二章 进程管理 目录 笔记篇:操作系统第二章 进程管理 2.1 进程的基本概念 2.1.1 程序的顺序执行及其特征 2.1.2 前驱图 2.1.3 程序的并发执行及其特征 2.1.4 ...

最新文章

  1. Pv4、IPv6 、域名 正则表达式
  2. NYOJ 93 汉诺塔 (数学)
  3. Halcon:二维仿射变换实例探究
  4. 小型移动 webApp Demo 知识点整理
  5. 对飞行前请求的响应未通过访问控制检查:它没有http ok状态。_对不起,看完这篇HTTP,真的可以吊打面试官...
  6. C++工作笔记-在项目中解决编码问题小技巧
  7. 大数据处理工具Kafka、Zk、Spark
  8. 力扣1512.好数对的数目
  9. 手把手带你阅读Mybatis源码(一)构造篇
  10. LightOJ 1266 - Points in Rectangle 二维树状数组
  11. 马云:用 10% 大脑创造出来的机器不可能毁灭人类
  12. html扫雷游戏代码,HTML5扫雷
  13. win10千万不要重置_小白不要再用“一键重装系统”了,后果很严重!
  14. 电力系统的常用仿真模块MATLAB/SIMULINK(2)
  15. pytube——下载YouTube视频的python库
  16. WebSocket多人聊天室
  17. ept技术_每天5分钟跟我一起学电气之EPT的原理
  18. php soh stx,symbol NULL SOH STX ETX EOT ENQ ACK ASCII(符号零SOH STX ETX传输结束询问ACK ASCII).pdf...
  19. 咖啡自由的六个阶段:无差别打击,你还能承受吗?
  20. 本实例要求输出名言“贵有恒,何必三更起五更睡:最无益,只怕一日曝十日寒。

热门文章

  1. 游戏设计模式-命令模式
  2. BZOJ4200 洛谷2304 UOJ132:[NOI2015]小园丁与老司机——题解
  3. python元祖封包_Python基础——解包与封包
  4. 《调研报告》:黑灰产哄抢消费券的两种方式
  5. PowerPMAC技术培训------3、PowerPMAC编程工具-IDE
  6. Altium常用元件库,制作原理图使用,共1844个文件,500M+
  7. 安卓蓝牙USB连接热敏打印机一
  8. Spring框架中 自动装配的详解 属性值的详解
  9. 喜欢游戏学计算机,我喜欢电脑游戏小学作文
  10. 2022电大国家开放大学网上形考任务-金融企业会计非免费(非答案)