1、1. 设计现代 OS 的主要目标是什么?答:(1)方便性。配置操作系统后可使计算机系统更容易使用。(2)有效性。配置操作系统后可提高系统资源的利用率,提高系统的吞吐量。(3)可扩充性。操作系统应采用模块化结构,以便于增加新的功能和修改老的功能模块。(4)开放性。为使出自不同厂家的计算机及其设备能通过网络加以集成化并正确、有效地协同工作,实现应用程序的可移植性和互操作性,要求操作系统必须提供统一的开放环境,进而要求OS具有开放性。开放性是指系统能遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。2某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购
2、票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请用PV操作实现管理。解:定义一个信号量 S,初值为 20parbegin process pl(l=1,2,)beginwait(S);进入售票厅;购票;退出;signal(S)end3桌上有一空盘,允许存放一个水果,爸爸可向盘内放苹果,妈妈可向盘内放桔子,儿子专等吃盘内的桔子,女儿专等吃盘中的苹果,请用P、V 操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步与互斥。int S=1;int Sa=0;int Sb=0;main()cobeginfather();mather();son();daughter();coendfath
3、er() mather()while(1) while(1)p(S); p(S) ;将一个苹果放入盘中 将一个桔子放入盘中V(Sa); V(Sb); son() daughter() while(1) while(1)p(Sb); p(Sa);从盘中取出桔子 从盘中取出苹果V(S);吃桔子; V(S);吃苹果;4生产围棋的工人不小心把相等数量的黑子和白子混装在一个盒子里,现在要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程PA和PB组成,系统功能如下:(1)PA 专拣黑子,PB 专拣白子;(2)每个进程每次只拣一个子,当一个进程拣子时,不允许另一个进程去拣子;(3)当一个进程拣一个
4、子(黑或白)后,必须让另一个进程去拣一个子(白或黑)请回答:这两个并发进程之间的关系是同步还是互斥写出 PV 操作管理时应定义的信号量及其初值。根据定义的信号量,写出用 PV 操作管理两个并发进程的程序答:两个进程之间是同步关系定义两个信号量 S1 和 S2,初值为 1 和 0process PA process PAbegin beginrepeat repeatwait(S1) wait(S2)拣黑子 拣白子signal(S2) signal(S1)until false until falseend end5试从调度性,并发性,拥有资源及系统开销几个方面,对进程和线程进行比较.答:进程和
5、线程有着很多相似的地方:都可以并发执行;都有就绪、执行和阻塞基本状态,也都可以在这些基本状态之间转换状态;从创建到撤销都有一定的生命周期;都需要同步工具。进程和线程也有很多差异:调度性不同:在传统的OS中,进程是拥有资源和独立调度的基本单位,在引入线程的OS 中,则把线程作为调度和分派的基本单位,而把进程作为拥有资源的基本单位。并发粒度不同。在引入线程的OS中,除了不同进程的线程之外,同一个进程里的不同线程之间也可以并发执行,所以线程拥有更好的并发性。拥有资源数量不同。进程是拥有资源的基本单位,线程除了一些在运行过程中必不可少的资源外基本上不拥有系统资源,但可以访问自己所在的进程的资源。管理开
6、销不同。创建、撤消进程时系统都要为之分配和回收资源,所以进程切换用的时间等开销相对要多于线程。进程间通信很麻烦,而同一进程的线程间则通过共享进程的资源很方便地通信和同步,同步开销小得多。1. 什么是用户级线程和内核级线程?并对它们进行比较。答:(1) 内核级线程是依赖于内核的,它存在于用户进程和系统进程中,它们的创建,撤消和切换都由内核实现;-用户级线程仅存在于用户级中,它们的创建,撤消和切换不利用系统调用来实现,因而与内核无关,内核并不知道用户级线程的存在.(2) 内核级线程的调度和切换与进程十分相似,调度方式采用抢占式和非抢占式,调度算法采用时间轮转法和优先权算法等,当由线程调度选中一个线
7、程后,再将处理器分配给它;而用户级线程通常发生在一个应用程序的诸线程之间,无需终端进入 OS 内核,切换规则也较简单,因而,用户级线程的切换速度较快。-用户级线程调用系统调用和调度另一个进程执行时,内核把它们看作是整个进程的行为,内核级线程调用是以线程为单位,内核把系统调用看作是该线程的行为.-对于用户级线程调用,进程的执行速度随着所含线程数目的增加而降低,对于内核级线程则相反6设有三组进程P i、Q j、R k,其中P i、Q j构成一对生产者和消费者,共享一个由M1个缓冲区构成的循环缓冲池buf1。 Qj、R k构成另一对生产者和消费者,共享一个由M2个缓冲区构成的循环缓冲池buf2。如果
8、 Pi每次生产一个产品投入buf1, Qj每次从中取两个产品组装成一个后并投入buf2, Rk每次从中取三个产品包装出厂。试用信号量和PV操作写出它们同步工作的程序。解:设互斥信号量 mutex1,mutex2 ,对两个缓冲池互斥访问,初值为 1同步信号量 empty1,empty2,full1,full2,初值为:empty1:=M1; empty2:=M2; full1:=full2:=0缓冲池 buffer1:array0M1-1 of item;缓冲池 buffer2:array0M2-1 of item;整型变量 in1:=in2:=out1:=out2:=0;counter1:=c
9、ounter2:=0begin cobeginprocess pi (i=1,2)beginrepeatp(empty1);p(mutex1);put an item into buffer1in1;in1:=(in1+1)mod M1;counter1+;if counter1=2 then counter1:=0;v(full1);v(mutex1);until false;endprocess Qj (j=1,2)beginrepeatp(full1);p(mutex1);take an item from buffer1out1;out1:=(out1+1)mod M1;take an
10、 item from buffer1out1;out1:=(out1+1)mod M1;v(mutex1);v(empty1);v(empty1);Process the products;p(empty2);p(mutex2);put an item into buffer2in2;in2:=(in2+1)mod M2;counter2+;if counter2=3 then counter2:=0;v(full2);v(mutex2);until false;endprocess Rk (k=1,2)beginrepeatp(full2);p(mutex2);take an item fr
11、om buffer1out2;out2:=(out2+1)mod M2;take an item from buffer1out2;out2:=(out2+1)mod M2;take an item from buffer1out2;out2:=(out2+1)mod M2;v(mutex2);v(empty2);v(empty2);v(empty2);Process the products;Untile falseendcoendend7有一阅览室,读者进入时必须先在一张登记表上登记,该表为每一座位列出一个表目,包括座号、姓名,读者离开时要注销登记信息;假若阅览室共有100个座位。试用信号
12、量和PV操作来实现用户进程的同步算法。解:设置如下 3 个信号量seat:表示阅览室中空座位数,其初值为 100.readers:记录阅览室中的读者数,其初值为 0.mutex:互斥信号量(对于读者而言,阅览室是一个临界资源,任何时刻最多只有一位读者填写登记表或撤销登记表) ,初值为 1.对应的算法描述如下:semaphore seats=100;semaphore readers=0;semaphore mutex=1;main()cobegin读者进入阅览室进程 readerini(i=1,2,n)while(true)p(seats); /递减空座位数p(mutex);填写登记表进入阅览
13、室;v(mutex); /允许其他读者访问阅览室v(readers); /递增读者数读者离开阅览室进程 readerouti (i=1,2, ,n)while(true)p(readers); p(mutex); 撤销登记;离开阅览室;v(mutex);v(seats);coend解法二:mutex,seatcount:semaphore;mutex:=1;seacount:=100;cobeginprocess readeri(var readername:string)(i=1,2)beginp(seatcount);/申请座位p(mutex);填写登记表v(mutex);进入阅览室座位号
14、 i,坐下读书;p(mutex);撤销登记信息;离开阅览室;V(mutex);V(seatcount); endcoend8某高校开设网络课程并安排上机实习,如果机房共有2m 台机器,有2n个学生选课,规定(1)每两个学生分成一组,各用一台机器,协同完成上机实习;(2)仅当一组两个学生到齐,并且机房机器有空闲时,该组学生才能进机房;(3)上机实习由一名教师检查,检查完毕后,这一组学生同时离开机房。试用信号量和P、 V操作实现上述实习过程。解:在本题中除学生和教师进程外,还隐含了一个管理进程,该管理进程负责当有两个学生到齐后,将他们合为一组学生。在学生进程中,当有学生到达时,先测试是否有空闲计算
15、机及是否允许进入机房(是否有一组同学) ,若可以进入机房则上机实习,完成实习后等待教师检查,教师检查后释放计算机。在教师进程中,先等待一组同学完成实习,然后检查学生实习。对应的程序描述如下:semaphore student=0;/到达学生人数信号量semaphore computer=2m;/ 空闲计算机数量semaphore enter=0; /允许进入机房的人数信号量semaphore finish=0; /完成实习的人数信号量semaphore check=0; /检查完得人数信号量main() cobegin学生进程 studenti(i=1,2,.)v(student); / 递增
16、到达的学生人数p(computer); /递减计算机数p(enter); /递减允许进入机房的人数上机实习;v(finish); /递增完成实习的人数p(check); /递减检查完的人数v(computer); /递增计算机人数管理员进程 mangerwhile(true)p(student); /递减到达的学生人数p(student); /递减到达的学生人数将两个学生合为一组;v(enter);/ 递增允许进入机房的人数 v(enter);/ 递增允许进入机房的人数教师进程 teacherwhile(true)p(finish);/递减完成实习人数p(finish);/ 递减完成实习人数检
17、查学生实习;v(check);/ 递增检查完的人数v(check);/ 递增检查完的人数coend9.假设有四个作业,它们提交、运行时间如下表所示。若采用响应比高者优先调度算法,试问平均周转时间和带权周转时间为多少? (时间单位:小时,以十进制进行计算。 )作业号 到达时间 运行时间1 8.0 2.02 8.3 0.53 8.5 0.14 9.0 0.4解:第一个作业完成时间为 10.0,此时其它作业的响应比计算如下:R2=(0.5+10-8.3)/0.5=4.4R3=(0.1+10-8.5)/0.1=16R4=(0.4+10-9)/0.4=3.5根据响应比高者优先调度原则,应先运行作业 3,
18、作业 3 完成时间为 10.1,此时作业 2 和作业 4 的响应比计算如下:R2=(0.5+10.1-8.3)/0.5=4.6R4=(0.4+10.1-9)/0.4=3.75根据响应比高者优先调度原则,应先运行作业 2,作业 2 完成时间为 10.6,最后运行作业 4,作业 4 完成时间为 11.0。作业号 到达时间 运行时间 完成时间 周转时间 带权周转时间平均周转时间平均带权周转时间1 8.0 2.0 10.0 2.0 12 8.3 0.5 10.6 2.3 4.6 1.975 6.653 8.5 0.1 10.1 1.6 164 9.0 0.4 11.0 2.0 510.在单 CPU 和
19、两台输入/输出设备(I1,I2) 的多道程序设计环境下,同时投入三个作业 Job1、 Job2、 Job3 运行。这三个作业对 CPU 和输入/ 输出设备的使用顺序和时间如下所示:Job1: I2(30ms);CPU(10ms);I1(30ms);CPU(10ms);I2(20ms|)Job2: I1(20ms);CPU(20ms); I2(40ms|)Job3: CPU(30ms);I1(20ms);CPU(10ms);I1(10ms|)假定 CPU 、 I1、I2 都能并行工作, Job1 优先级最高, Job2 次之, Job3 优先级最低,优先级高的作业可以抢占优先级低的作业的 CPU 但不抢占 I1 和I2。试求:(1)三个作业投入到完成分别需要的时间。(2)从投入到完成的 CPU 利用率。(3)I/O 设备利用率解:(1)(2)cpu 利用率:(60+10+10)/110=72.7%(3) i1 设备利用率:( 20+30+20+10)/110=72.7%i2 设备利用率:(30+40+20)/110=81.8%