操作系统
1 给出一个并发程序的描述:
semaphore X1=X2=Y=1;
int c1=c2=0;
procedure f1:
p(X1)
if (++c1 = 1) p(Y)
v(X1)
compute A
p(X1)
if (--c1 = 0) v(Y)
v(X1)
procedure f2:
p(X2)
if (++c2 = 1) p(Y)
v(X2)
compute B
p(X2)
if (--c2 = 0) v(Y)
v(X2)
问computeA和computeB各自能有多少并发执行,会不会出现饿死?
2 给出一个cpu的频率,使用基于时间片的轮转队列调度,并给出了参数。求调度的效率和响应时间。
3 使用多级页表,给出一些参数,如虚实地址空间大小、页大小、页表项大小等,问:
a) 多级页表的优点
b) 如果页表限制在一个页面里,问有多少页表项?
c) 进程页表占用多少内存?
4 把一个UNIX文件卷复制到另一个磁盘上,问:
a) UNIX文件卷由哪几部分组成?
b) 只复制文件数据,包括目录之后,不能访问,为什么?
c) 终于搞好了之后,发现有重复的硬链接,为什么?
5 给出了一个使用pthread的程序代码,里面系统调用包括fork(),thread(),join()等等,中间穿插print HELLO。问最后一共打印了多少个HELLO。