操作系统原理FAQ_第1页
操作系统原理FAQ_第2页
操作系统原理FAQ_第3页
操作系统原理FAQ_第4页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统原理FAQ1. 请解释发生进程上下文切换时,内核如何的工作?答:总的来说,操作系统必须保存当前进程的现场、恢复选中进程的现场。现场保存主要包括对CPU寄存器值的保存和已分配内存的保存。上下文切换还包括与计算机体系结构相关的一些操作,如数据及指令高速缓存(cache)的刷新。2. 教材习题4.7中子进程里面开始的那段代码是什么意思?看不懂,能否帮忙解答一下?由图4.11给出的程序使用了Pthread的应用程序编程接口(API),在程序的第c行和第p行分别会输出什么?#include <pthread.h>#include <stdio.h> int va

2、lue=0;void *runner(void *param); /* the thread */ int main(int argc, char *argv)int pid;pthread_t tid;pthread_attr_t attr;     pid = fork();        if (pid = 0) /* child process */      pthread_attr_init(&a

3、ttr);      pthread_create(&tid, &attr, runner, NULL);      pthread_join(tid, NULL);      printf(“CHILD: value = %d”, value); /* LINE C*/        else if (pid > 0) /* parent process */&#

4、160;         wait(NULL);          printf(“PARENT: value = %d”, value); /* LINE P */     void *runner(void *param)      value=10;     pthread_exit(0);如果调用的f

5、ork返回0,调用子进程runner,Line C输出10;否则父进程直接在Line P输出03. 用户级线程和核心级线程的主要区别在哪里?两者在什么情况下各有优劣?答:(1) 用户级线程直接由应用程序管理,操作系统核心感知不到它的存在,而核心级线程直接由操作系统管理。(2) 用户级线程由线程库(thread library)来调度,而核心级线程由操作系统调度。(3) 核心级线程不需要绑定到一个特定的进程,而用户级线程只属于某个特定的进程。4. 陷入(trap)和中断有什么区别?它们各有什么用途?答:中断是硬件产生的,中断处理程序会被调用来处理中断,然后控制权又根据上下文交还给中断前的程序指令

6、。而陷入是一种软中断。中断用来发信号通知I/O操作的完成以消除循环检测,陷入则被用来唤醒操作系统例程或者捕捉算法错误。5. 老师能帮忙分析一下下面两个关于文件索引的题目吗?自已理解有些难度哦!(20)设文件索引节点中有7个地址项,其中4 个地址项为直接地址索引,2个地址项是一级间接地址索引,1 个地址项是二级间接地址索引,每个地址项大小为4 字节。若磁盘索引块和磁盘数据块大小均为 256字节,则可表示的单个文件的最大长度是(  )。 A 33KB  B 519KBC 1057KBD 16513KB (35)在 UNIX 系统中,文件的物理结构采用直接、一

7、级、二级和三级间接索引技术,其索引结点有 13 个地址(i_addr0i_addr12),如果每个盘块,大小为 1K 字节,每个盘块号占 4个字节,那么一个进程要访问文件,第356168字节处的数据时(  )寻址。A  可直接 B  需要一次间接C  需要二次间接D  需要三次间接  块大小为256B,地址项大小为4B,所以每级索引可以存放64个地址,2级间接索引可以存放1*64*64*256B=1024kb,1级间接索引存放2*64*256=32KB,相加即得1056KB+直接索引4*256,刚好1057KB。同

8、理块大小1kb/4个字节=256个地址,一级索引为1*256*1024=262144+直接10*1024=264192<356168,则必须到二级间接索引里面去寻址。请说明为什么自旋锁不适合于单处理机系统而在多处理机系统中是有用的?答:当一个进程欲访问已被其他进程锁定的资源时,进程循环检测该锁是否被释放,这种技术称为自旋锁(spin lock)。施加自旋锁意味着进程一直占用CPU。在单处理机系统中,如果进程循环等待其他进程释放锁,因为系统只有一个CPU,拥有锁的进程无法得到CPU而释放该锁,因此,该进程应该阻塞,而不是循环等待。而在多处理机系统中,循环等待被其他进程施加的锁是可行的,因为

9、其他进程很有可能在别的CPU上执行,从而很快释放该锁。6. 疑难题:假设页的大小为 4KB,页表的每个表项占用 4个字节。假设页的大小为 4KB,页表的每个表项占用 4个字节。对于一个64 位地址空间系统,采用多级页表机制,至少需要(  )级页表。 A 2   B 3   C 6   D 7  答案是C,请给出具体的的分析过程吗?264 = 210 * 210 * 210 * 210 * 210 * 210 * 24,每一个210代表一级页表(4KB/4计算得到的)7. 疑难题:一个采用三级索引文件系统(

10、每块大小为4KB,每块地址占用 4字节。管理的最大的文件是?一个采用三级索引文件系统(每块大小为4KB,每块地址占用 4字节。管理的最大的文件是(  )。 A 512MB B 1TB   C 2TB   D 4TB  答案是D,老师能说一下计算过程吗?三级索引,第一级是一个地址块,可以检索到1k个二级地址块,每个二级地址块又可以检索1k个三级地址块,每个三级地址块又可以检索1K个地址块,三级地址块中的一个地址可以检索4KB的数据。可以管理的最大文件为:1K * 1K * 1K * 4KB = 4TB8. 是否可能存在一种死锁

11、现象,只涉及单个进程?答:不可能,因为死锁的一个必要条件是保持等待,即涉及死锁的每个进程都占用某些资源,同时又在等待其他进程所占用的资源。9.在文件系统 UNIX/Linux 直接间接混合寻址方式的学习中,我原来的理解比较粗浅,现再学再理解,对下面问题的求解也有了新的认识,与同学们交流:  一个系统的磁盘每块大小为4KB,每块地址用4B表示。采用二级索引文件系统管理的最大的文件是_填空A_,采用三级索引文件系统管理的最大文件是_填空B_,采用UNIX Sysem V 文件系统管理的最大的文件是_填空C_。  解:一个盘块可存索引表目数 N =盘块大小/索

12、引表目大小=4KB/4B=1KB=1024B;  二级索引可管理的最大文件容量为:盘块大小×N×N=4KB×1K×1K=4KB×1M=4GB;  三级索引可管理的最大文件容量为:盘块大小×N×N×N=4KB×1K×1K×1K=4KB×1M×1K=4GB×1K=4TB;  UNIX System V 混合分配可管理的最大文件容量为:盘块大小×(10 + N + N×N +N

13、15;N×N)=4KB×(10+ 1K+ 1K×1K+ 1K×1K×1K)=40KB+4MB+4GB+4TB;  确定对应的选择位置便能解完本题。一个盘块可存索引表目数 N =盘块大小/索引表目大小=4KB/4B=1KB=1024B;这个答案数字是正确的,但是不应该加单位,希望能引起注意。10. 关于银行家算法中安全序列不是唯一的再次证明和系统能否将资源分配给进程P2的计算过程。问题1:试描述避免死锁的银行家算法,若系统运行中出现下述资源分配情况,该系统是否安全?解:安全检查表1进程AllocationNeedAvailab

14、eAbelable+ AllocationNo  A B C D A B C D A B C D A B C D P0 0 0 3 2 0 0 1 2 1 6 2 2 1 6 5 41P1 1 0 0 0 1&

15、#160;7 5 0 1 9 8 6 2 9 8 63P2 1 3 5 4 2 3 5 6 2 9 8 6 3 12 13 104P3 0 3 3 2 0 6 5 2 1 6 5 4 1 9 8 62P4

16、60;0 0 1 4 0 6 5 6    3 12 13 10 3 12 14 145已分配资源数(2 6 12 12;结果找到一个安全序列P0、P3、P1、P2、P4,系统是安全的。对应的安全检查表1如上。 为试找有没有不同为试找有没有不同于上面安全序列P0、P3、P1、P2、P4,本人再作新的的安全检查表试探:安全检查表2进程AllocationNeedAvailabeAbelable+ AllocationNo  A B C&#

17、160;D A B C D A B C D A B C D P0 0 0 3 2 0 0 1 2 1 6 2 2 1 6 5 41P1 1 0 0 0 1 7 5 0 1 9 9 10

18、60;2 9 9 104P2 1 3 5 4 2 3 5 6 2 9 9 10 3 12 14 105P3 0 3 3 2 0 6 5 2 1 6 5 4 1 9 8 62P4 0 0 1 4 0 6 5

19、60;6    1 9 8 6 1 9 9 103结果又找到了一个安全序列P0、P3、P4 、P1、P2,证明系统同样是安全的。对应的安全检查表2如上。又进一步证明了吕培老师“安全序列不是唯一的,可能有多种”的观点。 问题2:如果进程P2此时提出资源申请(1,2,2,2)系统能否将资源分配给它?解:进程P2此时提出资源申请(1,2,2,2),即Request2(1 2 2 2),。先求出Available=最大资源数(1 6 2 2)- 扣除本次的资源申请数(即Request2)(1

20、2 2 2)=Available (0 4 0 0) 因为Request2(1 2 2 2) Need2(2 3 5 6), 所以P2请求在最大需求范围内;但Request2(1 2 2 2)Available2(0 4 0 0)不成立;所以,可用资源暂不能满足P2请求资源需要,P2阻塞等待。具体讲:如系统实施此次分配,使系统可用资源减到(0 4 0 0),再也无法满足各进程对资源的需求,系统进入一个不安全状态,系统不能将资源分配给进程P2。 11. “关于银行家算法”中“资源数不够”的求解设系统有4种类型的资源(A,B,C,D)和5个进程( P0,P1, P2, P3,P

21、4)。在T0时刻系统状态如下表。若采用银行家算法, T0时刻是否安全?若安全,请给出一个安全序列。  Allocation Max Available                  ABCD ABCD ABCDP0 0011 0011 1520P1 1000 1750   &

22、#160; P2 1354 2356     P3 0632 0652     P4 0014 0656     解:进程AllocationNeedAvailabeAvelable+ AllocationNo  A B C D A B C D A B C&#

23、160;D A B C D P0 0 0 1 1 0 0 0 0 1 5 2 0 1 5 3 11P1 1 0 0 0 0 7 5 0 1 11 6 3 2 11 6 33P2 1 3 5 4 1&#

24、160;0 0 2 2 11 6 3 3 14 11  74P3 0 6 3 2 0 0 2 0 1 5 3 1 1 11 6  32P4 0 0 1 4 0 6 4 2    3 14 11  7 3 14 12 185可以找到一个安全序列P0、P

25、3、P1、P2、P4,系统是安全的。 提问:为什么P0执行后,不是执行P1,而是执行P3呢?同学答:因为执行P1可用资源数不够,老师说:对的。今天我对照着读,可我还不明白,“执行P1可用资源数不够”,究竟是哪些资源不够?是 Max1=Allocation1(1 0 0 0)+Need1(0 7 5 0)=(1 7 5 0)大于Avelable+ Allocation(1 5 3 1)吗?因为我在其他例子中也碰到了类似问题,自己分辨不清,考试时会出错。故请老师具体说明。谢谢!建议这样来求解:Need1(0 7 5 0) > Available(1 5 2 0) + Max0(0

26、0 1 1 )= (1 5 3 1).具体解释一下是这样的,P1如果在P0之后执行,那么系统可用的资源则为Max0 + Available,只需要判断这两者加起来跟Need1比较就可以了。 那么,从进程P3也能直接到P4了?吕老师:按您因为Need1(0 7 5 0) > Available(1 5 2 0) + Max0(0 0 1 1 )= (1 5 3 1).即前者Need1中有B=7大于后者的B=5;有前者Need1的C=5大于后者的C=3,就认为资源不够的话。那么,从进程P3也能直接到P4了?即:P4 0 0 1 4 0

27、0;6 4 2    1  11  6  3 1  11  7  73因它的资源是够的:即Need4(0 6 4 2) Available3(1 5 3 1) + Max3(0 6 5 2)= (1 11 8 3).但实际是不可能的呀?请吕老师再指点一下。谢谢! 为什么不可以执行完P3,然后就执行P4呢,只要资源允许,这是没问题的。这里面的资源够不够,就是看每一类资源能否达到它对应的需要。 12. 题目疑问!老师,请帮忙看下下面这两道题怎么做?谢谢1.在页式存储管理中,可以用

28、位示图表示内存空闲块状况。假设字长为32位,每一位(编号为0-31)与一个内存块对应,取值可为0或1。当取值为1时表示对应块已被占用,当取值为0时表示对应块为空闲。(2) 已知某一位的字号是5,位号为14,假设字号也从0开始编号。则对应的内存块号是?(假设内存块从0开始编号)5 * 322.分时系统中,当用户数目为100时,为保证响应不超过2秒;此时的时间片最大应为。 2/10013. 下面试题,是不是选2比较好在段页式存储管理系统中时,每次从主存中取指令或取操作数,至少要访问主存。(1)1次 (2)2次 (3)3次 (4)4次(5)0次这个不是好不好的问题,是对不对的问题

29、,段页式系统中,之所以需要访问三次主存是因为,第一次访问段表,第二次访问页表,第三次访问真正的物理内存得到指令或者数据的物理地址。14. 请问逻辑地址和物理地址的两个不同之处。答: 不同点之一,逻辑地址是由编程语言、编译系统或连接程序生成的地址,在众多存储管理系统里,它往往不能直接访问物理内存;物理地址就是直接访问物理内存的地址。不同点之二,逻辑地址决定于操作系统,进程的逻辑地址空间是连续的;物理地址决定于计算机硬件系统的存储系统,物理地址空间可以是不连续的。15. 对于下面试题: 对于记录型信号量,在执行V操作(signal)时,信号量的值应当加1;当其值为4时,应唤醒阻塞队列中的进程。(1

30、)大于0;(2)小于0;(3)大于等于0;(4)小于等于0。个人理解是等于0时才会去唤醒阻塞进程,3和4有什么不同这个题目的本意是,当信号量在什么情况下执行V操作才能唤醒阻塞队列中的进程,根据信号量的定义(见课本42页),应该是(4)。0是可以的,从负值变成0也是可以的啊!16. 对于下面试题:在一单处理机系统中,若有5个用户进程,在非管态的某一时刻,处于阻塞态的用户进程最少有_个。应该是4个,这时有一个进程在执行,另外4个进程因为得不到CPU资源,故阻塞 17. 课后作业提问:做重要的是能说说您的解题思路吗?题目是这样:有三个并发进程P、Q和R以及一对供存储数据的缓冲BufI和BufO,P进

31、程把数据输入BufI,R进程输出BufO中的数据。Q进程把BufI中的数据变换后送入出BufO,在上述假定之下,使三分进程实现最大并行性。试在下述类Pascal程序中实现位置分别填上信号量、信号量初值和P、V操作实现三个进程正确的并发执行:program ito:var BufI,BufO:buffer;_:SEMAPHORE:=_;beginparbeginprocedure Pbeginrepeat  input from io;  _  Add to BufI;  _until falseend;procedure QbeginrepeatRemo

32、ve from BufI;_transform;_Add to BufO;_until falseend;procedure Rbeginrepeat_Remove from BufO;_Output;until falseend;pareendend下面的答案是否正确?fullI,emptyI,fullO,emptyO       0,1,0,1P(emptyI) ;V(fullI);P(fullI);V(emptyI);P(emptyO) ;V(fullO);P(fullO);V(emptyO);先给

33、一些提示,若是还不确定,我再贴伪代码出来首先找出两进程并发执行时必须在执行序列上遵循的同步规则:第1条同步规则是只有当P进程“Add to BufI”后,Q进程才能来“Remove from BufI”,否则Q进程只能等待。为了满足第1条同步规则,设置一个同步信号量fullI,它是后做动作的Q进程拥有的私有资源,它是Q进程动作“Remove from BufI”成功所需的资源缓冲器BufI装满输入数据,由于初始时缓冲器BufI空,它的初值为0。后做动作的Q进程在动作“Remove from BufI”前对信号量fullI施加P操作,表示申请资源。由于它又是消耗性的资源,必须由先做动作“add

34、to BufI”的P进程在动作完成后对信号量fullI施加V操作,表示释放资源。两进程并发执行时必须在执行序列上遵循的同步规则还有三个:第二条同步规则是只有当Q进程“Remove from BufI”后,P进程才能将“add to BufI”,否则P进程也只能等待。为了满足第2条同步规则,设置另一个同步信号量emptyI,它是后做动作的进程P所拥有的私有资源,它代表的资源是缓冲器BufI空,它的初值为1 。后做动作的P进程在“add to BufI”动作前对信号量emptyI施加P操作,表示申请资源。由于它又是消耗性的资源,必须由它的合作进程Q“Remove from BufI”后对empty

35、I信号量施加V操作来释放资源。第三条同步规则是只有当Q进程“Add to BufO”后,R进程才能来“Remove from BufO”,否则R进程只能等待。为了满足第3条同步规则,设置一个同步信号量fullO,它是后做动作的R进程拥有的私有资源,它是R进程动作“Remove from BufO”成功所需的资源缓冲器BufO装满处理过的数据,由于初始时缓冲BufO器空,它的初值为0。后做动作的R进程在动作“Remove from BufO”前对信号量fullO施加P操作,表示申请资源。由于它又是消耗性的资源,必须由先做动作“add to BufO”的Q进程在动作完成后对信号量fullO施加V操

36、作,表示释放资源第四条同步规则是只有当R进程“Remove from BufO”后,Q进程才能将“add to BufO”,否则Q进程也只能等待。为了满足第4条同步规则,设置另一个同步信号量emptyO,它是后做动作的进程Q所拥有的私有资源,它代表的资源是缓冲器BufO空,它的初值为1 。后做动作的Q进程在“add to BufO”动作前对信号量emptyO施加P操作,表示申请资源。由于它又是消耗性的资源,必须由它的合作进程R在“Remove from BufO”后对emptyO信号量施加V操作来释放资源。18. SJF作业同时到达,该先执行哪个?如果同时达到,随机执行,先执行哪个都行19.

37、在一单处理机系统中,若有5个用户进程,在非管态的某一时刻,处于就绪态的用户进程最多有_个。 至少有一个进程在执行,其他的进程在等待cpu,课本的31页有管态和目态更详细的解释20. 请解释内部碎片与外部碎片的差别。答: 内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这个存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。外部碎片是处于任何已分配区域或页面外面的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于这些它们的地址不连续,或其它原因,使得系统无法满足当前申请。21. 分页式存储管理系统中,

38、进程为什么不能访问不属于它的存储空间? 答: 分页式存储管理系统中的逻辑地址由页号和页内偏移量组成。通过进程的页表才可以查到逻辑地址的页号所对应的物理页帧号。因为所有页表的内容都是由操作系统控制的,操作系统就有可能限制任一进程,仅让进程访问已经分配给它的页帧。进程根本无法访问不属于它的页面,因为该页面不在此进程的页表里。22. 操作系统如何允许进程访问不属于它的存储空间?请分析为什么可以,或为什么不可以?答: 为了让进程访问不属于它的存储空间,可以在进程页表里增加额外的页表项,这些页表项就指向那些物理空间。此法有助于进程间的通信和数据共享,使得共享进程用各自不同的逻辑地址访问相同的物理地址。23. 关于索引的问题设有一个包含1000个记录的索引文件,每个记录正好占用一个物理块。一个物理块可以存放10个索引表目。建立索引时,一个物理块应有一个索引表目,一级索引至少占用一个物理块。试问该文件至少应该建立(  ) 级索引,索引本身应占(   ) 这个索引文件中包含了1000条记录,所需要的物理块为1000块。对这1000个物理块进行地址编址,则需要1000个索引条目。每个物理块可以存放10个索引表目,所以至少需要100个物理块来存储这些表目。对这100个存储表目的物理块而言,要找到它们,必须再进行一次编址,需要10块物

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论