2013-2014学年第一学期操作系统思考题
第一章 操作系统概论
1、 在计算机系统中,操作系统有哪两个重要作用?
2、 根据操作系统的地位和作用,请给出操作系统的非形式化的定义。 3、 操作系统引入的目标是什么? 4、 什么叫做“假脱机”?
5、 多核系统主要需要解决哪两个问题?
6、 操作系统有哪四个特征?其中哪两个是基本特征? 7、 程序的并发性具体体现在哪三个方面? 8、 程序并发和并行有什么区别? 9、 何谓资源共享性? 10、 在计算机系统中,为什么会呈现出程序运行的异步性? 11、 何谓虚拟?操作系统如何体现其虚拟性? 12、 多道批处理系统具有哪两个特性? 13、 分时操作系统具有哪三个主要特征? 14、 实时操作系统应具有哪两个特征? 15、 分布式操作系统出了网络操作系统的特征外,还具有哪些特征? 16、 从透明性和资源共享两个方面说明网络操作系统与分布式操作系统的差异。 17、 操作系统应具备哪些基本功能? 18、 为什么说操作系统是中断驱动的? 19、 中断与程序并发之间有什么关系?操作系统何时获得控制权? 20、 系统栈有哪些作用?根据用途说明堆与栈的差别。 21、 在操作系统中把处理机划分成哪两个状态?它们分别可以执行哪类指令?两个状态如
何转换? 22、 操作系统提供给用户程序什么接口? 23、
第二章 进程、线程和作业
1、 为什么要引入多道程序设计?
2、 引入多道程序设计需要解决哪三个问题? 3、 什么叫进程?
4、 进程有哪三个基本状态?并说明这三个基本状态是何时转换的? 5、 什么是PCB?
6、 一个进程由哪两部分组成? 7、 什么叫做进程映像? 8、 什么叫做系统开销?
9、 从操作系统角度,可以把进程划分成哪两类? 10、 什么叫做守护进程? 11、 进程具有哪些特征?
12、 下面程序运行过程中,操作系统共创建几个进程:(实验一)
main(){ fork(); fork();
fork(); }
13、 进程和程序有什么联系?进程和程序有哪些差异? 14、 什么是线程?为什么要引入线程? 15、 用图形表示进程与线程的区别。 16、 从实现角度看,有哪两类基本线程?
17、 从下面四个方面阐述用户级别线程和核心级别线程的差别、优缺点:
(1)创建速度 (2)切换速度 (3)并行性 (4)TCB存储位置
18、 用户级别线程在处理机什么状态实现的?核心级别线程在处理机什么状态下实现
的?
19、 什么叫做作业?
20、 分析作业、进程、线程三者的关系。 21、 请解析命令“ls -il”给出的信息。(实验一)
22、 在Linux系统中,如何区分普通文件、目录文件、块设备文件、字符设备文件? 23、 在Linux系统中,如何区分硬链接文件和符号链接文件? 24、 熟练掌握用命令“chmod”修改各组用户对文件的操作权限。(实验一) 25、 掌握命令“ps -ax”查看Linux进程,解析该命令给出的信息,以及终止进程的操作。 26、 掌握用命令“gcc”编译链接一个程序。(实验一) 27、 请说明管道操作“|”、输入重定向“<”、输出重定向“>”和“>>”的区别和用法。 28、 请说明在shell中使用单引号、双引号、反撇号的用法。
第三章 中断与处理机调度
1、 什么叫做中断?
2、 中断装置发现并响应中断有哪些基本步骤? 3、 中断可以分为哪两大类?请举例说明。 4、 什么叫做中断向量?
5、 为什么说中断向量的位置是由硬件决定的、其内容是系统初始化时确定的? 6、 什么叫做中断续元?用户栈和系统栈各自有什么用途?
7、 根据程序错误中断的性质,有哪两种处理策略?可以哪些类型的程序性错误中断,中
断续元会起作用?
8、 处理机调度需要解决哪三个问题? 9、 什么叫做CPU阵发期? 10、 什么叫做周转时间?什么叫做(平均)带权周转时间? 11、 什么叫做响应时间? 12、 掌握FCFS、SJF、SRTN、HRN、HPF、RR调度算法,以及调度指标的计算。 13、 什么叫做剥夺式调度?什么叫做非剥夺式调度? 14、 反馈排队调度算法有哪些特点? 15、 什么叫做“交换”?交换的目标是什么? 16、 为什么要实施中级调度? 17、 什么是低级调度、中级调度、高级调度?各自的职能是什么? 18、 什么是实时调度?按发生的规律分,有哪两类实时任务? 19、 掌握EDF和RMS两个实时调度算法? 20、 完成P79-80题31、32、35。
第四章 互斥、同步与通信
1、 程序顺序执行有哪些特性?
2、 程序并发执行有哪些特性?
3、 什么是Bernstein(伯恩斯坦)条件?并加以说明。
4、 什么叫做与时间有关的错误?有时间有关的错误产生的原因是什么? 5、 什么叫做临界区?什么叫做临界资源?
6、 什么叫做进程互斥?请写出进程互斥的基本框架。
7、 实现进程互斥,临界区管理应该满足哪三个正确性原则?
8、 请分析Dekker互斥算法、Peterson互斥算法、Lamport面包店算法各自的互斥性、进
展性和有限等待性。
9、 什么叫做忙式等待?其与阻塞式等待有哪些区别? 10、 什么叫做原子指令?
11、 请写出“测试与设置”原子指令?并给出利用“测试与设置”指令实现互斥的算法。 12、 请写出“交换”的原子指令?给出利用“交换”指令实现互斥的算法。 13、 什么叫做合作进程? 14、 什么叫做进程同步?
15、 请给出信号量类型的定义。 16、 信号量变量的初值有什么要求? 17、 什么叫做原语?
18、 分别写出对信号量进行P操作和V操作的操作原语。 19、 请给出信号量元素s.value与s.queue之间的关系。 20、 说出初值分别是0、1、n(>1的值)时信号量的作用。
21、 某图书馆阅览室有50个座位。进入阅览室的读者需要在登记簿上登记,登记后,如
果有空座位,安排到对应位置上;如果没有空座位,要求在入口等待。当读者离开阅览室时,进行注销登记。此时,如果有读者等待,唤醒等待读者进行阅览室。使用信号量、PV操作实现对阅览室进行管理。 【参考答案】 公共变量:
enum seat[50];(free,used) semaphore S;(50) semaphore mutex;(1) 进入登记控制: int Enter(){ int i; P(S); P(mutex);
for(i=0;i<50;i++)
if(seat[i]==free) break; seat[i]=used; V(mutex); return i; }
离开注销登记控制: void Leave(int j){ P(mutex); seat[j]=free;
V(mutex); V(S); }
每个读者的活动: void Reader(){ int k; k=enter(); 阅读; Leave(k); }
22、 某公共汽车上司机、售票员、乘客的活动如下:
售票员活动: 乘客活动: 司机活动: Conductor(){ Customer(){ Driver(){ do{ 乘客上车; do{ 关车门; 乘坐; 启动车辆; 售票; 乘客下车; 正常行车; }; 开车门; 到站停车; }while(1); }while(1); } } 为安全起见,要求:
(1) 必须乘客全部上车,才能关闭车门;假设车门只允许一个乘客通过,且有自动
判别第一个下车乘客和最后一个上车乘客的装置,且遵守先下、后上原则;
(2) 关闭车门,才能启动汽车; (3) 车辆到站停稳,才能打开车门。
初始时,车辆停靠在站点上,车门是打开着。
请用信号量与PV操作实现对司机、售票员和乘客之间的同步。 【参考答案】
semaphore dc1,dc2;(0,0) semaphore cc1,cc2;(1,0) semaphore metux;(1); 乘客活动: 司机活动: 售票员活动: Customer(){ Driver(){ Conductor(){ P(mutex); do{ do{ if(是第一个下车乘客?) P(cc1); P(dc1); P(cc2); 乘客上车; 启动车辆; 关车门; V(mutex); V(dc1) 正常行车; 乘坐; 售票; 到站停车; P(mutex); P(dc2); V(dc2); 乘客下车; }while(1); 开车门; if(最后一个上车乘客?)V(cc2); } V(cc1); V(mutex); }while(1); }; }
23、 在Linux操作系统中,sem_wait(sem_t *s) 和sem_post(sem_t *s)分别表示对信号量的
什么操作?
24、 假设有两个进程,P1和P2,其中P1有一个活动act1、P2有一个活动act2;要求act1
执行完成后才能执行act2,用信号量“semaphore S;”实现对两个活动进行控制。请给出其实现的一般规则。
25、 P1和P2为两个同步进程. 要求P2完成动作B后P1才能执行动作A. 请根据要求
填写S的初值、P操作和V操作。 semaphore S; (initial value_(1)_) P1:_(2)_动作AP2:动作B_(3)_
26、 请完成下面生产者-消费者程序。
itemtype B[n];//shared variables(n个空箱子)
semaphore S1,S2,mutex; (初值: S1.value=_n_; S2.value=__0__; mutex.value=__1_) int in,out;//shared variables void producer( ){ while(1){
produceitem(&item); _P(S1)__ P(mutex); B[in]:= item; in:=(in+1) % k;
_V(mutex)________ V(S2); } }
void consumer( ){ while(1){ P(s2); P(mutex); x:=B[out];
out:=(out+1) % k; V(mutex); __V(S1)__ consume x; } }
27、 请完成如下R-W问题的改进算法。