北京航空航天大学计算机学院-2020春操作系统课程
以下题目作者为北航计算机学院操作系统课程组,客观题答案由课程组给出,解析及主观题答案均为博主原创,水平有限,如有错误敬请批评指正。
A. 用户级线程在切换时也需要陷入内核
B. 内核级线程切换比用户级线程切换效率高
C. 不同内核级线程可以被调度到不同处理机上执行
D. 内核级线程发生阻塞时,与其在同一进程中的其他内核级线程也将被阻塞
答:C
用户级线程是由库函数实现的,在切换时不需要陷入内核,消耗较小,A错误。内核级线程涉及到了真正的多处理机分配,在切换时相对用户级线程的消耗较大,B错误。不同内核级线程是可以被调度到不同处理机上的,是一种真正的程序并行机制,C正确。内核级线程发生阻塞时,同一进程的其他内核级线程不会被阻塞,这是内核级线程的优势,D错误。
A. PThreads API是一个Unix下的线程实现
B. PThread_yield的作用是终止当前线程执行并退出
C. PThreads API可为编程人员提供多线程编程的可移植性
D. PThreads API仅支持创建用户级线程
答:C
PThread API在类Unix系统很常见,但它不是仅在Unix下的线程实现,而是已经成为了一种通用标准(IEEE 1003.1c),A错误。Pthread_yield的作用是释放CPU给其他线程,但并不一定是终止当前线程并退出,有可能是等待IO等操作,B错误。PThread API提供了多线程良好的可移植性,只需要操作系统支持其库函数即可,C正确。PThread API支持创建用户级线程和内核级线程,D错误。
A. 引用全局变量的函数一定不是线程安全的
B. 引用static变量的函数可以是线程安全的
C. 线程安全的函数一定是可重入的
D. 可重入的函数一定是线程安全的
答:B
多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。线程安全的概念并不与是否调用全局变量和静态变量绑定,A错误,B正确。线程安全和可重入的概念也不是相互绑定的,线程安全不一定可重入,而可重入也不一定线程安全,C、D错误。
A. 在Solaris中,一个轻量级进程可以和0个或1个内核线程绑定
B. 在Linux下clone系统调用主要用来创建线程
C. 在Linux下fork系统调用也可以接收克隆标志,从而用于创建线程
D. 在Linux下当CLONE_FS克隆标志被指定时,clone出来的进程与父进程共享打开的文件
答:B
Solaris中的轻量级进程是将多个用户级线程统一管理,绑定给内核级线程的进行调度的,一个轻量级进程必须绑定至少一个内核级线程,否则无法调度,A错误。Linux下clone系统调用可以接收克隆标志创建线程,B正确。fork系统调用不指定克隆标志,C错误。CLONE_FS被指定时,父子进程共享的是文件系统,CLONE_FILES指定父子进程共享打开的文件,D错误。
A. 高级调度
B. 中级调度
C. 低级调度
答:B
高级调度:又称为“宏观调度”、“作业调度”。从用户工作流程的角度,一次提交的若干个作业,对多个作业进行调度。时间上通常是分钟、小时或天。内外存交换又称为“中级调度”,指令和数据必须在内存里才能被CPU直接访问,中级调度从存储器资源的角度,将进程的部分或全部换出到外存上,将当前所需部分换入到内存。低级调度:又称为“微观调度”、“进程或线程调度”。从CPU资源的角度,执行的单位,时间上通常是毫秒。因为执行频繁,要求在实现时达到高效率。
A. 进程被创建时
B. 进程结束时
C. 进程被阻塞时
D. 进程主动让出CPU时
E. 时钟中断发生时
F. 进程执行了除以0的指令时
G. 进程进行系统调用时
答:A、B、C、D、E、F、G
新进程创建时,应当决定执行新进程还是继续执行父进程,A正确。进程结束时、被阻塞时、主动放弃CPU时、分时系统时钟中断发生时间片已到时,当前进程释放处理机,应决定哪一进程接替它执行,B、C、D、E正确。进程执行除0会陷入异常,进程执行系统调用会陷入内核,只要操作系统取得了对CPU的控制,就有需要进行调度,F、G正确。
A. 系统吞吐量是系统中作业平均周转时间的倒数
B. 单处理机系统的吞吐量是系统中作业平均周转时间的倒数
C. 单处理机系统,在不可抢夺调度机制下,其吞吐量是系统中作业平均周转时间的倒数
D. 单处理机系统,在不可抢夺调度机制下,如果处理机被100%利用,其吞吐量是系统中作业平均周转时间的倒数
E. 以上说法均不正确
答:E
周转时间是作业从提交到完成所经历的所有时间总和,吞吐量是系统在单位时间完成的作业数。在上述选项中,从前至后依次增添条件,条件最严苛的D项,单处理机不抢占,处理机100%利用,其吞吐量也不一定等于平均周转时间的倒数,这是因为不同作业没有处理机的并行,但有可能有IO或其他外设操作的并行,倒数关系不能成立,其他选项情况下更是无法成立,选择E。
A. 进程退出
B. 进程等待IO
C. 进程被调度程序抢占
D. 分配给进程的时间片已到
答:A、B、C、D
进程退出、进程等待IO、进程被调度程序抢占和分配给进程的时间片已到,都会导致进程停止占用CPU。
A. FCFS调度算法对于长作业有利
B. SJF调度算法会引起长作业被“饿死”的现象
C. SRTF调度算法中正在执行的作业会因为新作业到达而被中断执行
D. HRRF调度算法中,一个作业要求运行的时间越长,其响应比越大
答:D
FCFS先来先服务是有利于长作业执行的,这是因为它是非抢占的,长作业一旦占据CPU就会执行到结束,不利于短作业,A正确。SJF短作业优先是会让短作业先执行,长作业会由于源源不断到来的短作业而长时间得不到执行,发生“饿死”现象,B正确。SRTF最短剩余时间是一种抢占式算法,当前作业有可能被新作业到达中断执行,C正确。HRRF最高相应比优先,是将最短剩余时间做了优化,长作业如果等待时间过长,也会提高优先级,而并不是其运行时间越长相应比越大,D错误。
作业号 | 提交时刻 | 运行时间/h |
---|---|---|
1 | 10 : 00 | 1 |
2 | 10 : 10 | 1 |
3 | 10 : 25 | 0.5 |
4 | 11 : 00 | 0.25 |
答:1.8125
SJF算法在上述四个作业的运行情况如下:
作业1在10 : 00到来,队列中只有一个作业,开始执行,在11 : 00执行结束,作业1等待时间0,执行时间1小时,周转时间1小时,带权周转时间1。
作业2、3、4均在作业1执行期间到来,依照短作业优先原则,作业4在11 : 00开始执行,11 : 15执行结束,作业4等待时间0,执行时间0.25小时,周转时间0.25小时,带权周转时间1。
11 : 15,作业4执行结束后队列中还有作业2和作业3,依照短作业优先原则,作业3开始执行,11 : 45执行结束。作业3等待时间50分钟(5/6小时),执行时间0.5小时,周转时间80分钟(4/3小时),带权周转时间8/3。
11 : 45,队列中只剩作业2,执行1小时后12 : 45结束。作业2等待时间95分钟(19/12小时),执行时间1小时,周转时间155分钟(31/12小时),带权周转时间31/12小时。
系统平均带权周转时间:(1 + 1 + 8/3 + 31/12) / 4 = 1.8125.