操作系统作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一次作业
书上的作业
操作系统的两个主要目标是什么
答:
(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 item
wait(S0);
put item in B
if (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);