操作系统(谌卫军-王浩娟)课后习题参考答案

更新时间:2023-05-08 19:38:31 阅读: 评论:0

第1章 概述
一、单项选择题
D、A、B、A、C、D、C、A、C、B
二、填空题
Windows、linux
用户态、内核态
PSW
中断
同步中断
系统调用
I/O设备管理、文件系统
实时性、可靠性

第2章 进程管理
一、单项选择题
D、D、C、D、B、A、B、D、C、C
B、B、B、D、B、A、B、A
二、填空题
PCB
运行、就像、阻塞
4、5
时间片用完
进程管理、存储管理
PCB
进程
CPU寄存器的值、栈
竞争状态
运行、就绪
I/O繁忙
SJF
FCFS
短进程、I/O繁忙进程
三、简答题
1、运行状态、阻塞状态、就绪状态
  运行->阻塞:如进行I/O操作、进程间同步关系;
  运行->就绪:时间片用完、被高优先级进程所打断;
  阻塞->就绪:等待的I/O操作、信号量等事件发生;
  就绪->运行:调度程序选中该进程运行;
2、
  (1)进程是资源分配单位,拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈;
  (2)线程能减少并发执行的时间和空间开销,包括创建时间、终止时间、切换时间;
  (3)线程之间可以共享同一个地址空间,可以进行不通过内核的通信,而进程不行;
  (4)线程 = 轻量级进程;
  (5)线程是CPU调度单位;
3、
  (1)当一个新的进程被创建时;
  (2)当一个进程运行完毕时;
  (3)当一个进程由于I/O、信号量或其他的某个原因被阻塞时;
  (4)当一个I/O中断发生时,表明某个I/O操作已经完成,而等待该I/O操作的进程转入就绪状态;
  (5)在分时系统中,当一个进程的时间片用完时;
4、
  RR算法的基本思路:
  (1)将所有的就绪进程按照FCFS原则,排成一个队列;
  (2)每次调度时将处理器分派给队首进程,让其执行一小段CPU时间;
  (3)在一个时间片结束时,如果进程还没有执行完的话,将发生时钟中断,在时钟中断中,进程调度程序将暂停当前进程的执行,并将其送到就绪队列的末尾,然后执行当前的队首进程;
  (4)如果进程在它的时间片用完之前就已结束或被阻塞,那么立即让出CPU。
  RR算法的主要缺点:时间片q的大小难以确定。
5、
(1)时间片用完,高优先级进程就绪
(2)不会发生切换
(3)PCB
(4)不需要
(5)不能
四、应用题
1、
(1)CPU空闲:100ms~150ms
(2)A无等待,B有等待,180ms~200ms
2、
(1)Job1从投入到运行完成需要110ms,Job2从投入到运行完成需要90ms,Job3从投入到运行完成需要110ms:
(2)CPU的利用率:(110-30)/110 = 72.7%;
(3)设备I1的利用率:(110-30)/110 = 72.7%,设备I2的利用率:(110-20)/110 = 81.8%。
3、
(1)这种机制不能实现资源的互斥访问
考虑如下的情形:
  (a)初始化的时候,flag数组的两个元素值均为FALSE
  (b)线程0先执行,在执行while循环语句的时候,由于flag[1]=FALSE,所以顺利结束,不会被卡住。假设这个时候来了一个时钟中断,打断它的运行;
  (c)线程1去执行,在执行while循环语句的时候,由于flag[0]=FALSE,所以顺利结束,不会被卡住,然后就进入了临界区;
  (d)后来当线程0再执行的时候,也进入了临界区,这样就同时有两个线程在临界区
(2)可能会出现死锁
考虑如下的情形:
  (a)初始化的时候,flag数组的两个元素值均为FALSE
  (b)线程0先执行,flag[0]=TRUE,假设这个时候来了一个时钟中断,打断它的运行;
  (c)线程1去执行,flag[1]=TRUE,在执行while循环语句的时候,由于flag[0]=TRUE,所以在这个地方被卡住了,直到时间片用完;
  (d)线程0再执行的时候,由于flag[1]=TRUE,它也在while循环语句的地方被卡住了,这样,这两个线程都无法执行下去,从而死锁。
4、
  (1)最后打印了3个字符'D'
  (2)最少可能打印了0个字符'A',例如,P1连续执行了3次,然后P3连续执行了3次。P2一次也没有执行。
  (3)不可能,因为当打印出前面的“CABAB”的时候,信号量R的值等于1,此时,不可能连续打印两个D。
  (4)可能。相当于进程P2在打印完第二个A的时候被中断了。
5、
(1)信号量的定义:
int boys_waiting = 0, girls_waiting = 0, using = 0;
Semaphore S_mutex = 1, S_boys = 0, S_girls = 0;
(2)
void boy_wants_to_u_bathroom()
{
    P(S_mutex);
    if((using == 0) && (girls_waiting == 0))
    {
        using = 1;
        V(S_mutex);
    }
    el
    {
        boys_waiting ++;
        V(S_mutex);
        P(S_boys);
    }
}
(3)
void boy_leaves_bathroom()
{
    P(S_mutex);
    if(girls_waiting > 0)
    {
        girls_waiting --;
        V(S_girls);
    }
    el if(boys_waiting > 0)
    {
        boys_waiting --;
        V(S_boys);

本文发布于:2023-05-08 19:38:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/101006.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:进程   执行   时间   运行   线程   时候   就绪   资源
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图