代码编织梦想

第2章 进程与线程

2.2 处理机调度

2.2.1 调度的概念

1、为什么要进行处理机调度?

进程的数量一般大于处理机的数量,想要计算机高效工作,就需要按照策略执行进程。

2、什么是处理机调度?

按照合适的策略有序的执行进程,以达到计算机高效工作的目的。

2.2.2 调度的实现

进程调度过程:

请求调度事件 -> 运行调度程序 -> 进程切换(上下文切换)

进程调度方式:

1、非抢占调度方式(非剥夺方式)

2、抢占调度方式(剥夺方式)

不能进行进程调度的情况:

1、在处理中断的过程中。

2、进程在操作系统内核临界区中。

3、其他想要完全屏蔽中断的原子操作过程中(加锁、解锁)。

上下文切换的流程:

1、挂起一个进程,保存CPU上下文,包括程序计数器和其他寄存器。

2、更新PCB信息。

3、把进程的PCB移入相应的队列,如就绪队列,阻塞队列。

4、选择另一个进程执行,并更新其PCB。

5、跳转到新线程PCB中的程序计数器所指向的位置执行。

6、恢复处理机上下文。

2.2.3 评价调度算法的指标

1、CPU利用率

CPU的利用率 = CPU有效工作时间 /(CPU有效工作时间 + CPU空闲等待时间)

2、系统吞吐率

单位时间内CPU完成作业的数量。

3、周转时间

周转时间:指从作业提交到作业完成所经历的时间

(作业等待时间 + 在就绪队列中排队 + 处理机上运行 + IO操作)

带权周转时间 = 作业周转时间 / 作业实际运行的时间

4、等待时间

5、响应时间

指从用户提交请求到系统首次产生响应所用的时间。

2.2.4 调度算法

1、先来先服务(FCFS)调度算法

  • 算法简单、但效率低
  • 对长作业有利,但对短作业不利
  • 有利于CPU繁忙型作业,不利于I/O繁忙型作业

2、短作业优先算法(SJF)调度算法

  • 平均等待时间、平均周转时间最少
  • 对长作业不利,会导致长作业长期不被调度(“饥饿”现象)
  • 无法及时处理紧迫性作业

3、优先级调度算法

分为静态优先级和动态优先级。

优先级参照:

  • 系统进程 > 用户进程
  • 交互型进程 > 非交互型进程
  • I/O进程 > 计算型进程

4、高响应比优先调度算法

响应比 = (等待时间 + 要求服务时间)/ 要求服务时间

优点:克服了“饥饿”现象

5、时间片轮转算法

注:一般先考虑非抢占式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_50836068/article/details/129671351

《现代操作系统(中文第三版)》课后习题——第二章 进程与线程-爱代码爱编程

第二章 进程和线程 1、图2-2中给出了三个进程状态,在理论上,三个状态可以有六种转换,每个状态两个。但是,图中只给出了四种转换。有没有可能发生其他两种转换中的一个或两个? 答:从阻塞到运行的转换是可以想象的。假设某个进程在I/O上阻塞,而且I/O结束,如果此时CPU空闲,该进程就可以从阻塞态直接转到运行态。而另外一种转换(从阻塞态到就绪态)是不

《现代操作系统(中文第四版)》课后习题答案 第二章 进程与线程_>进阶的程序员>的博客-爱代码爱编程_图2-2中给出了三个进程状态

如有错误答案,请各位评论指出,多谢多谢~~ 1、图2-2中给出了三个进程状态,在理论上,三个状态可以有六种转换,每个状态两个。但是,图中只给出了四种转换。有没有可能发生其他两种转换中的一个或两个? 从阻塞到运行的转换是可

现代操作系统 第二章 进程与线程 习题_marshazheng的博客-爱代码爱编程

第2章 进程与线程 习题 1. 图2-2中给出了三个进程状态,在理论上,三个状态可以有六种转换,每个状态两个。但是,图中只给出了四种转换。有没有可能发生其他两种转换中的一个或两个? A:从阻塞到运行的转换是可以想象的。假设某个进程在I/O上阻塞,而且I/O结束,如果此时CPU空闲,该进程就可以从阻塞态直接转到运行态。而另外一种转换(从阻塞态到就绪态)

【408计算机考研】操作系统——第二章 进程与线程(一)-爱代码爱编程

第二章 进程与线程(一) 【考纲内容】 (一)进程与线程(★★★☆☆) 进程与线程的基本概念;进程/线程的状态与转换 线程的实现:内核支持的线程,线程库支持的线程进程与线程的组织与控制 进程间通信:共享内存,消息传递,管道 (二) CPU 调度与上下文切换(★★★★☆) 调度的基本概念;调度的目标; 调度的实现:调度器/调度程序 (scheduler

非零基础自学计算机操作系统 第2章 进程、线程与作业 习题二-爱代码爱编程

非零基础自学计算机操作系统 第2章 进程、线程与作业 习题二 【1】为何引入多道程序设计?在多道程序系统中,内存中作业的道数是否越多越好?请说明原因。 答:引入多道程序设计技术是为了提高计算机系统资源的利用率。在多道

现代操作系统(原书第四版)课后题答案 —— 第二章 进程与线程_现代操作系统第四版课后答案-爱代码爱编程

1. 图2-2中给出了三个进程状态。理论上,三个状态之间可以有六种转换,每个状态两个。但图中只给出了四中转换。其余两种转换是否可能发生? 缺少的两种转换分别是: 就绪 → 阻塞阻塞 → 运行 先说就绪 → 阻塞。因为就