第一次作业书上的作业操作系统的两个主要目标是什么答:(1)为计算机用户提供一个环境让用户可以方便地在计算机硬件上执行程序(2)以公平有效的方式分配计算机的资源用于解决特定的问题多道程序设计的主要优点是什么答:通过把各种不同的用户提出的对CPU和I/O设备的请求相互交替执行而更高效地使用CPU。
它通过不断让CPU工作而提高CPU的利用率。
》监督程序模式和用户模式之间的区别答:通过只能在系统模式(或者称为监督程序模式)下执行特权指令可以保证操作系统时刻控制整个计算机系统,并保证关键数据的安全。
陷入与中断之间的区别答:中断是一个系统中由硬件产生的用于改变执行流程的信号。
一个中断控制程序来处理中断,执行完成后返回被中断的程序指令。
陷阱是一个软件产生的中断。
例如可以用陷阱提示I/O操作的完成,或者调用操作系统的系统调用,或者捕获算术运算错误。
下面哪些指令是特权指令a)设置定时器的值;b)读时钟;c)清除内存;d)关闭中断;e)从用户模式切换到监督程序模式。
答:—a,c,d,e是特权指令补充作业1. 把下面的应用程序分为交互性和批处理两类:字处理、按月生成银行报表、计算圆周率到百万分位、飞行模拟器答:交互性:字处理、飞行模拟器批处理:按月生成银行报表、计算圆周率到百万分位2.写出操作系统的五大功能。
答:进程管理、内存管理、文件管理、设备管理、与用户之间的接口。
—第二次作业书上的作业论述短期、中期、长期调度之间的区别答:短期调度—从就绪队列中选择进程执行并把CPU分配给它。
中期调度—主要在分时系统中使用。
将内存中的作业换出到外存中等到内存允许的情况下再换入到内存中执行。
长期调度—确定把哪个作业放到内存中执行。
它们之间的主要区别是执行的频率不同。
短期调度执行频率高而长期调度执行频率低。
两个进程进行上下文切换的操作答:通常,操作系统必须保存当前运行进程的状态并恢复下一个要调度的进程的状态。
保存一个进程的状态通常包括CPU所有寄存器的值和内存的分配情况。
用户级线程和内核级线程之间的区别相互对比的优势在哪里/答:(1)内核不知道用户级线程的存在,但内核知道内核级线程的存在(2)内核调度内核级线程,而用户级线程则由线程库调度在要体现系统灵活性的时候使用用户级线程好,因为用户级线程可以自己设计自己的调度。
内核级线程则被内核知道,所以可以保证一个线程阻塞时可以调度一个进程的另一个线程,减少系统开销。
补充作业1.假设有一个进程,它的工作流程是先运行150ms,然后进行I/O,最后执行250ms结束。
如果系统中的进程有三个状态,当时间片为200ms时,请写出进程A从被系统接纳到运行结束所经历的状态转换并说明原因。
答:被系统接纳之后:就绪-运行(原因:被调度执行)、运行-阻塞(原因:执行I/O操作)、阻塞-就绪(原因:I/O操作完成)、就绪-运行(原因:被调度执行)、运行-就绪(原因:时间片到)、就绪-运行(原因:被调度执行)、结束。
2.图中程序的运行结果答:输出“value=5”。
3.$4.图中程序运行完共有多少进程答:一共有8个进程。
第三次作业什么是忙等待答:所谓忙等待是不断测试等待一个条件满足。
吸烟者问题:有3个吸烟者和一个供应者。
第一个吸烟者有自己的烟草;第二个吸烟者有自己的纸;第三个吸烟者有自己的火柴。
供应者每次随机放两样东西到桌子上提供给3个吸烟者之中的一个以完成吸烟。
请用信号量为吸烟者和供应者进程编写程序。
semaphore a[2]={0};semaphore agent=1;,provider(){while(true){set i to value between 0 and 2;wait(agent);假设有三个进程R、W1、W2共享缓冲区B。
B中只能存放一个数。
R每次从输入设备中读一个整数放入B中。
如果这个整数是奇数,由W1取出打印。
如果这个整数是偶数,则由W2取出打印。
规定仅当B中没有数据或数据已经被打印才会启动R去读数。
W1、W2对B中的数据不能重复打印,当B中没有数据时也不能打印。
要求用信号量操作写出R、W1、W2三个进程的程序。
(请详细描述所使用变量的含义)semaphore S0=1(表示缓冲区中可以存放的数据数目)semaphore S1=0(表示W1可以打印的数据数目)semaphore S2=0(表示W2可以打印的数据数目)R:【While (true){Read integer into itemwait(S0);put item in Bif (item%2= =1) signal(S1);if (item%2= =0) signal(S2);}W1:\While (true){wait(S1);Take item from B;signal(S0);Print item;}W2:'While (true){wait(S2);Take item from B;Signal(S0);Print item;}2.有一个铁笼子,猎手放入老虎,农民放入猪,动物园等待取走老虎,饭店等待取走猪。
笼子中只能放入一个动物。
请使用信号量方法为猎手、农民、动物园、饭店进程编写程序。
semaphore no=1,tiger=0;pig=0;.hunter(){wait(no);put in tiger;signal(tiger);}farmer(){wait(no);put in pig;signal(pig);-}zoo(){wait(tiger);take tiger;signal(no);}hotel(){wait(pig);take pig;·signal(no);}3.某寺庙,有小、老和尚若干。
有一个水缸,由小和尚提水入缸供老和尚饮用。
水缸可容10桶水。
水取自一个井中,水井窄,每次只能容一个水桶。
水桶总数为3。
水缸每次进出也仅1桶水,不可以同时进行。
请设置合适的信号量描述小和尚、老和尚取水、入水的算法。
Semaphore bucket=3, well=1, jar=1, empty=10, full=0;Void littlemonk(){while(1){!wait(empty);wait(bucket);wait(well);取水;signal(well);wait(jar);放水;signal(jar);signal(bucket);signal(full);}%}Void oldmonk(){while(1){wait(full);wait(bucket);wait(jar);取水;signal(jar);signal(bucket);[signal(empty);}}附加题1.独木桥问题:某条河上只有一座独木桥,两边都有人要过河,为保证安全,一个方向有人过河另一个方向的人就要等待,并且允许一个方向上的人连续过河。
请使用信号量实现正确的管理。
semaphore s=1,s1=1,s2=1;int rc1,rc2;one(){}wait(s1);rc1++;if(rc1==1) wait(s);signal(s1);walk through;wait(s1);rc1--;if(rc1==0) signal(s);signal(s1);}another()!{wait(s2);rc2++;if(rc2==1) wait(s);signal(s2);walk through;wait(s2);rc2--;if(rc2==0) signal(s);signal(s2);}·有人给出这样的独木桥问题的答案,看看有什么问题么(1)定义两个信号量S1和S2,S1:=1,S2:=0。
(2)假定开始时让河东的一个人先过桥,则用PV操作管理时的程序应如下:one(){ ……P(S1);过桥;V(S2);……}another(){ ……P(S2);过桥;V(S1);……}第四次作业之b,c,db.各个进程的周转时间、c.各个进程的等待时间d.最小的是SJF有3个进程共享4个资源,一次只能保留或者释放一个资源。
每个进程最大需要2个单元。
说明不会发生死锁。
答:如果所有的资源都被占用并且还有一个或多个进程在无限制的等待更多的资源那么死锁就会发生。
但是,如果所有的4个资源都被占用,那么一定有一个进程已经得到了所有的两个资源,那么这个进程就可以运行完并释放它占用的两个资源,这样就可以让其他的进程正确地工作完成。
a.Need矩阵的样子是0 0 0 0【0 7 5 01 0 0 20 0 2 00 6 4 2b.因为有一个执行次序是p3、p1、p2、p4、p0可以执行完,所以是安全状态。
c.如果满足,则系统的available变成1 1 0 0allocation变成0 0 1 21 42 0?1 3 5 40 6 3 20 0 1 4这时的Need是0 0 0 00 3 3 01 0 0 20 0 2 00 6 4 2这时如果P0先归还它占有的(0 0 1 2),那么available的值是(1 1 1 2),可以找到一个执行次序p0,p2,p1,p3,p4保证所有进程都可以安全执行完,会处于安全状态,因此这个请求会被满足。
{第五次作业书上的作业内部碎片与外部碎片之间的区别答:一个作业占据了一个内存区域或者页,但是其中的一部分没有使用,把没有使用的部分成为内部碎片。
内部碎片不会被操作系统或者其他进程使用,除非这个作业执行完并且释放它所占用的内存区域。
外部碎片是在分区之间存在的不能够被使用的小的内存。
内存按顺序有100k,500k,200k,300k,600k,用首次适应、最佳适应和最差适应如何放置212k,417k,112k,426k的进程答:(1)首次适应算法212K 放入 500K 的分区417K 放入 600K 的分区112K 放入 288K 的分区(产生新的分区 288K = 500K - 212K)|426K 必须等待(2)最佳适应算法212K放入300K的分区417K放入500K的分区112K放入200K的分区426K放入600K的分区(3)最差适应算法212K放入600K 的分区417K放入500K 的分区112K放入388K 的分区426K 必须等待-在这个例子中,最佳适应算法是最好的。
假设一个有8个1k页面的逻辑地址空间,映射到一个32个页框的物理内存,问:逻辑地址多少位物理地址多少位a. 逻辑地址: 13 bitsb. 物理地址: 15 bits为什么纯分段比纯分页更容易实现共享可充入模块。
答:因为段是基于内存的逻辑划分而不是物理划分,因此任意长度的段都可以通过段表的一个表项来实现共享。
而对于分页系统来说,只能对每个页实现共享,而页面的大小是固定不变的。