计算机操作系统(慕课版)第四章 进程同步 学习笔记

本文详细阐述了进程同步的概念,包括临界区、进程互斥和不同类型的同步机制如信号量、管程。重点介绍了信号量的使用,包括其数据结构、P-V操作以及AND型信号量。此外,还涉及了管程机制在并发编程中的应用,举例了生产者消费者问题、哲学家就餐问题和读者-写者问题来说明其在实际问题中的应用。
摘要由CSDN通过智能技术生成

第四章 进程同步

在这里插入图片描述
1.1 进程的互斥
临界资源:系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。在进程中涉及到临界资源的程序段叫临界区。

临界区:每个进程中访问临界资源的那段代码。

进程互斥:执行临界区的若干个进程必须互斥的进入。

1.2 进程的同步
进程同步:指为完成同一任务的诸进程间进行的某些协调工作,从而起到相互制约的作用。

1.3 进程同步机制
软件同步机制,硬件同步机制,信号量同步机制,管程机制

1.4 信号量同步机制(教材P116)
信号量(semaphore)——用于表示资源数目或请求使用某一资源的进程个数的整形量

  • 是一个数据结构
  • 定义如下:
    typedef struct {
    int value;
    stuct process_control_block *list;
    }semaphore;
    信号量数目代表临界资源的数目
  • 而用来修改信号量的语句称为P,V原语。

wait()进行一次wait操作意味着请求分配一个单位资源。
signal()进行一次V操作意味着释放一个单位资源。

1.5 value的物理含义

  • P(S):表示申请一个资源
  • V(S)表示释放一个资源。信号量的初值应该大于等于0
  • S>0表示有S个资源可用
  • S=0表示无资源可用,无等待进程
  • S<0则| S |表示S等待队列中的进程个数

1.6 信号量的使用
必须且只能置一次初值
初值不能为负数
只能执行P、V原语进行修改

1.7 AND型信号量
定义:AND型信号量是指同时需要多种资源且每种占用一个时的信号量操作。

基本思想:在一个原语中申请整段代码需要的多个临界资源,要么全部分配给它,要么一个都不分配。
AND型信号量集P原语为Swait
AND型信号量集V原语为Ssignal

2.1 管程机制
采用P-V同步机制来编写并发程序,对于共享变量及信号量变量的操作将被分散于各个进程中。

2.2 管程的概念
定义1:一个关于共享资源的数据结构,和能为并发进程执行的一组操作,这组操作能同步进程和改变管程中的数据。
定义2:管程是由局部于自己的若干公共变量及其说明和所有访问这些公共变量的过程所组成的软件模块。
管程的重要特征:任一时刻管程中只能有一个活跃进程。(可以有效实现互斥)

2.3 管程机制
示意图
在这里插入图片描述
3.1 生产者消费者问题
教材P123
3.2 哲学家就餐问题
教材P126
3.2 读者—写者问题
教材P129

关于信号量的内容是考试的重点,详读教材后写课后习题

这一章考大题-信号量,看大题例题,习题和考题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值