每次笔试,我都在操作系统的计算题中大费脑筋,以前学操作系统的时候,确实没有怎么做题。其实,各大公司出的题目都是作业题目,这一点我很不占优势。
1.页式存储管理地址转换问题
http://www.isenyo.com/?p=9
若在一分页存储管理系 统中,某作业的页表如下所示。已知页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转 化为相应的物理地址。
页号 块号
0 2 1 3 2 1 3 6 页式存储管理的地址结构是一维的,即逻辑地址(或物理地址)只用一个数值即可表示。若给定逻辑地址A, 页面的大小为L,则页号p和页内地址d可 按照下式求得:p=int [A/L] d=A mod L;其中,int是 取整函数(取数值的整数部分),mod是取余函数(取数值的余数部分)。
物 理地址=块的大小(即页的大小L)´块号f+ 页内地址d
设 页号为p,页内位移为d,则: (1)对于逻辑地址1011,p=int(1011/1024)=0,d=1011 mod 1024=1011。查页表第0页 在第2块,所以物理地址为1024´2+1011=3059。 (2)对于逻辑地址2148,p=int(2148/1024)=2,d=2148 mod 1024=100。查页表第2页 在第1块,所以物理地址为1024+100=1124。 (3)对于逻辑地址4000,p=int(4000/1024)=3,d=4000 mod 1024=928。查页表第3页 在第6块,所以物理地址为1024´6+928=7072。 (4)对于逻辑地址5012,p=int(5012/1024)=4,d=5012 mod 1024=916。因页号超过页表长度,该逻辑地址非法。
2.死锁的资源个数上限计算问题(2012淘宝和腾讯的笔试均有这道题)
说有 6 个进程,每个进程需要 5 个同样资源才能运行,问系统中至少要几个资源才能保证不出现死锁?
应该是25个。因为有6个进程,每一个进程即使分到4个同样资源依旧无法执行,它是等待另一个资源,所以依次可推出6个进程如果都分配4个资源的话依旧是死锁,无法运行。如果任意一个进程获得一个资源后,则该进程可得到运行,然后释放该进程所占用的5个资源,让其它进程得以利用资源。综上所述可以看出必须有25个同样资源才可不会出现死锁现象。
3.如逻辑地址32位,页面大小4KB,则页表项为多少?为什么?
32的逻辑地址,分成两部分。前部分是代表虚拟的页号,后部分代表的是虚拟页偏移量,如果页面是4KB的话,那么这个后部分虚拟页偏移量占了12位,那么前面就是32-12=20位。这20位就是页表中所有的页表项的和。就是2的20次方,也就是1M个页表项,如果每个页表项占4B的话。那么这个页表就占了4MB的空间。一般都会有两级甚至更多的。用来减少页表占的空间。。。。。
补充:
在分页系统中页面大小 由硬件决定。
页表的作用 是实现从页号到物理块号的地址映射。
逻辑地址转换成物理地址的过程是 :用页号p去检索页表,从页表中得到该页的物理块号,把它装人物理地址寄存器中。同时,将页内地址d直接送人物理地址寄存器的块内地址字段中。这样,物理地址寄存器中的内容就是由二者拼接成的实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。
4.阿姆达尔定律的计算问题
当时我清楚地把这个公司想起来了。但是竟然算出来没有答案,2012腾讯的笔试题目
加速比 = 1 / {1 - 改进部分占的比例 + (改进部分占的比例 / 改进部分性能提高的倍数)}
题目:
在计算机系统中,某一功能的处理时间为整个系统运行时间的50%,若使该功能的
处理速度加快10倍,根据Amdahl定律,这样做可以使整个系统的性能提高
解答:系统总体性能提高倍数 = 1 / {1 - 0.5 + (0.5 / 10)} = 1.81818181