写在开头:
之前上网搜OS期末考试原题,基本全是软件学院的,没有计科的。这次是第一次写期末考试,希望对学弟学妹有帮助
没想到居然真的写完了,自我感觉还原度95%,基本题干都背过了
一、解答题(4*10)
1.
(1)内核模式和用户模式的区别
(2)对OS发展的帮助
(3)C语言printf语句会陷入内核态吗
(4)C语言cos(13)会陷入内核态吗
2.
抖动是什么,什么原因造成的,工作集如何预防抖动
3.
(1)虚拟存储的思想
(2)请求调页中,页表项有哪些,有什么作用
(3)让一个进程不访问不属于它的地址空间怎么做
4.
(1)设备驱动程序的作用
(2)一切皆文件的优缺点
二(35’)
1.死锁的检测
(1)给了一个4个进程+五种资源那种表,其中一个资源的量为x,问若让系统无死锁,x最小值是多少,给出推理过程
(2)死锁必要条件是什么,银行家算法破坏了哪些(个)条件
2.(15’)
给了两条C语言程序语句,一个是打开file.txt文件,另一条是读入一个字符,并赋值到变量c中
(1)写出从拿到file.txt开始,到赋值结束过程中,OS都干了什么
(2)这个过程中,用到了哪些文件管理的数据结构
3.
给了编程代码
int main()
{
pid_t pid1,pid2;
pid1 = fork();
pid2 = fork();
printf(“hello,world”);
return 0;
}
问一共输出几次hello,world,给出进程树,并给出解释
三、计算编程题
1.
给了一个优先级priorty,刚开始设为nice,优先级调度法,进程被调度时,cputime每单位时间+1,waittime置零;进程等待时,cputime置零,waittime每单位时间+1
(1)若priority就设为nice,不变,则会可能有饥饿,为什么
(2)给出一个动态优先级算法,保证不饥饿,waittime在其中作用是什么
2.
给一段代码
作用是,复数的struct,定义复数的加法算法,有三个线程。x,y,z是三个复数,是全局变量
线程1:有局部变量m,m=x+y
线程2:有局部变量m,m=y+z
线程3:有局部变量m,m=(1,1),y = y+m,z = z+m
请增加条件变量,并用wait和signal来使得线程可以最大限度并发,且互不干扰