操作系统复习笔记(二)

本文探讨了在操作系统中如何实现A、B两组进程共享文件的并发访问控制。通过设置计数器C1和C2,以及信号量S1、S2和SAB,确保同一组进程可以同时读取文件,而不同组的进程在有其他组进程读取时被阻塞,从而实现并发访问的安全性。
摘要由CSDN通过智能技术生成

1.问答题:有一个文件F,有A,B两组进程共享这个文件,同组的进程可以同时读文件F,但当有A组(或B组)的进程在读文件F时就不允许B组(或A组)的进程读,

解:定义两个计数器C1,C2,分别记录A组和B组中读文件的进程数,三个信号量S1,S2,SAB,其中S1用于通知A组进程已经有B组进程在读文件F了,S2用于通知B进程已经有A进程在读文件F了,SAB用于实现对共享变量C1和C2以及临界区的互斥访问.

begin
            var S1,S2,SAB:semaphore 
=   1 , 1 , 1 ;
                 C1,C2:integer 
=   0 , 0 ;

                   process A
- i(i = 1 , 2 )
                    begin
                       repeat
             P(SAB);
                   C1 
=  C1 + 1 ;
             
if (C1 = 1 ) then P(S2);
             V(SAB);
              读文件F;
             P(SAB)
             C1 
=  C1 - 1 ;
             
if (C1 == 0 )V(S2)
             V(SAB)  
                until 
false
                    end      
    

                   process B
- i(i = 1 , 2 )
                    begin
                       repeat
             P(SAB);
                   C2 
=  C2 + 1 ;
             
if (C2 = 1 ) then P(S1);
             V(SAB);
              读文件F;
             P(SAB)
             C2 
=  C2 - 1 ;
             
if (C2 == 0 )V(S1)
             V(SAB)  
                until 
false
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值