跳到主要内容

2018-2019学年上学期期末

2018-2019学年上学期期末试卷(A)(含答案)

一、单项选择题(30分,每题3分)

  1. 操作系统的目标是( )

    A. 执行用户程序更容易

    B. 使计算机系统更便于使用

    C. 计算机硬件利用效率更高

    D. 以上均是

    答案:

    D


  2. 系统上电后,下面程序中哪个最先运行?( )

    A. 内核程序

    B. 引导程序

    C. 登录程序

    D. 自启动程序

    答案:

    B


  3. 下面那项不在 PCB 中?( )

    A. 进程状态

    B. 进程号

    C. 进程名

    D. 打开文件列表

    答案:

    C


  4. 降低进程优先级的合理时机是( )。

    A. 进程的时间片用完

    B. 进程刚完成 I/O,进入就绪队列

    C. 进程长期处于就绪队列中

    D. 进程从就绪状态转为运行态

    答案:

    A


  5. 同一个进程的不同线程,具有独立的( )

    A. 文件

    B. 栈

    C. 数据段

    D. 代码段

    答案:

    B


  6. 一般而言,下列哪种调度算法响应时间最短?( )

    A. FCFS

    B. SJF

    C. SRTF

    D. RR

    答案:

    D


  7. 下面哪个 bit 不在页表里?( )

    A. Mode bit

    B. valid-invalid bit

    C. Dirty bit

    D. reference bit

    答案:

    A


  8. 下面哪个控制块只存在于内存中?( )

    A. PCB

    B. FCB

    C. BCB

    D. VCB

    答案:

    A


  9. 菊花链(daisy chain)是一种( )

    A. 总线结构

    B. 星型结构

    C. 并行结构

    D. 分布式结构

    答案:

    A


  10. 以下哪种存储设备通常只支持顺序访问?( )

    A. 软盘

    B. 固态硬盘

    C. 磁带

    D. 光盘

    答案:

    C


二、判断题(20分,每题2分,请划√或×)

  1. 现代操作系统都是中断驱动的。陷阱、异常、轮询是软中断的几种形式,通过类似中断处理的方式进行处理。( )

    答案:

    ×。错在“轮询”。


  2. 系统调用是操作系统提供的服务的编程接口。( )

    答案:


  3. 微内核架构中 CPU 调度、内存管理、文件系统等模块运行在内核模式。( )

    答案:

    X。错在“文件系统”。


  4. 磁盘上的文件是以页面为单位读写的。( )

    答案:

    ×。错在“页面”。


  5. 目录是文件的集合,是一种逻辑概念,可以用文件实现。( )

    答案:


  6. 银行家算法破坏了死锁必要条件中的“请求和保持”条件( )

    答案:

    X(预防 vs. 避免)


  7. 逻辑地址空间的容量取决于逻辑地址位数( )。

    答案:


  8. 磁盘划分扇区和磁道称为格式化。( )

    答案:

    X。错在“格式化”。


  9. 索引结构的文件物理结构适合随机访问且易于文件扩展( )。

    答案:


  10. 文件指针(fp)存在于系统的打开文件列表中( )

    答案:

    X。错在“系统的”。


三、简答题(20分,每题5分)

  1. (5分)请简述 DMA 的过程,说明为什么 DMA 对于高速 I/O 访问效率较高。

    答案:

    (过程参见英文教材第九版 P596 图 13.6,如下图,图不需要画出来)

    程序控制 I/O(PIO)时,CPU 需要介入每一次数据交换;DMA 方式时,CPU 只在数据交换开始/结束时介入,其它时候,由 DMA 控制器协调 I/O 设备和内存利用总线进行数据交换。由于此时 CPU 和 I/O 设备几乎并行,因此与 PIO 方式相比,节省了大量中断、CPU 介入时间。


  2. (5分)简要比较短程调度和长程调度。

    答案:

    P113.


  3. (5分)简要比较静态链接和动态链接。

    答案:

    P357

    Static linking -- system libraries and program code combined by the loader into the binary program image

    Dynamic linking --linking postponed until execution time

    Dynamic linking is particularly useful for libraries


  4. (5分)简要说明目录结构、FCB 及相互的关系。

    答案:

    P546


四、应用题(30分,每题10分)

  1. (10分)某页式内存管理系统中,页面大小为 4KB4KB,一次内存的访问时间是 100ns100ns,一次快表(TLB)的访问时间是 10ns10ns,处理一次缺页的平均时间为 0.1s0.1s(已含更新 TLB 和页表的时间),进程占用物理内存框数固定为 2,采用最近最少使用置换算法(LRU)和局部淘汰策略。某时刻某进程的页表内容如下表所示,此时 TLB 内容无效。

    页号框号有效位(0无效)
    00x1631
    10x1380
    20x5511

    设有逻辑地址访问序列 0x2345、0x1357、0x26AE,请问:

    依次访问上述三个逻辑地址,其物理地址各是多少?各需多少时间?(给出计算过程。)

    补充说明:地址转换时先访问 TLB,若 TLB 未命中,再访问页表(忽略访问页表之后的 TLB 更新时间)。

    答案:

    因为页大小为 4KB4KB,所以逻辑地址中的低 12 位表示页内地址,剩余高位表示页号。则用十六进制表示,低三位数字为页内地址,最高位数字为页号。

    (1)0x2345:页号为 2,页内地址为 0x345。

    先访问快表(需时 10ns10ns),

    未命中,再访问内存中的页表(100ns100ns),

    页表项中的有效位指示该页在内存,根据该页对应的框号形成**物理地址(0x551345)**再次访问内存(100ns100ns),

    【共计】10ns+100ns2=210ns10ns+100ns*2=210ns。(3分)

    (2)0x1357:页号为 1,页内地址为 0x357。

    先访问快表 10ns10ns

    未命中,再访问内存中的页表 100ns100ns

    页表项中的有效位指示页 1 不在内存,访问时发生缺页。目前页 0、页 2 在内存,根据 LRU 置换算法和局部淘汰策略,将页 0 换出页 1 换入,因此页 1 对应的框号为 0x163,则逻辑地址 0x1357 的物理地址为 0x163357。处理缺页 0.1s=108ns0.1s=10^8ns

    再次访问快表 10ns10ns

    命中,根据该页对应的框号形成物理地址再次访问内存 100ns100ns

    【共计】10ns+100ns+108ns+100ns+10ns108ns10ns+100ns+10^8ns+100ns+10ns \approx 10^8ns。(4分)

    (3)0x26AE:页号为 2,页内地址为 6AEH。

    由于访问 0x2345 时已将页 2 的表项写入 TLB,因此访问快表 10ns10ns

    命中,根据该页对应的框号形成**物理地址(0x5516AE)**访问内存 100ns100ns

    【共计】共计 10ns+100ns=110ns10ns+100ns=110ns。(3分)


  2. (10分)某学校计算机教室有 50 台计算机,全天开放供学生自主上机实验,坐满后须在教室外排队等候。第一个进教室的学生需要开灯,最后一个出教室的需要关灯。请用信号量的方法,使用 waitsignal 等操作来描述学生(Student)进程的并发过程。须包含对信号量的定义及其初值的设置。

    答案:
    int stu_count=0; //学生人数
    Semaphore mutex=1; //互斥量,对临界段进行操作,处理stu_count及开关灯
    Semaphore sem_seats=50; //同步信号量,剩余座位,初值为50,负数表示等候人数

    Student()
    {
    do {
    wait(mutex);
    wait(sem_seats);
    stu_count++;
    if (stu_count == 1)
    {
    /* 开灯 */
    }
    signal(mutex);

    /* 进教室自习 */
    wait(mutex);
    stu_count--;
    if (stu_count == 0)
    {
    /* 关灯 */
    }
    signal(sem_seats);
    signal(mutex);
    } while (true);
    }

  3. (10分)假定磁盘的磁臂现在处于第 10 柱面,由外向内运动(柱面号由小到大)。现有一组磁盘请求以 60、8、15、4、20、40 柱面的次序到达磁盘驱动器,磁臂移动一个柱面需要 6ms6ms,请完成下面的问题:

    (1)访问磁盘所需的时间由哪几部分构成?(3分)

    (2)采用 SSTF 算法和 SCAN 算法进行磁盘调度,请分别给出柱面访问序列,计算平均寻道时间。(4分)

    (3)如果把磁盘换成固态盘,用什么算法比较合适,说明理由。(3分))

    答案:

    磁盘访问时间由:寻道时间、旋转延迟时间和数据传输时间三部分构成。(3分)

    SSTF算法:(2分)

    柱面访问序列为:8、4、15、20、40、60

    平均寻道时间为:(2+4+5+5+20+20)×6/6=56ms(2+4+5+5+20+20)\times6/6=56ms

    SCAN算法:(2分)

    柱面访问序列为:15、20、40、60、8、4

    平均寻道时间为:(5+5+20+20+52+4)×6/6=106ms(5+5+20+20+52+4)\times6/6=106ms

    (3)用 FCFS 即可。固态盘没有寻道时间、旋转延迟时间,支持随机访问,按先来先服务即可。(3分)