青青 发表于 2023-2-21 14:04:48

北理工23春《操作系统》模拟题

《操作系统》模拟题

1.试说明操作系统与硬件、其他系统软件以及用户之间的关系。
答:操作系统是覆盖在硬件上的第一层软件,它管理计算机的硬件和软件资源,并向用户提供良好的界面。操作系统与硬件紧密相关,它直接管理着硬件资源,为用户完成所有与硬件相关的操作,从而极大地方便了用户对硬件资源的使用,并提高了硬件资源的利用率。操作系统是一种特殊的系统软件,其他系统软件运行在操作系统基础之上,可获得操作系统提供的大量服务,也就是说,操作系统是其他系统软件和硬件的接口。而一般用户使用计算机除了需要操作系统支持外,还需要用到大量的其他系统软件和应用软件,以使其工作更加方便和高效。

2. 某工厂有一个可以存放设备的仓库,总共有8个位置可以存放8台设备。生产部门生产的每一台设备都必须入库。销售部门可以从仓库提出设备供应客户。设备的出库和入库都必须借助运输工具。现在只有一套运输工具,每次只能运输一台设备,系统共使用三个信号量,S代表互斥信号量,表示运输工具;S1和S2均为同步信号量,S1表示仓库中可以存放设备的空闲位置,S2表示仓库中已经被设备占用了的位置。请设计一个能协调工作的自动调度管理系统,并利用记录型信号量写出解决此问题的程序代码,请注明信号量的初值。
答:Var S,S1,S2:semaphore:=1,8,0;
          buffer:array of item;
parbegin
A:begin
        repeat
        生产设备;
        p(S1);
        p(S);
        把设备送入仓库
        v (S);
        v(S2);
        until false;
end
B:begin
        repeat
        p(S2);
        p(S);
        从仓库取出一台设备
        v (S);
        v(S1);
    把设备销售给客户
        until false;
    end       parend
end

3. 简述产生死锁的四个必要条件是什么?
答:产生死锁的四个必要条件是:
(1)互斥条件。进程要求对所分配的资源进行排他性控制,即在一段时间内某资源仅为一进程所占有。
(2)请求和保持条件。当进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不剥夺条件。进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完后由自己释放。
(4)环路等待条件。在发生死锁时,必然存在一个进程—资源的环形链。

4.生产者-消费者(Producer-Consumer)问题是著名的进程同步问题,它描述一组生产者向一组消费者提供消息的过程。生产者和消费者共享一个有界缓冲池,生产者向其中投放消息,消费者从中取得消息。假设缓冲池中有n个缓冲区,每个缓冲区存放一个消息,可利用互斥信号量mutex使诸进程对缓冲池实现互斥访问;利用empty和full计数信号量分别表示空缓冲及满缓冲的数量。又假定这些生产者和消费者互相等效,只要缓冲池未满,生产者可将消息送入缓冲池;只要缓冲池未空,消费者可从缓冲池取走一个消息。请利用记录型信号量写出解决此问题的程序代码。
答案:
Var mutex,empty,full:semaphore:=1,n,0;
          buffer:array of item;
    in,out:integer:=0,0;
    begin
                parbegin
Producer:begin
        repeat
        …
        produce an item nextp;
        …
        p(empty);
        p(mutex);
        buffer(in):=nextp;
        in:=(in+1) mod n; //in指针后移,循环缓冲区
        v (mutex);
        v(full);
        until false;
    end   
Consumer:begin
        repeat
        p(full);
        p(mutex);
        nextc:=buffer(out);
        out:=(out+1) mod n;
        v (mutex);
        v(empty);
        consume the item in nextc;
        until false;
    end      
      parend
end

5. 在银行家算法中,若出现下面的资源分配情况:
Process      Allocation   Need      Available
       P0            1 0 2 2      1 0 5 4   1 6 2 3
       P1            1 0 0 1      1 7 5 0   
       P2            1 3 5 4      0 3 5 10
       P3            0 1 1 2      0 2 3 2
       P4            0 0 2 4      0 0 2 2
试问:
(1)此刻该状态是否安全?
(2)若P1发出请求Request(1,3,2,0)后,系统能否将资源分配给它?
答:
(1)利用安全性算法对上面的状态进行分析,如下图所示,可以找到安全序列{P4,P3,P0,P2,P1},故系统是安全的。
Process   Work   Need    Allocation   Work+ Allocation   Finish
P4      1623      0022       0024          1647            True
P3   1647      0232       0112          1759            True
P0      1759       1054       1022         277 11            True
P2    277 11      035 10   1354          3 10 12 15          True
P1    3 10 12 15      1750       1001      4 10 12 16       True
(2)P1发出请求Request(1,3,2,0)后,系统按银行家算法进行检查:
        1)Request(1,3,2,0)<= Need(1750)
        2)Request(1,3,2,0)<= Available (1623)
        3)系统先假定可为P1分配资源,并修改Available,Allocation和Need向量:
Available= (0303)
        Allocation=(2321)
        Need=(0430)
        4)进行安全性检查:此时对所有的进程,条件Need〈= Available(0303)都不成立,即Available不能满足任何进程的请求,故系统进入不安全状态。
        因此,P1发出请求Request(1,3,2,0)后,系统不能将资源分配给它。



页: [1]
查看完整版本: 北理工23春《操作系统》模拟题