目录
4.如果想让某个进程获得50%的运行机会,请问应该使用哪一种调度策略?
5.假定有A、B、C 3个进程,A、B均是纯计算进程,分别需要使用CPU计算50毫秒和100毫秒,而C每计算1 毫秒后进行9毫秒的输入输出操作,并这样重复10次。
●
优先级继承(priority inheritance)
如果要完全杜绝优先级倒挂,则需要在任何时候都确保等待资源的进程所具有的优先级必须低于持有资源的 进程的优先级。而实现这种目标的机制就是优先级继承。在此种方式下,当一个高优先级进程等待一个低优 先进程所持有的资源时,这个低优先级进程将暂时获得高优先级进程的优先级别。这样就能防止一个中间优 先级的进程抢占低优先级进程而延长资源占用时间,同时也防止了因高优先级进程自身进行繁忙等待可能导 致的死锁。即此种方法对两种优先级倒挂都有效果。在释放共享资源后,低优先级进程回到其原来的优先级别。
思考题
1.
进程调度追求的目标是什么?
2.
程序使用
CPU
的模式有哪几种?分别有何特点?
3.
短任务优先和优先级调度是否是同一种调度,为什么?
4.
如果想让某个进程获得
50%
的运行机会,请问应该使用哪一种调度策略?
5.
假定有
A
、
B
、
C 3
个进程,
A
、
B
均是纯计算进程,分别需要使用
CPU
计算
50
毫秒和
100
毫秒,而
C
每计算
1 毫秒后进行9
毫秒的输入输出操作,并这样重复
10
次。
a
)按顺序
C
、
A
、
B
几乎同时到达系统,给出
FCFS
的调度情况并计算系统响应时间。
b
)按顺序
B
、
A
、
C
几乎同时到达系统,给出
FCFS
的调度情况并计算系统响应时间。如果使用时间片轮转,情况又如何?这里假设时间片大小为10
毫秒。
6.
仔细讨论保障调度和时间片轮转调度的异同点。它们的根本区别是什么?
7.
优先级倒挂是怎么回事?它有什么危害?
8.
请分析讨论解决优先级倒挂的
3
种办法,哪一种的优势最明显。
9.
请从人类的中庸之道分析讨论现代商用操作系统所采取的混合调度策略。
10.
试阐述适度性在进程调度中的作用,并举例予以说明。
11.
调研某一商业操作系统的进程调度策略,它与本章阐述的调度策略有何异同?
12.
如果一个进程在最后一个
CPU
任务结束后有一个很长的
I/O
操作,则在计算
CPU
响应时间的时候是否需要计入该I/O
操作的耗时?请说明你的理由。
13.
假如时间片轮转的时间片的大小是
10
毫秒,进程
A
在
1
毫秒的时候阻塞或者结束,进程
B
接着用该时间片,则进程B
拥有的是
9
毫秒的时间片,还是
10
毫秒?为什么?
14.
如果一个任务因为
I/O
操作阻塞了,其恢复后需要排到队尾等待吗?
1.进程调度追求的目标是什么?
-
进程调度追求的目标主要包括以下几点:
- 公平性:希望每个进程都能够公平地获得CPU资源,避免出现某些进程一直占用CPU而导致其他进程无法运行的情况。
- 效率:追求高效利用CPU资源,使得系统能够尽可能多地完成任务,提高整体的吞吐量。
- 响应时间:希望能够尽快响应用户的操作或请求,减少用户的等待时间,提供良好的用户体验。
- 优先级:根据进程的优先级来进行调度,确保高优先级进程能够得到更多的CPU时间,满足紧急任务的需求。
2.程序使用CPU的模式有哪几种?分别有何特点?
-
程序使用CPU的模式包括以下几种:
- 用户态(User Mode):程序在用户态下运行,只能访问受限的资源,无法直接操作系统的核心功能。这种模式下,程序运行稳定,但对系统资源有一定限制。
- 内核态(Kernel Mode):程序在内核态下运行,可以直接访问系统的核心功能和资源,具有更高的权限和更广泛的控制能力。这种模式下,程序可以执行特权操作,但需要小心管理,以确保系统的安全性和稳定性。
3.短任务优先和优先级调度是否是同一种调度,为什么?
短任务优先调度和优先级调度不是同一种调度策略。短任务优先调度是一种以任务执行时间短为优先考虑因素的调度策略,即优先选择执行时间较短的任务,以便更快地完成任务。而优先级调度是根据进程的优先级来确定执行顺序的调度策略,优先级高的进程会先被执行。两者的侧重点和考虑因素不同,尽管短任务通常具有较高的优先级,但并不代表它们是完全相同的调度策略。
4.如果想让某个进程获得50%的运行机会,请问应该使用哪一种调度策略?
如果想让某个进程获得50%的运行机会,可以使用抢占式调度策略,并设置该进程的优先级较高。在抢占式调度中,当有更高优先级的进程到达或就绪时,会抢占当前正在执行的进程,使得高优先级进程能够获得更多的CPU时间。通过将该进程的优先级调整为最高,并确保其他进程的优先级较低,可以实现该进程获得50%的运行机会。
5.假定有A、B、C 3个进程,A、B均是纯计算进程,分别需要使用CPU计算50毫秒和100毫秒,而C每计算1 毫秒后进行9毫秒的输入输出操作,并这样重复10次。
-
FCFS调度情况:
- C进程开始执行,执行1毫秒后进行输入输出操作,然后等待9毫秒。
- A进程开始执行,执行50毫秒后完成。
- B进程开始执行,执行100毫秒后完成。
- 系统响应时间为101毫秒(C进程执行时间+等待时间)。 b) FCFS调度情况:
- B进程开始执行,执行100毫秒后完成。
- A进程开始执行,执行50毫秒后完成。
- C进程开始执行,执行1毫秒后进行输入输出操作,然后等待9毫秒。
- 系统响应时间为151毫秒(B进程执行时间+等待时间)。 如果使用时间片轮转调度,时间片大小为10毫秒:
- 每个进程按顺序执行一个时间片(10毫秒),然后轮转到下一个进程,直到所有进程完成。
- C进程需要执行10个时间片才能完成,总计需要100毫秒。
- A进程需要执行5个时间片,总计需要50毫秒。
- B进程需要执行10个时间片,总计需要100毫秒。
- 系统响应时间为10毫秒(第一个时间片的执行时间)。
-
保障调度(Guaranteed Scheduling)和时间片轮转调度(Round Robin Scheduling)都是常见的调度策略,它们有一些异同点:
- 相同点:
- 都是多道程序设计中常用的调度策略。
- 都是为了合理分配和利用CPU资源,提高系统的效率和响应性能。
- 都考虑了公平性,尽量保证每个进程都能获得一定的CPU时间。
- 不同点:
- 保障调度是一种静态优先级调度策略,根据进程的重要性和优先级来确定调度顺序。优先级高的进程先执行,而不考虑时间片的概念。
- 时间片轮转调度是一种动态优先级调度策略,每个进程被分配一个时间片(固定的执行时间),当时间片用完后,该进程被挂起,轮转到下一个进程执行。
- 保障调度注重公平性和任务优先级,适用于对任务执行顺序和优先级要求较高的场景,例如实时系统。
- 时间片轮转调度注重轮转和公平分配,适用于对任务响应时间和资源利用率要求较高的场景,例如多用户系统。
- 相同点:
它们的根本区别在于调度顺序的确定方式,保障调度根据静态的优先级确定调度顺序,而时间片轮转调度按照动态的时间片进行轮转执行。