计算机系统练习4

21、 操作系统是计算机系统中的一个系统软件,它管理和控制计算机系统中的资源
22、 进程主要由程序数据PCB三部分内容组成,其中PCB是进程存在的惟一标识,而数据部分也可以为其它进程共享。
23、在一个具有2个处理器的操作系统中共有n 个进程,在不考虑进程状态过渡的情况下,阻塞进程队列中最多有n个进程。某一时刻,处于执行状态的进程为0个,且当前处理机空闲,处于就绪状态的进程有n个。
24、当处理器空闲时,调度程序从就绪进程队列中选择一个进程给其分配CPU,处于阻塞状态的进程是不会获得CPU的。
25、在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,运行时间短的作业将得到优先调度;当各个作业要求运行的时间相同时,等待时间长的作业得到优先调度。
26、某系统中共有10台磁带机被 m 个进程竞争,每个进程最多要求3台磁带机,那么当m的取值为不超过4的整数时,系统不会发生死锁。
27、 设有8页的逻辑空间,每页有1024字节,它们被映射32块的物理存储区中,那么,逻辑地址的有效位是13位,物理地址至少是15位。
逻辑地址:8*1024=2^3*2^10=2^13(所以逻辑地址的后13位为“页内地址”,又叫“页内偏移量”,或“页内位移”及有效位)

物理地址:32*1024=2^5*2^10=2^15

所以最后的就是逻辑有效位是13;物理有效位是15.
 
28、 在一个分页存储管理系统中,页长为4KB,

页号

物理块号

0

3

1

4

2

6

某一作业的页表如图1所示,虚拟地址3000对应的物理地址为15288 。

因为每一页4kb,所以虚拟地址3000指的空间被包含在页号为0的空间中。而物理块号3前面一共有3个物理块(0、1、2),因此前三个物理块大小是4096*3,因此物理地址=3*4096+3000,即15288。
29、虚拟设备是通过__ SPOOLING技术把独占设备变成能为若干用户_____共享 _的设备。
30、已知某文件采用串联结构,它由10个逻辑记录组成,每个逻辑记录刚好存放于一个磁盘块上,都为1024字节,并依次存放在10、61、32、75、87、98、46、37、33和11号磁盘块上。若要存取文件相对于文件头偏移7654字节处的信息,则要访问的磁盘块块号为____37__,块内的偏移量是____486___。                                                                                                                                          1,2,3,4,1,2,5,1,2,3,4,5
试说明采用先进先出(FIFO) 、最近最少使用(LRU)和最佳置换算法(OPT)进行页面置换时,缺页次数各是多少?
答:(1)FIFO: 9次   (3分)
  (2)LRU:10次 (3分)
  (3)OPT:7次   (3分)                  

35、如图2所示,系统中有三个进程GET、PRO和PUT,共用两个缓冲区BUF1和BUF2。假设BUF1中最多可放11个信息,现已放入了两个信息;BUF2最多可放5个信息。GET进程负责不断地将输入信息送入BUF1中,PRO进程负责从BUF1中取出信息进行处理,并将处理结果送到BUF2中,PUT进程负责从BUF2中读取结果并输出。  

     Get       Buf1     Pro     Buf2     Put

    ——>     ⬜️        ——>    ⬜️    ——>    

试写出正确实现GET、PRO、PUT的同步与互斥的算法。

答:

empty1=9;//空buf1的数目
 full1=2;  //有数据的buf1的数目
empty2=5; //空buf2的数目
 full1=0;  //有数据的buf2的数目
 mutex1=mutex2=1; //互斥信号量
int main(){
Cobegin  //并发开始
 GET();
 PRO();
 PUT();
Coend   //并发结束
return 0;   } 
//GET进程
void GET(){
while(1)
{

wait(empty1);
wait(mutex1);
将信息送入buf1;
signal(mutex1);
signal(full1);

}
}     
//PRO进程
void PRO(){
while(1)
{
wait(full1);
wait(mutex1);
从buf1中取出信息;
signal(mutex1);
signal (empty1);
wait(empty2);
wait(mutex2);
将信息送入buf2;
signal(mutex2);
signal(full2);
}
}   
//PUT进程
void PUT(){
while(1)
{
wait(full2);
wait(mutex2);
从buf2中取出信息;
signal(mutex2);
signal (empty2);

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值