操作系统之p,v操作

计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件。

一、操作系统的相关定义

1、操作系统的定义:

操作系统是控制和管理计算机硬件和软件资源、合理的组织计算机流程以方便用户使用的程序的集合。

2、操作系统的特点:

(1) 并发性(阻塞)。
并发性和并行性是有区别的两个不同概念。并行性是指两个或多个事件在同一时刻发生,而并发性是指两个或多个事件在同一时间间隔内发生。并发在宏观上是同时发生的,而在微观上是交替执行的。

(2)共享性。 两种共享方式:互斥共享和在一段时间内同时共享

(3)虚拟性

(4)不确定性。多道程序环境下执行是以异步的方式进行,每个程序在何时执行,多个程序的执行顺序都是不确定的。

3、多核单CPU

目前我们计算机都是多核单CPU 或者是多核多CPU。多核单CPU是只需要一套芯片组,一套存储,多核之间通过芯片内部总线进行通信,共享使用内存。如果跑一个多线程程序,可以做到并行执行,执行速度更快,具有较高的计算能力。

二、进程的相关概念

1、进程的定义:

进程是程序的一次执行,改程序可以和其他程序并发执行;
它是一个动态的实体,在传统的计算机设计中,进程即使基本的分配单元,也是基本的执行单元。

从上面的概念可以看出。进程主要有以下几个特点:

(1)进程是一个实体。每一个进程都有自己的地址空间,一般情况下,包括文本域 数字域和堆栈。(2)进程是一个执行中的程序,具有独立性 并发性和动态性。

2、进程的组成:

3、进程的状态与转换

(1)进程的基本状态:

运行态:进程已经获得资源,并占有处理机,处理机正在执行该进程的程序。阻塞态:等待态、挂起态或者睡眠态。此时程序因为某个事件而暂时不能运行。如等待IO操作就绪态:进程等待为其分配CPU,而CPU被其他进程占用,所以暂时不能运行,但是该进程已经具备了执行的所有条件。
运行--阻塞转换:进程出让CPU,等待系统分配资源或某些事件的发生,如等待用户输入。运行--就绪:分配的CPU 时间片已经用完,或者在中断模式下,有更高优先级的进程进入系统。阻塞--就绪:处于阻塞队列的进程,当其等待的事件已发生或者等到可用资源时,进入就绪列竞争CPU。就绪--运行:进程被调用程序选中CPU。

三 进程的交互—协作和竞争

    在多道程序设计系统中,同一时刻可能有多种进程,这些进程之间存在两种基本关系:竞争关系和协作关系。

1、竞争关系 :

系统中多个进程之间彼此无关,它们不知道其他进程的存在,并且也不受其他进程的影响。由于多个进程共用一套计算机系统资源,因而,必然会出现多个进程竞争计算机资源的问题。由于相互竞争资源的进程并不交换信息,但是一个进程的执行会影响其他进程的执行。如果两个资源要访问同一资源,那么一个进程通过操作系统分配得到了该资源,另一个不得不等待,极端情况下,会造成被阻塞的进程永远得不到执行。

资源竞争出现的两个控制问题:

(1)死锁,一组进程获得了部分资源,还想要得到其他进程所拥有的资源,最终所有的进程都陷入死锁。(2)饥饿,一个进程由于其他进程总是优先于它而被无限的拖延。

2、协作关系:

某些进程完成一项任务需要分工协作,由于合作的进程都是独立的以不可确定的速度执行,这就需要相互协作的进程在某些协调点协调自己的工作。当合作进程中一个到达协调点后,在尚未得到其伙伴进程发来的信息之前,阻塞自己。直到被伙伴进程唤醒。

3、解决竞争问题的方案–进程互斥

进程的互斥是解决竞争问题的手段。进程互斥是指若干个进程要使用共享资源时,任何时刻最多允许一个进程使用,其他进程等待。直到占有资源的进程释放该资源。

注意几个名词:临界资源:称为独占资源,是指一段时间内只允许一个进程去使用的资源。

                    临界区:访问临界资源的代码称为临界区。

对临界区使用的必要准则:

(1)当若干个进程要求进入临界区时,应是一个进程进入临界区,他们不应该改互相等待而是谁都不能进入。(2)一次只允许一个进程去访问临界区,其他进程互斥的访问临界区。(3)各进程使用临界区的时间是有限的,进程必须要早有限时间内释放临界资源。

4、解决进程协作关系的方案–进程的同步

进程的同步是指两个或两个以上进程基于某个条件来协调他们的活动。
一个进程的执行依赖于另外一个进程的信息。
当一个进程没有受到另一个协作进程发来的消息是,进程会阻塞状态。

四、进程管理–P V操作

p操作和v操作是不可中断的程序段,称为原语。
P,V原语中P是荷兰语的Proberen(测试), V是荷兰语的Verhogen(增加)。

1、信号量–semaphore

信号量是一个表示资源的实体,是一个与队列有关的整型变量,信号量只支持P操作和V操作。其具体的意义如下述代码所示:

对于value取值的说明:
当:

    value >0 时:信号量可用的资源个数value=0 时:无空闲资源,无空闲进程,正在执行一个进程;value< 0时:value的绝对值代表使用该资源的阻塞进程的个数;

信号量分为私有信号量和公有信号量。

公有信号量:用于进程之间的互斥,初始值通常设定为1;

私有信号量:用于实现进程之间的同步,初始值设定为0或者n,允许进程对其实施P操作。

2、P(proberen)操作

P操作代表的是对资源的申请,其伪代码如下:


流程图如下:

3、V(verhogen)操作

V操作是释放资源的操作,其伪代码如下:

4、打印机作业详解P V操作

在并发程序中,有进程A B C 执行打印作业,但是我们拥有的打印机台数为1台,若各进程竞争使用打印机,会造成的作业的错误,因此,必须使用进程互斥的手段来解决进程竞争的状态。设定 semaphor S=1 (代表着共享资源 打印机);利用PV操作实现进程的互斥。
————————————————

以上的PV操作实现了进程的互斥。整个过程可以很好的帮助大家理解PV操作的过程。

五、经典的IPC问题

1、生产者与消费者的问题----这是一个非常好的例子,关于进程同步

问题描述:

一组生产者进程和一组消费者进程共享一块初始为空,大小确定的缓冲区,只有当缓冲区没满时,生产者进程才可以把信息放入缓冲区,否则就要等待;只有缓存区不为空时,消费者进程才能从中取出消息,否则就要等待。缓冲区一次只能一个进程访问(临界资源)。

(1)问题分析:假定生产者是面包店,消费者是购物的人,缓存区为放面包的盒子(资源);

(2)关系分析:生产者和消费者对于资源的访问时互斥的关系;生产者把面包放入盒子,消费者才可以去拿走面包,或者消费者拿走面包后,生产者在放入面包;生产者放面包与消费者那面包不能同时进行。

生产者与消费者是相互依赖的关系,只有生产者产面包,消费者才可以取走面包;只有消费者取走面包后,生产者才可以继续生产。

(3)信号量的设定:

semaphore empty=n;代表当前的空格子数,对于生产者来说,空格子是生产者的资源;semaphore full =0;代表当前具有面包的盒子数量,对于消费者来说,放面包的盒子是消费者资源这就是我们可以称为 empty 和 full 是私有信号量的原因。semaphore mutex=1 ;代表临界区互斥信号量生产者生产一个面包,就会给消费者一个通行证,告诉消费者,可以拿走面包;消费者消费一个面包,就会给生产者一个通行证,告诉生产者,可以生产面包;


代码如下:


如果生产者进程先执行P(mutex),然后执行P(empty),消费者执行P(mutex),然后执行P(fall),这样可不可以?

设想生产者进程已经将缓冲区放满,消费者进程并没有取产品,即empty = 0,当下次仍然是生产者进程运行时,它先执行P(mutex)封锁信号量,再执行P(empty)时将被阻塞,希望消费者取出产品后将其唤醒。轮到消费者进程运行时,它先执行P(mutex),然而由于生产者进程已经封锁mutex信号量,消费者进程也会被阻塞,这样一来生产者、消费者进程都将阻塞,都指望对方唤醒自己,陷入了无休止的等待。进入死锁状态。

有关读者写着、理发师的IPC问题会在下一篇进行介绍。





图解操作系统之p,v操作相关推荐

  1. 操作系统P、V操作,司机-售票员问题(c++实现)

    问题描述及信号量设定 设公共汽车上,司机和售票员的活动分别是: 司机:启动车辆–正常行驶–到站停车: 售票员:关车门–售票–开车门: 信号量(semaphore)的数据结构为一个值和一个指针,指针指向 ...

  2. 操作系统信号量与P、V操作 初步认识整理

    初步接触,若有不足之处,请各位不吝赐教.谢谢! 首先介绍:信号量 信号量包括整型信号量.结构型信号量.二值信号量. ① 整型信号量 最初,将信号量定义为一个共享的整型量,它保存可供使用的唤醒数目.如果 ...

  3. 操作系统P/V操作(V操作中的典型理解偏差)

    信号量是操作系统提供的⼀种协调共享资源访问的⽅法. 通常信号量表示资源的数量,对应的变量是⼀个整型( sem )变量. 另外,还有两个原⼦操作的系统调⽤函数来控制信号量的,分别是: P 操作:将 se ...

  4. C语言实现操作系统简单的P V操作

    C语言实现操作系统简单的P V操作 简单说明 cpp的文件,C语言的语法 代码如下 实现效果 简单说明 cpp的文件,C语言的语法 代码如下 #include "stdio.h" ...

  5. 操作系统中的信号量及P、V操作

    系统中应该有解决进程同步的一种专门机制.实际上,同步是并发进程之间在执行时序 上的一种相互制约的关系.进程互斥的实质也是同步,可把进程互斥看作是一种特殊的进程同步. 同步机制应该满足如下一些基本要求. ...

  6. 操作系统-------用P,V操作解决生产者和消费者问题(详解!!!)

    问题:         系统中有一组生产者进程和一组消费者进程,生产者每次生产一个产品放入缓冲区,消费者每次从缓冲区取出一个产品并使用(注:这里的产品可以理解成某种数据). 条件:生产者.消费者共享一 ...

  7. 操作系统P,V操作大总结(包含例题)上篇

    引言:P,V操作必须成对出现,P可简单的理解为消耗一种资源,V可简单的理解为增加一种资源. 1.用信号量实现互斥 semaphore S=1;//定义一个互斥信号量 P1(){ P(S)://加锁 进 ...

  8. 操作系统中的P-V操作(转)

    信号量是最早出现的用来解决进程同步与互斥问题的机制(也可实现进程通信),包括一个称为信号量的变量及对它进行的两个原语操作.信号量为一个整数,我们设这个信号量为:sem.很显然,我们规定在sem大于等于 ...

  9. c语言p,用C语言实现P、V操作

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 操作系统中关于信号量操作的代码示例(Linux+windows) 原文:操作系统中关于信号量操作的代码示例(Linux+windows) 有一个生产者进程 ...

最新文章

  1. Linux: TLB 查询流程
  2. python在线教学-微软推出 Python 免费在线教程视频
  3. jsonp java后台_jsonp与Java后端
  4. resultset遍历取数据_数据放在哪?如何从数据库取数据?
  5. Hive集成Mysql作为元数据时,提示错误:Specified key was too long; max key length is 767 bytes...
  6. python 查找IP地址归属地
  7. windows form参数传递过程
  8. 人工智能写诗全程测试输出的诗句
  9. 计算机网络期末课后题模2运算CRC
  10. iOS 自定义视频播放器
  11. jQuery Fancybox插件介绍
  12. java -jar -xx_java 启动方式 java -jar xx.jar
  13. 海洋cms(海洋视频内容管理系统) v12.5 bulid220618
  14. 笔记本电脑系统迁移0xc0000225
  15. 如何解决Css属性text-overflow:ellipsis 不起作用(文本溢出显示省略号)
  16. 6sp电池测试软件,小白必看!iPhone 6sp电池更换记录,续航半天变成2天,给力!...
  17. 【城北徐公之机器学习】感知机模型
  18. 柔性传感器产业化将至或将成为折叠屏背后的“黑科技”
  19. 如何快速上手Mac电脑?mac新手教程 Mac电脑新手必看
  20. 语音合成(speech synthesis)方向十一:聊一聊增量式语音合成(iTTS)进化史

热门文章

  1. 为什么labview安装后,在安装目录里没有license文件夹的解答
  2. 用VC实现洪水攻击程序
  3. 计算机基础及应用论文,计算机基础应用论文范文
  4. qnx与linux区别,实时Linux和RTOS进行比较
  5. FloTHERM 热分析PDF资料大全
  6. linux模拟手柄输入,linux下如何模拟按键输入和模拟鼠标
  7. 绝对值的意义与解题方法
  8. Angularjs2 学习笔记
  9. 更适合小朋友的儿童节礼物,在CTWing找到了
  10. Android5.0 Gallery2上编译Gallery模块出错