文档库 最新最全的文档下载
当前位置:文档库 › 2004_2005minux

2004_2005minux

2004_2005minux
2004_2005minux

南开大学信息技术科学学院考试卷2004-2005年度第一学期期末操作系统A卷(共7页)

专业▁▁▁▁▁姓名▁▁▁▁▁▁学号▁▁▁▁▁▁成绩▁▁▁▁▁

第一部分:基本知识与概念(共25分)

一、名词解释(共8分,每题2分)

1、竞争条件与临界区

2、DMA

3、系统颠簸

4、文件与目录

B:

1、进程

2、内存紧缩

3、页面调度

4、文件与目录

二.判断题(共5分,每题0.5分)

1. 操作系统的存储器管理部分负责对进程进行调度。()

2. 设计实时操作系统时,应首先考虑系统可靠性和灵活性。()

3. 进程是指令的集合。()

4. P、V操作(Up、Down操作)可以解决一切互斥问题。()

5. 信箱通信是一种进程间直接通信方式。()

6. 银行家算法是一种死锁避免算法。()

7. 当进程数大于资源数时,一定会产生死锁。()

8. 采用虚拟存储器技术的首要目的是为了实现存储保护。()

9. 在操作系统中,用户使用I/O设备时,通常采用物理设备名。()

10. 顺序式文件结构不利于文件长度的动态增长。()

三.单项选择题(共12分,每题2分)

1. 进程地址空间中逻辑地址变成内存中物理地址的过程叫做______。

A. 重定位

B. 物理化

C. 逻辑化

D. 加载

2. 进程间的同步是指进程间在逻辑上的相互______关系。

A. 联接

B. 制约

C. 继续

D. 调用

3. 中断发生后,应保存______。

A. 缓冲区指针

B. 关键寄存器内容

C. 被中断的程序

D. 页表

4. 以下叙述正确的是______。

A 在现代计算机中,只有I/O设备才是有效的中断源

B 在中断处理过程中必须屏蔽所有中断

C 同一用户使用的I/O设备也可能并行工作

D Spooling是脱机I/O系统

5. 某系统中有3个并发进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是______个。

A. 9

B. 10

C. 11

D. 12

6. 常用的文件存取方法有两种:顺序存取和_____存取。

A. 流式

B. 串联

C. 索引

D. 随机

第二部分:操作系统结构与原理(共40分)

简答题(共28分,每题7分)

1.操作系统以进程为单位分配各种资源,进程调度是操作系统必须完成的重要任务,请简要回答,操作系统有哪两种进程调度方式?并举出至少4种不同类型的进程调度算法。

2. I/O设备管理是操作系统的主要功能之一,请简要回答,操作系统设计种,I/O软件的主要功能目标和主要层次。

3. 造成进程死锁的条件有哪些?处理死锁的主要策略有哪些?

4. 请列出最少4种用于分页存储管理的页面替换算法。

B:

1. 一个好的进程调度算法应当考虑那几方面的因素?

2. I/O设备管理是操作系统的主要功能之一,请简要回答,操作系统设计种,I/O软件的主要功能目标和主要层次。

3. 一个32位地址的计算机使用两级页表,虚地址被分为8位的顶级页表域;14位的二级页表域和偏移,请问,页面长度是多少?在地址空间中,共存在多少页?

4. 请列出最少4种用于分页存储管理的页面替换算法。

论述题(共12分)

五、操作系统被引导后,经历了一个复杂的初始化过程,其中包括内存初始化、中断初始化以及系统任务初始化。请简要论述中断处理从启动到就绪(等待各类中断)的过程,简要说明存在哪些数据结构、需要进行哪些处理步骤。

第三部分:操作系统设计与实现(35分)

六、若在操作系统的就绪进程队列中等待运行的共有三个进程1、2、3,已知它们各自的运行时间为a、b、c,且满足关系a < b < c。请证明采用最短作业优先调度算法能够获得最小平均周转时间。(10分)

七、试论述分页存储管理和分段存储管理技术的主要区别。(10分)

B:

七、针对一个页式存储管理系统,假设向用户提供的逻辑地址空间最大为16页,每页2048字节,内存共有8个存储块,试问逻辑地址至少应为多少位?内存空间有多大?。(10分)

八、请阅读Minix操作系统源代码片断,并回答问题。(15分)

问题1:请简述Minix操作系统针对消息发送的主要处理步骤。

问题2:请简述Minix操作系统针对消息接收的主要处理步骤

问题3:请在代码片断中添加注释

PRIVATE int mini_send(caller_ptr, dest, m_ptr)

{

/* Send a message from 'caller_ptr' to 'dest'. If 'dest' is blocked waiting

* for this message, copy the message to it and unblock 'dest'. If 'dest' is

* not waiting at all, or is waiting for another source, queue 'caller_ptr'.

*/

register struct proc *dest_ptr, *next_ptr;

dest_ptr = proc_addr(dest); /* pointer to destination's proc entry */

......

Ln7076 if (dest_ptr->p_flags & SENDING) {

next_ptr = proc_addr(dest_ptr->p_sendto);

while (TRUE) {

if (next_ptr == caller_ptr) return(ELOCKED);

if (next_ptr->p_flags & SENDING)

next_ptr = proc_addr(next_ptr->p_sendto);

else

break;

}

Ln7085 }

/*添加注释处*/

请简要说明,在发送消息时,为什么要执行Ln7076-Ln7085之间的条件检查.........

return(OK);

}

相关文档