操作系统总结--进程同步,互斥,信号量机制,生产者消费者

同步

同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某
些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互
合作。

互斥

我们把一个时间段内只允许一个进程使用的资源称为临界资源。许多物理设备(比如摄像头、打印机)都
属于临界资源。此外还有许多变量、数据、内存缓冲区等都属于临界资源。
对临界资源的访问,必须互斥地进行。
互斥,亦称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。
在这里插入图片描述

进程互斥的软件实现方法

在这里插入图片描述

进程互斥的硬件实现方法

在这里插入图片描述

信号量机制

信号量其实就是一个变量 (可以是一个整数,也可以是更复杂的记录型变量) ,可以用一个信号量来表示系统中某种资源的剩余数量(信号量的值如果小于0,说明此时有进程在等待这种资源), 比如:系统中只有一台打印机,就可以设置一个初值为 1 的信号量。

原语是一种特殊的程序段,其执行只能一气呵成,不可被中断。原语是由关中断/开中断指令实现的。软件解决方案的主要问题是由“进入区的各种操作无法一气呵成”,因此如果能把进入区、退出区的操作都用“原语”实现,使这些操作能“一气呵成”就能避免问题。

一对原语:wait(S) 原语和 signal(S) 原语,可以把原语理解为我们自己写的函数,函数名分别为 wait和signal,括号里的信号量 S 其实就是函数调用时传入的一个参数。wait、signal 原语常简称为 P、V操作(来自荷兰语 proberen 和 verhogen)。因此,做题的时候常把wait(S)、signal(S) 两个操作分别写为 P(S)、V(S)

  • P( S ) —— 申请一个资源S,如果资源不够就阻塞等待, 剩余资源数减1
  • V( S ) —— 释放一个资源S,如果有进程在等待该资源,则唤醒一个进程, 剩余资源数加1
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

生产者消费者问题

生产者、消费者共享一个初始为空、大小为n的缓冲区。

  • 只有缓冲区没满时,生产者才能把产品放入缓冲区,缓冲区满时,生产者必须等待。
  • 只有缓冲区不空时,消费者才能从中取出产品,缓冲区空时,费者必须等待。
semaphore mutex = 1; //互斥信号量,实现对缓冲区的互斥访问
semaphore empty = n;//同步信号量,表示空闲缓冲区的数量
semaphore full = 0;//同步信号量,表示产品的数量,也即非空缓冲区的数量

互斥: 在临界区前后分别PV
同步: 前V后P
在这里插入图片描述
在这里插入图片描述

多生产者多消费者

在这里插入图片描述
在这里插入图片描述

结论:即使不设置专门的互斥变量mutex,也不会出现多个进程同时访问盘子的现象
原因在于:本题中的缓冲区大小为1,在任何时刻,apple、orange、plate 三个同步信号量中最多只有一个是1。因此在任何时刻, 最多只有一个进程的P操作不会被阻塞,并顺利地进入临界区…

在这里插入图片描述

吸烟者问题

在这里插入图片描述
在这里插入图片描述

读者写者问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

哲学家进程

在这里插入图片描述

管程

管程是一种特殊的软件模块,由这些部分组成:

  1. 局部于管程的共享数据结构说明;
  2. 对该数据结构进行操作的一组过程;
  3. 对局部于管程的共享数据设置初始值的语句;
  4. 管程有一个名字。

跨考Tips: “过程”其实就是“函数”

管程的基本特征:

  1. 局部于管程的数据只能被局部于管程的过程所访问;
  2. 一个进程只有通过调用管程内的过程才能进入管程访问共享数据;
  3. 每次仅允许一个进程在管程内执行某个内部过程。
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值