操作系统作业.docx
《操作系统作业.docx》由会员分享,可在线阅读,更多相关《操作系统作业.docx(20页珍藏版)》请在冰豆网上搜索。
操作系统作业
第一次作业
书上的作业
1.1操作系统的两个主要目标是什么?
答:
(1)为计算机用户提供一个环境让用户可以方便地在计算机硬件上执行程序
(2)以公平有效的方式分配计算机的资源用于解决特定的问题
1.3多道程序设计的主要优点是什么?
答:
通过把各种不同的用户提出的对CPU和I/O设备的请求相互交替执行而更高效地使用CPU。
它通过不断让CPU工作而提高CPU的利用率。
2.2监督程序模式和用户模式之间的区别?
答:
通过只能在系统模式(或者称为监督程序模式)下执行特权指令可以保证操作系统时刻控制整个计算机系统,并保证关键数据的安全。
2.3陷入与中断之间的区别?
答:
中断是一个系统中由硬件产生的用于改变执行流程的信号。
一个中断控制程序来处理中断,执行完成后返回被中断的程序指令。
陷阱是一个软件产生的中断。
例如可以用陷阱提示I/O操作的完成,或者调用操作系统的系统调用,或者捕获算术运算错误。
2.5下面哪些指令是特权指令?
a)设置定时器的值;b)读时钟;c)清除存;d)关闭中断;e)从用户模式切换到监督程序模式。
答:
a,c,d,e是特权指令
补充作业
1.把下面的应用程序分为交互性和批处理两类:
字处理、按月生成银行报表、计算圆周率到百万分位、飞行模拟器
答:
交互性:
字处理、飞行模拟器
批处理:
按月生成银行报表、计算圆周率到百万分位
2.写出操作系统的五大功能。
答:
进程管理、存管理、文件管理、设备管理、与用户之间的接口。
第二次作业
书上的作业
4.2论述短期、中期、长期调度之间的区别
答:
短期调度—从就绪队列中选择进程执行并把CPU分配给它。
中期调度—主要在分时系统中使用。
将存中的作业换出到外存中等到存允许的情况下再换入到存中执行。
长期调度—确定把哪个作业放到存中执行。
它们之间的主要区别是执行的频率不同。
短期调度执行频率高而长期调度执行频率低。
4.4两个进程进行上下文切换的操作3.2
答:
通常,操作系统必须保存当前运行进程的状态并恢复下一个要调度的进程的状态。
保存一个进程的状态通常包括CPU所有寄存器的值和存的分配情况。
5.3用户级线程和核级线程之间的区别?
相互对比的优势在哪里?
答:
(1)核不知道用户级线程的存在,但核知道核级线程的存在
(2)核调度核级线程,而用户级线程则由线程库调度
在要体现系统灵活性的时候使用用户级线程好,因为用户级线程可以自己设计自己的调度。
核级线程则被核知道,所以可以保证一个线程阻塞时可以调度一个进程的另一个线程,减少系统开销。
补充作业
1.假设有一个进程,它的工作流程是先运行150ms,然后进行I/O,最后执行250ms结束。
如果系统中的进程有三个状态,当时间片为200ms时,请写出进程A从被系统接纳到运行结束所经历的状态转换并说明原因。
答:
被系统接纳之后:
就绪-运行(原因:
被调度执行)、运行-阻塞(原因:
执行I/O操作)、阻塞-就绪(原因:
I/O操作完成)、就绪-运行(原因:
被调度执行)、运行-就绪(原因:
时间片到)、就绪-运行(原因:
被调度执行)、结束。
2.图中程序的运行结果
答:
输出“value=5”。
3.图中程序运行完共有多少进程?
答:
一共有8个进程。
第三次作业
7.1什么是忙等待?
答:
所谓忙等待是不断测试等待一个条件满足。
7.9吸烟者问题:
有3个吸烟者和一个供应者。
第一个吸烟者有自己的烟草;第二个吸烟者有自己的纸;第三个吸烟者有自己的火柴。
供应者每次随机放两样东西到桌子上提供给3个吸烟者之中的一个以完成吸烟。
请用信号量为吸烟者和供应者进程编写程序。
semaphorea[2]={0};
semaphoreagent=1;
provider()
{
while(true)
{
setitovaluebetween0and2;
wait(agent);
//puttwoitemsontableaccordingtoi
signal(a[i]);
}
}
Smoker(inti)
{
while(true)
{
wait(a[i]);
smoke;
signal(agent);
}
}
补充作业
1.假设有三个进程R、W1、W2共享缓冲区B。
B中只能存放一个数。
R每次从输入设备中读一个整数放入B中。
如果这个整数是奇数,由W1取出打印。
如果这个整数是偶数,则由W2取出打印。
规定仅当B中没有数据或数据已经被打印才会启动R去读数。
W1、W2对B中的数据不能重复打印,当B中没有数据时也不能打印。
要求用信号量操作写出R、W1、W2三个进程的程序。
(请详细描述所使用变量的含义)
semaphoreS0=1(表示缓冲区中可以存放的数据数目)
semaphoreS1=0(表示W1可以打印的数据数目)
semaphoreS2=0(表示W2可以打印的数据数目)
R:
While(true)
{
Readintegerintoitem
wait(S0);
putiteminB
if(item%2==1)signal(S1);
if(item%2==0)signal(S2);
}
W1:
While(true)
{
wait(S1);
TakeitemfromB;
signal(S0);
Printitem;
}
W2:
While(true)
{
wait(S2);
TakeitemfromB;
Signal(S0);
Printitem;
}
2.有一个铁笼子,猎手放入老虎,农民放入猪,动物园等待取走老虎,饭店等待取走猪。
笼子中只能放入一个动物。
请使用信号量方法为猎手、农民、动物园、饭店进程编写程序。
semaphoreno=1,tiger=0;pig=0;
hunter()
{
wait(no);
putintiger;
signal(tiger);
}
farmer()
{
wait(no);
putinpig;
signal(pig);
}
zoo()
{
wait(tiger);
taketiger;
signal(no);
}
hotel()
{
wait(pig);
takepig;
signal(no);
}
3.某寺庙,有小、老和尚若干。
有一个水缸,由小和尚提水入缸供老和尚饮用。
水缸可容10桶水。
水取自一个井中,水井窄,每次只能容一个水桶。
水桶总数为3。
水缸每次进出也仅1桶水,不可以同时进行。
请设置合适的信号量描述小和尚、老和尚取水、入水的算法。
Semaphorebucket=3,well=1,jar=1,empty=10,full=0;
Voidlittlemonk()
{
while
(1)
{
wait(empty);
wait(bucket);
wait(well);
取水;
signal(well);
wait(jar);
放水;
signal(jar);
signal(bucket);
signal(full);
}
}
Voidoldmonk()
{
while
(1)
{
wait(full);
wait(bucket);
wait(jar);
取水;
signal(jar);
signal(bucket);
signal(empty);
}
}
附加题
1.独木桥问题:
某条河上只有一座独木桥,两边都有人要过河,为保证安全,一个方向有人过河另一个方向的人就要等待,并且允许一个方向上的人连续过河。
请使用信号量实现正确的管理。
semaphores=1,s1=1,s2=1;
intrc1,rc2;
one()
{
wait(s1);
rc1++;
if(rc1==1)wait(s);
signal(s1);
walkthrough;
wait(s1);
rc1--;
if(rc1==0)signal(s);
signal(s1);
}
another()
{
wait(s2);
rc2++;
if(rc2==1)wait(s);
signal(s2);
walkthrough;
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);
……
}
第四次作业
6.3之b,c,d
b.各个进程的周转时间
c.各个进程的等待时间
d.最小的是SJF
8.8有3个进程共享4个资源,一次只能保留或者释放一个资源。
每个进程最大需要2个单元。
说明不会发生死锁。
答:
如果所有的资源都被占用并且还有一个或多个进程在无限制的等待更多的资源那么死锁就会发生。
但是,如果所有的4个资源都被占用,那么一定有一个进程已经得到了所有的两个资源,那么这个进程就可以运行完并释放它占用的两个资源,这样就可以让其他的进程正确地工作完成。
8.13
a.
Need矩阵的样子是
0000
0750
1002
0020
0642
b.
因为有一个执行次序是p3、p1、p2、p4、p0可以执行完,所以是安全状态。
c.
如果满足,则系统的available变成1100
allocation变成
0012
1420
1354
0632
0014
这时的Need是
0000
0330
1002
0020
0642
这时如果P0先归还它占有的(0012),那么available的值是(1112),可以找到一个执行次序p0,p2,p1,p3,p4保证所有进程都可以安全执行完,会处于安全状态,因此这个请求会被满足。
第五次作业
书上的作业
9.2部碎片与外部碎片之间的区别?
答:
一个作业占据了一个存区域或者页,但是其中的一部分没有使用,把没有使用的部分成为部碎片。
部碎片不会被操作系统或者其他进程使用,除非这个作业执行完并且释放它所占用的存区域。
外部碎片是在分区之间存在的不能够被使用的小的存。
9.5存按顺序有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必须等待
在这个例子中,最佳适应算法是最好的。
9.8假设一个有8个1k页面的逻辑地址空间,映射到一个32个页框的物理存,问:
逻辑地址多少位?
物理地址多少位?
a.逻辑地址:
13bits
b.物理地址:
15bits
9.14为什么纯分段比纯分页更容易实现共享可充入模块。
答:
因为段是基于存的逻辑划分而不是物理划分,因此任意长度的段都可以通过段表的一个表项来实现共享。
而对于分页系统来说,只能对每个页实现共享,而页面的大小是固定不变的。
9.16有段表
段基地址长度
0219600
1230014
290100
31327580
4195296
下面的物理地址是多少?
a)0,430;b)1,10;c)2,500;d)3,400;e)4,122
答:
a.219+430=649
b.2300+10=2310
c.地址错误
d.1327+400=1727
e.地址错误
补充作业
1.在页面大小为4k的系统中,根据图中所示页表,下面的逻辑地址经过重定位之后的物理地址是什么?
a)20;b)4100;c)8300
第六次作业
9.10假设页表在存保存的分页系统,a.如果一次访问存用200ns,那么访问一个页的一次数据访问用多少时间?
b.如果加入TLB,有75%的命中率,那么存有效访问时间是多少?
a.400ns;200ns访问页表,200ns访问存中的字
b.有效访问时间=0.75(200ns)+0.25_(400ns)=250ns.
5.在一个虚拟存储管理系统中采用页式方法对存空间进行管理,它有24位的虚拟地址空间,而实际的物理地址空间是16位,页框大小为2k。
假设有两个进程A和B。
其中A进程的0、2页已经调入到存的2、3号页框;B进程的1、3页已经调入到存的7、8号页框。
请问:
A进程的虚拟地址12FF可以转换成什么物理地址?
B进程的虚拟地址17BA可以转换成什么物理地址?
如果不能转换,操作系统会执行什么操作?
答:
A进程的12FF转换成物理地址为1AFF
B进程的17BA无法转换成物理地址,因为这个页不在存,需要发生缺页中断,调入这个页面
答:
(a)49172(b)57348(c)61548
2.一台计算机为每个进程提供65536字节的地址空间,页面的大小为4k。
一个程序有32768字节的正文,16386字节的数据,15870字节的堆栈,此程序是否能装入此地址空间?
若页面大小为512字节呢?
答:
文本占8页,数据占5页,堆栈占4页。
因此程序需要17页,而实际上只有65536/4k=16页的空间,不足。
而如果页面有512字节,正文需要64页,数据需要33页,堆栈需要31页,一共128页,而实际上有65536/512=128页的空间,所以正好放入。
3.若两个进程共享一个页面,该页面可否对一个进程只读,对另一个进程可读写?
如何实现?
答:
可以实现。
在页表里面为每一页增加一个保护字段就可以了。
第七次作业
书上的作业
14.2假设一个磁盘驱动器有5000个柱面,从0到4999。
驱动器正在为143的一个请求服务,且前面的一个请求在125。
按照FIFO的顺序,即将到来的请86,1470,913,1774,948,1509,1022,1750,130。
请按照FCFS、SSTF、SCAN、LOOK、C-SCAN、C-LOOK开计算磁头移动距离。
答:
a.FCFS:
143,86,1470,913,1774,948,1509,1022,1750,130.
总寻道距离7081.
b.SSTF:
143,130,86,913,948,1022,1470,1509,1750,1774.
总寻道距离1745.
c.SCAN:
143,913,948,1022,1470,1509,1750,1774,4999,130,86.
总寻道距离9769.
d.LOOK:
143,913,948,1022,1470,1509,1750,1774,130,86.
总寻道距离3319.
e.C-SCAN:
143,913,948,1022,1470,1509,1750,1774,4999,0,86,130.
总寻道距离9985
f.C-LOOK:
143,913,948,1022,1470,1509,1750,1774,86,130.
总寻道距离3363.
补充作业
1.什么是设备无关性?
答:
设备独立性是指应用程序独立于具体使用的物理设备。
2.以下各项工作由I/O软件的哪一层完成?
a.为一个磁盘读操作计算磁道、扇区、磁头;b.向设备寄存器写命令;c.检查用户是否允许使用设备;d.将二进制整数转换成ASCII码以便打印
答:
a.设备驱动程序;
b.设备驱动程序;
c.设备独立性软件;
d.用户空间的I/O软件。
3.为什么在要打印的文件通常都假脱机输出到磁盘上?
答:
打印机作为一个独占的设备无法保证多个用户共享,这样用户在打印时经常因为无法申请到打印机而等待。
使用SPOOLing技术将打印机这样的独占设备变成了共享设备,用户需要打印的容只要假脱机输出到磁盘上用户就可以认为打印成功,方便了用户的使用。
第八次作业
书上的作业
12.4为什么文件分配的位图必须保存在大容量存储器中,而不是主存中?
答:
因为如果保存在存中,当系统崩溃时,这些空闲区间的信息将会被丢失,而如果保存在大容量存储器中就可以解决这个问题。
补充作业
1.假设要为一个文件换一个名字。
一种选择是使用操作系统提供的RENAME方法,另一种方法是:
把文件复制为新文件,然后删除原来的文件以实现重命名。
请问,这两种方法在实现上有什么不同?
答:
RENAME方法是修改目录文件的文件名部分,而删除原来文件再重命名则需要再创立一个新文件,目录文件中增加一项,分配新空间;删除目录文件中的文件项目,然后回收占用的空间。
2.请解释使用索引节点有什么好处
答:
减小目录文件的大小,提高查找文件的效率
3.在UNIX中open系统调用绝对需要么?
如果没有会产生什么结果。
答:
如果没有open命令,那么每个read命令都需要确定要打开的文件名。
系统必须找到文件的i节点,虽然这个数据放入cache可以减少一些时间,但是当数据变化的时候,i节点的数据需要刷新到磁盘上。
4.UNIX系统中有关盘块的分配与释放是借助超级块中的栈来进行的。
假如某个时刻系统状况如下图所示,若此时某个进程要删除文件A,并归还它所占用的盘块220,110,645,549,176。
请说明过程,并给出删除完毕后有关数据及表目的更改情况。
97
199
786
278
…
80
s-nfree
s-free[0]
答:
2
549
176
…
100
199
786
278
…
80
230
110
645
附加题
1.考虑一个索引节点所表示的UNIX文件的组织。
假设有12个直接块指针,在每个索引节点中有一个单重、双重和三重间接指针。
此外,假设系统块大小和磁盘扇区大小都是8K,如果磁盘块指针是32位,其中8位表示物理磁盘,24位表示物理块,那么
a.该系统支持的最大文件大小是多少?
b.该系统支持的最大文件分区是多少?
c.假设主存中除了文件索引节点外没有其他信息,访问在位置12423956中的字节需要多少磁盘访问?
答:
a.通过用块大小除以指针大小得到盘块指针的数目:
每块8K/4=2K
这样I节点可以支持的最大文件容量是:
12
直接
12
+2K
一次间接
+2K
+(2K*2K)
2次间接
+4M
+(2K*2K*2K)
3次间接
+8Gblocks
乘以块的大小(8K),是
96KB+16MB+32GB+64TB
b.在一个分区中识别一个块需要24位。
所以:
224*8K=16M*8K=128GB
c.使用从(a)得到的信息,发现直接块只能表示96KB,而一次间接块表示16MB.题目中要求的请求位置在13M左右,使用一次间接块.就可以了。
所以要用两次磁盘访问,一次访问一次间接块,另一次访问包含数据的盘块