以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 计算机考研交流 』   (http://bbs.xml.org.cn/list.asp?boardid=67)
----  06年os试题及我的答案(更新版)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=67&rootid=&id=33097)


--  作者:Supremgoooo
--  发布时间:5/26/2006 2:37:00 PM

--  06年os试题及我的答案(更新版)
06年os试题部分及我的答案,所有题目与原试卷一字不差

六,操作系统问答题(共40分)
1.(10分)请描述中断响应过程,并说明操作系统对该过程提供什么支持。

答:该题的权威答案(陈向群教授版)是:
(i)保护现场,恢复现场
(ii)为中断处理做好准备

2.(每小题8分,共16分)关于存储管理:
(1)地址转换过程中快表(TLB)的作用,特点和内容.

答:引入快表主要是为了提高地址变换的速度。
  以页式变换中的快表为例,它其实是页表的一个子集,里面保存了最近一段时间内访问的页面项,其表项包括了找到一页的所有特征,快表与页表本质上构成了一个二级存储体系结构。根据程序访问的局部性原理,快表中的页面在将来是很有可能被访问到的。在地址变换的过程中,快表和页表被同时查找,由于快表相对于页表很小,且一般采用sram制作,如果命中,则大大提高了查找速度。如果没有命中,则需要将被访问页面表项复写到快表中,这一过程可以这样进行:如果快表未满,则直接写入;如果快表已满,需要采用某种替换算法加以解决,而具体的算法可能增加快表的表项,例如在LRU算法中需要设置访问计数器。

(2)提出工作集模型是为了解决什么问题?举例说明该模型对软件编程人员的影响.

答:工作集模型某个进程经常使用页面数的最小值。它的提出,一方面减少了程序缺页中断的次数,另一方面也提高了内存的使用效率。
  其对编成人员影响大致有三个方面:
  (i)作为一名计算机工作人员,要充分认识到程序访问局部性原理在各个方面的应用。
  (ii)在编程时要把常用的函数模块化,要把它们尽量放在一起;在程序中尽量不出现大范围的跳转语句或明显不合常规的语法,以提高程序执行速度。
  (iii)和cache的选取原则一样,要深刻的领悟“过犹不及”在整体设计时的重要性,任何项目都要追求最高的性价比。

3.(14分)试设计一个多级目录结构,要求目录检索速度快.请详细描述你的方案.

答:(i)参考nuix的三级索引结构:在根目录块的前12项中直接存放文件地址;13项指向一级索引表,一级索引表给出256个磁盘地址;14项指向二级索引表,二级索引表给出256个一级索引表地址;15项指向三级索引表,三级索引表给出256二级索引表地址。
(ii)采用文件的目录项分解法,把文件名与文件号单独拿出,以便在一个磁盘块中存放更多的文件,从而减少平均访盘次数
(iii)把各文件在索引结构中尽量按照访问概率排放,把经常访问的文件放到直接索引项中。增加常驻内存的索引表数,考虑将多个索引表常驻内存。要对最近访问到的文件进行缓存。
(iv)可以对磁盘进行散列处理,通过硬件实现的散列函数实现文件查找。

七.操作系统应用题(共16分)
1.(10分)在一个多道程序系统中,采用最高相应比优先算法调度作业.现有如下表所示的作业序列,请列出各个作业的开始时间,完成时间和周转时间.注意:忽略系统开销.
作业名     进入输入井的时间  估计运行时间   
JOB1       8:00         70分钟        
JOB2       8:20         20分钟        
JOB3       8:40        40分钟        
JOB4       8:50         30分钟        
JOB5   9:00    10分钟

答:
作业名    进输入井时间     运行时间    开始时间    完成时间  周转时间(m)
job1   8:00   8:00-8:40    8:00
            10:20-10:50   10:20   10:50   170
job2   8:20     8:40-9:00  8:40    9:00      40
job3   8:40     9:00-9:40    9:00    9:40   60
job4   8:50     9:50-10:20   9:50    10:20    90
job5   9:00     9:40-9:50    9:40    9:50    50    

2.(6分)假设一个活动头磁盘有200道,编号从0-199。当前磁头正在155道上服务,并且在此之前完成的是173道的访盘请求。现有如下访盘请求序列(磁盘号):
75,168,81,138,87,143,187,129,198,44
试给出采用下列算法后磁头移动的顺序和移动总量(总磁道数)。
(i)最短寻道时间优先(SSTF)磁盘调度算法。
(ii)扫描法(SCAN)磁盘调度算法(假设沿磁头移动方向不再有访问请求时, 磁头沿相反方向移动。)
答:(i)SSTF
磁头移动顺序:
155,143,138,129,168,187,198,87,81,75,44
移动总量:首先划分分成三段(155~129,129~198,198~44),然后计算,移动总量为(155-129)+(198-129)+(198-44)=249
(ii)SCAN
磁头移动顺序:
155,143,138,129,87,81,75,44,168,187,198
移动总量:只需要划分成两段(155~44,44~198),移动总量为(155-44)+(198-44)=265

八. P,V操作题(14分)
一个经典的IPC问题发生在牙科诊所.诊所里有3位牙医,3张诊椅和10把供等候就诊病人坐的椅子.如果没有病人,牙医们就坐在诊椅上聊天或休息.病人到来时,选择一名牙医为他治疗;如果牙医们都在看病人,他就坐下来等候;如果诊所病人已满,没有空椅子,他就离开.请编写牙医和病人的进程,要求正确实现该进程的同步互斥问题。
答:
semaphore seatNum=10; //表示可用的椅子数量
semaphore waitNum=0;  //表示等待看病的人数
semaphore freeNum=3;  //表示空闲的牙医数量
semaphore mutex=1; //用来对count保护
int count=0;

void Patient_i()
{
   P(mutex);
     if(count>=13)
     { 
       V(mutex);
       return; //离开
     }
     else
     {
       count++;
       进入;
     }
        V(mutex);
        P(seatNum);//先占个椅子
        V(waitNum);
        P(freeNum);
        V(seatNum);
        被看病;
        P(mutex);
           count--;
        V(mutex);
        return;
}
void Dentist_i()
{
    while(true)
    {
              P(waitNum);
              看病;
              V(freeNum);
         }
}


[此贴子已经被作者于2006-7-24 21:46:35编辑过]

--  作者:teng_t1986
--  发布时间:5/28/2006 6:38:00 PM

--  
学长你os答得不错哦……
我现在算法题倒不怕,就是简答题总答不好,其实概念都清楚,就是表达欠缺……
学长可以介绍下os经验吗?
--  作者:Supremgoooo
--  发布时间:5/28/2006 10:20:00 PM

--  
多做真题,多联想,能写的都写吧
要是《计算机系统结构》学的很好的话,答这些就很容易了
--  作者:teng_t1986
--  发布时间:5/31/2006 9:25:00 AM

--  
是《计算机系统结构》?那不是硬件方面的课吗?我们还没开那门课哦……不清楚啊,看来要找时间自己看看……
--  作者:Supremgoooo
--  发布时间:5/31/2006 1:41:00 PM

--  
软硬分界面吧,也有些软件东西。
我指清华郑纬民老师那本巨作,有空看下3,4章,正好和北大的os互补,没空就算了。
--  作者:teng_t1986
--  发布时间:6/1/2006 7:15:00 AM

--  
谢谢学长!我有空会去看看的。
--  作者:oov
--  发布时间:6/3/2006 3:50:00 PM

--  
hennessy ,patterson的computer architecture" a quantitative approach
--  作者:樱之蝶舞
--  发布时间:7/19/2006 9:46:00 PM

--  
(1)有一个多道的批处理操作系统,作业调度采用最高相应比调度算法,有如下的作业序列:
作业     进入时间  估计运行时间   
JOB1      8:00      70分钟        
JOB2      8:20      20分钟        
JOB3      8:40     40分钟        
JOB4      8:50      30分钟        
JOB5  9:00 10分钟
列出所有作业开始时间,完成时间和周转时间。注意:忽略系统开销
答:
作业   进输入井时间   进内存时间  运行时间      结束时间  总耗时(m)


我做了下,不知道对不对," 进输入井时间""进内存时间"我们不这么说,我把他理解为了"到达时间"和"开始时间"

  作业      到达时间    开始时间    运行时间    结束时间   总耗时
JOB1      8:00           8:00          70分钟      9:10         70分钟
JOB2      8:20           9:10          20分钟      9:30         70分钟
JOB5      9:00         9:30          10分钟      9:40         40分钟
JOB4      8:50           9:40          30分钟      10:10       80分钟
JOB3  8:40           10:10        40分钟      10:50       130分钟

这个好象是非抢占式的,抢占式的 ..

[此贴子已经被作者于2006-7-19 22:58:43编辑过]

--  作者:Supremgoooo
--  发布时间:7/20/2006 10:47:00 PM

--  
关键是cpu什么时间来计算满足优先抢占的公式,我认为发生在两个时间:
(1)新作业到达(2)cpu空闲
于是这个题就可以做了
--  作者:carroty
--  发布时间:7/25/2006 10:12:00 AM

--  
多谢了~
--  作者:shenfuquan
--  发布时间:8/20/2006 4:49:00 PM

--  
(1)有一个多道的批处理操作系统,作业调度采用最高相应比调度算法,有如下的作业序列:
作业     进入时间  估计运行时间   
JOB1      8:00      70分钟        
JOB2      8:20      20分钟        
JOB3      8:40     40分钟        
JOB4      8:50      30分钟        
JOB5  9:00 10分钟
列出所有作业开始时间,完成时间和周转时间。注意:忽略系统开销
答:

我的解题思路如下:
假设一次只允许两个作业进入内存;作业调度采用最高响应时间比调度算法,而进程调度可假设用最高优先级调度算法(作业运行时间短的,其优先级高),并且采用不可抢占式调度算法:

作业名   开始时间    完成时间  周转时间(m)
JOB1      8:00        9:10       70
JOB2      9:20        9:40       80
JOB3     10:10       10:50     130
JOB4     9:40         10:10     80
JOB5   9:10        9:20       20



--  作者:Supremgoooo
--  发布时间:8/20/2006 7:17:00 PM

--  
(1)解本题不需要那么假设,因为那么假设后就变成另外一个题了。

(2)假如题目中有:假设一次只允许两个作业进入内存;作业调度采用最高响应时间比调度算法,而进程调度可假设用最高优先级调度算法(作业运行时间短的,其优先级高),并且采用不可抢占式调度算法
则你做的也是不对的。

按照你做的应该这样假设:
假设允许多个作业进入内存;作业调度采用最高响应时间比调度算法,而进程调度可假设用最高优先级调度算法(作业运行时间短的,其优先级高),并且采用不可抢占式调度算法。


--  作者:wuyunqingkong
--  发布时间:9/24/2006 12:59:00 PM

--  
thanks!
--  作者:aison
--  发布时间:9/24/2006 4:32:00 PM

--  
书上有道题 多道短作业优先的题中没有被抢占。
这道题为什么要被抢占?能解释下么?
--  作者:Supremgoooo
--  发布时间:9/24/2006 11:52:00 PM

--  
有理,我也这样想过,考虑到这道题的一般性我才在抢占的基础上作的,如果不抢占的答案我认为:对。这个要最好找老师确定一下。


以下是引用aison在2006-9-24 16:32:00的发言:
书上有道题 多道短作业优先的题中没有被抢占。
这道题为什么要被抢占?能解释下么?


--  作者:aison
--  发布时间:9/26/2006 5:36:00 PM

--  
我又看了下书上那两道的短作业优先的题   发现第二个作业进道后是抢占了第一个作业的CUP的。第三个没抢第二个作业的是因为只有两道 它没能进内存。
所以你的做法应该是正确的。

还有就是最后一道PV操作  好象应该考虑到先来先看病  就是每个等待的椅子之间设个信号量
用个循环吧


--  作者:carroty
--  发布时间:1/7/2007 8:38:00 PM

--  
认真的看了下这个作业调度的题,

觉得Supremgoooo关于调度时机的说法很有道理.否则这个题还真不好做.精辟精辟!!

:)

不过如果理解为不可抢占,似乎更好做,而且比抢占方式更加简单明了.

不过,今年应该不会继续考这个了.


--  作者:liuyan1031
--  发布时间:3/2/2007 1:20:00 PM

--  
想考北大计算机!
--  作者:kevinduck
--  发布时间:3/22/2007 10:36:00 AM

--  
又见高人
--  作者:joy
--  发布时间:4/9/2007 12:06:00 AM

--  最高响应比调度好像是非抢占的
学习
--  作者:zshao
--  发布时间:11/29/2007 1:39:00 AM

--  
最后一个PV操作题,是不是

必须先做到坐到座位上,才可以被理发师叫去理发?
哪怕只有一个顾客,也是必须先做座位上么?


--  作者:mumuok
--  发布时间:11/29/2007 2:30:00 PM

--  
应该不考虑cpu抢占吧,根本没提进程调度的方式什么的呀
--  作者:okdavinci
--  发布时间:12/30/2007 11:01:00 PM

--  
应该不会考虑抢占调度吧。
--  作者:jason_00
--  发布时间:12/31/2007 1:21:00 PM

--  
应该是要这样的,它把全部可能都包括进去了,如果分开来讨论也是可以的,不过比较复杂了---
--  作者:hongchenmoo
--  发布时间:3/20/2008 11:15:00 AM

--  
xx
--  作者:litong1981
--  发布时间:7/2/2008 5:21:00 PM

--  
zan
--  作者:lanqier
--  发布时间:7/18/2008 7:34:00 PM

--  
谢谢楼主,太好了~~
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
156.250ms