原语怎么用(操作系统三个基本原语)

1.操作系统三个基本原语

PV原语通过操作信号量来处理进程间的同步与互斥的问题。其核心就是一段不可分割不可中断的程序。

信号量的概念1965年由著名的荷兰计算机科学家Dijkstra提出,其基本思路是用一种新的变量类型(semaphore)来记录当前可用资源的数量。有两种实现方式:1)semaphore的取值必须大于或等于0。0表示当前已没有空闲资源,而正数表示当前空闲资源的数量;2) semaphore的取值可正可负,负数的绝对值表示正在等待进入临界区的进程个数。

信号量是由操作系统来维护的,用户进程只能通过初始化和两个标准原语(P、V原语)来访问。初始化可指定一个非负整数,即空闲资源总数。

P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞;

V原语:V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒之。

具体PV原语对信号量的操作可以分为三种情况:

1)把信号量视为一个加锁标志位,实现对一个共享变量的互斥访问。

实现过程:

P(mutex); // mutex的初始值为1 访问该共享数据;

V(mutex);

非临界区

2)把信号量视为是某种类型的共享资源的剩余个数,实现对一类共享资源的访问。

实现过程:

P(resource); // resource的初始值为该资源的个数N 使用该资源;

V(resource); 非临界区

3)把信号量作为进程间的同步工具

实现过程:

临界区C1;

P(S);

V(S);

临界区C2;

2.P原语和V原语的含义,如何用PV操作解决同步和互斥

p原语为申请资源

v原语为释放资源

pv操作必须成对出现

通过对信号量的互斥修改

信号量为s,当需要进行互斥的时候s 初值为1(也不是绝对的,但是这个是通常情况)

p操作就是

s-1

如果s>= 0 就使用资源

否则就挂起等待

v操作就是s+1

如果s否则什么都不做

通常临界量的代码都是这样的(互斥)

s = 1

进程1:

p(s)

临界代码

v(s)

进程2:

p(s)

临界代码

v(s)

可以看出来,当又一个进程占领资源的时候,另一个进程被挂起,是不可以访问资源的,完成了互斥

而实现同步的代码是

先设s= 0;(同步信号量)

s' = 1;(互斥信号量)

进程1:

p(s')

临界代码

v(s)

进程2:

p(s)

临界代码

v(s')

可以看到,在第一个进程准备完成之前第二个进程无法使用资源,而在第一个进程准备完成之后,第二个进程消耗掉第一个进程的资源之前,第一个进程也不能再生产资源。

3.在xilinx 中怎么用iddr2的原语

IDDR2 #(.DDR_ALIGNMENT("NONE"), .INIT_Q0(1'b0), .INIT_Q1(1'b0),.SRTYPE("SYNC") )

IDDR2_sclk (

.Q0(), // 1-bit output captured with C0 clock

.Q1(), // 1-bit output captured with C1 clock

.C0(), // 1-bit clock input

.C1(), // 1-bit clock input

.CE(1'b1), // 1-bit clock enable input

.D(), // 1-bit DDR data input

.R(1'b0), // 1-bit reset input

.S(1'b0) // 1-bit set input

);

就这么用就行了

4.计算机操作系统的原语

pv(进程通信的两种操作)

P: 荷兰语Passeren,相当于英文中的pass;

V: 荷兰语的Verhoog,相当于英文中的increment(增量).

我们规定在信号量sem

【大于等于零】的时候代表【可供并发进程使用的资源实体数】。

【小于零】的时候,表示正在【等待使用临界区的进程】的个数。

P原语操作的动作是:

(1) sem减1;

(2) 若sem减1后仍大于或等于零,则进程继续执行;

(3) 若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。

V原语操作的动作是:

(1) sem加1;

(2) 若相加结果大于零,则进程继续执行;

(3) 若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。

5.怎么用上锁和开锁原语实现互斥售票窗口问题

class CSimpleLock { public: // 上锁 CSimpleLock(HANDLE hMutex) { m_hMutex = hMutex ; WaitForSingleObject(hMutex, INFINITE) ; } // 开锁 ~CSimpleLock() { ReleaseMutex(m_hMutex) ; } private: HANDLE m_hMutex ; }; 要使用这个类别,您必须传给CSimpleLock构造函数一个互斥器物件的代码,构造函数在结束返回之前必须等待该互斥器被释放。

另外,一旦CSimpleLock物件离开有效范围时,析构函数就会自动释放互斥器物件。因此,如果要保护某个函数,就可以产生一个CSimpleLock物件∶ HRESULT __stdcall CA::Tick(int delta) { CSimpleLock Lock(m_hCountMutex) ; m_count += delta ; return S_OK ; } HRESULT __stdcall CA::Left() { CSimpleLock Lock(m_hHandMutex) ; m_bRightHand = FALSE ; return S_OK ; }。

6.如何写操作系统原理的PV原语操作

从论坛找来一个非常好的帖子,请好好学习一下: 在计算机操作系统中,PV操作是进程管理中的难点。

首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的值减1,即S=S-1; ②如果S?,则该进程继续执行;否则该进程置为等待状态,排入等待队列。 V(S):①将信号量S的值加1,即S=S+1; ②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。

PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。

什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。

当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。

一般来说,信号量S?时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S 利用信号量和PV操作实现进程互斥的一般模型是:进程P1 进程P2 …… 进程Pn …… …… …… P(S); P(S); P(S);临界区; 临界区; 临界区;V(S); V(S); V(S);…… …… …… …… 其中信号量S用于互斥,初值为1。

使用PV操作实现进程互斥时应该注意的是: (1)每个程序中用户实现互斥的P、V操作必须成对出现,先做P操作,进临界区,后做V操作,出临界区。若有多个分支,要认真检查其成对性。

(2)P、V操作应分别紧靠临界区的头尾部,临界区的代码应尽可能短,不能有死循环。(3)互斥信号量的初值一般为1。

利用信号量和PV操作实现进程同步 PV操作是典型的同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望的消息尚未产生;当信号量的值非0时,表示期望的消息已经存在。

用PV操作实现进程同步时,调用P操作测试消息是否到达,调用V操作发送消息。 使用PV操作实现进程同步时应该注意的是: (1)分析进程间的制约关系,确定信号量种类。

在保持进程间有正确的同步关系情况下,哪个进程先执行,哪些进程后执行,彼此间通过什么资源(信号量)进行协调,从而明确要设置哪些信号量。 (2)信号量的初值与相应资源的数量有关,也与P、V操作在程序代码中出现的位置有关。

(3)同一信号量的P、V操作要成对出现,但它们分别在不同的进程代码中。【例1】生产者-消费者问题 在多道程序环境下,进程同步是一个十分重要又令人感兴趣的问题,而生产者-消费者问题是其中一个有代表性的进程同步问题。

下面我们给出了各种情况下的生产者-消费者问题,深入地分析和透彻地理解这个例子,对于全面解决操作系统内的同步、互斥问题将有很大帮助。(1)一个生产者,一个消费者,公用一个缓冲区。

定义两个同步信号量:empty——表示缓冲区是否为空,初值为1。full——表示缓冲区中是否为满,初值为0。

生产者进程 while(TRUE){ 生产一个产品; P(empty); 产品送往Buffer; V(full); } (2)一个生产者,一个消费者,公用n个环形缓冲区。定义两个同步信号量:empty——表示缓冲区是否为空,初值为n。

full——表示缓冲区中是否为满,初值为0。 设缓冲区的编号为1~n-1,定义两个指针in和out,分别是生产者进程和消费者进程使用的指针,指向下一个可用的缓冲区。

生产者进程 while(TRUE){ 生产一个产品; P(empty); 产品送往buffer(in); in=(in+1)mod n; V(full); } (3)一组生产者,一组消费者,公用n个环形缓冲区 在这个问题中,不仅生产者与消费者之间要同步,而且各个生产者之间、各个消费者之间还必须互斥地访问缓冲区。定义四个信号量:empty——表示缓冲区是否为空,初值为n。

full——表示缓冲区中是否为满,初值为0。mutex1——生产者之间的互斥信号量,初值为1。

mutex2——消费者之间的互斥信号量,初值为1。 设缓冲区的编号为1~n-1,定义两个指针in和out,分别是生产者进程和消费者进程使用的指针,指向下一个可用的缓冲区。

生产者进程 while(TRUE){ 生产一个产品; P(empty); P(mutex1); 产品送往buffer(in); in=(in+1)mod n; V(mutex1); V(full); } 需要注意的是无论在生产者进程中还是在消费者进程中,两个P操作的次序不能颠倒。应先执行同步信号量的P操作,然后再执行互斥信号量的P操作,否则可能造成进程死锁。

【例2】桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。

规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。分析在本题中,爸爸、儿子、女儿共用一个盘子,盘中一次只能放一个水果。

当盘子为空时,爸爸可将一个水果放入果盘中。若放入果盘中的是桔子,则允许儿子吃,女儿必须等待;若放入果盘中的是苹果,则允许女儿吃,儿子必须等待。

本题实际上是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。

解:。

原语怎么用

转载请注明出处育才学习网 » 原语怎么用(操作系统三个基本原语)

知识

参盅怎么用(参汤怎么炖.)

阅读(365)

本文主要为您介绍参盅怎么用,内容包括山参的说明书看不懂,解释一下用法好不好,如图,白参的功效与作用及食用方法,参汤怎么炖.。人参一定要隔水蒸炖 开水壶高压锅都可派用场有许多人经常在吃参,但是吃法却不讲究.不管吃西洋参还是别直参,都是

知识

涤尘怎么用(勿食涤尘清洁剂怎么处理)

阅读(390)

本文主要为您介绍涤尘怎么用,内容包括洗空调用的涤尘是什么,还可以做其他用途吗,涤尘是什么意思,勿食涤尘清洁剂怎么处理。误食清洁剂该如何急救漂白粉漂白粉的毒性主要为皮肤黏膜刺激作用。正常使用过程中可出现轻微的呼吸道刺激症状,少数

知识

蒲牢怎么用(龙生九子,都是什么呀)

阅读(322)

本文主要为您介绍蒲牢怎么用,内容包括蒲牢怎么弄啊,龙生九子,都是什么呀有什么用啊,龙的九子是谁干什么的,有什么用,九龙珠又是什么。赑屃(bi,xi):形似龟,好负重。一冲在各地的宫殿、祠堂、陵墓中均可见到其背负石碑的样子。在龙子的各类说法中

知识

杀蝇药怎么用(怎么用氯氟氰菊酯灭苍蝇)

阅读(384)

本文主要为您介绍杀蝇药怎么用,内容包括怎么用氯氟氰菊酯灭苍蝇,如何杀死苍蝇有效的药物有那些,怎么有效的消灭蚊蝇消灭蚊蝇用什么药。如何杀灭苍蝇从苍蝇的生态习性可以发现,杀灭苍蝇的关键是环境治理,同时辅以物理的、化学的及一切有效手段

知识

白酱油怎么用(什么是白酱油)

阅读(342)

本文主要为您介绍白酱油怎么用,内容包括白酱油的作用,白酱油的作用,酱油的用法是怎么的呀。白酱油详细介绍 原料介绍 白酱油即无色酱油,是西餐中常用的一种调料。白酱油是以黄豆和面粉为原料,经发酵成熟后提取而成。 营养分析 1.

知识

遮遐笔怎么用(遮瑕笔放在哪个步骤用)

阅读(328)

本文主要为您介绍遮遐笔怎么用,内容包括遮遐笔怎么用,遮瑕笔怎么用呀,如何正确的使用遮瑕笔。第三步遮瑕中使用。第一步:妆前补水有条件的话最好在上妆前半个小时敷面膜,尤其不常化妆的妹子必然要做好这步,否则脸上底妆会极端简朴浮粉脱妆

知识

yupin怎么写(Happysunday怎么写啊)

阅读(366)

本文主要为您介绍yupin怎么写,内容包括yupin都是四声怎么写,yupin都是四声怎么写,爱玉萍,英语要怎么写。Today is Sunday.Its also a good day. I got up at 7oclock ,because my

知识

安防资质申请报告怎么写(安防备案证申请报告怎么写)

阅读(390)

本文主要为您介绍安防资质申请报告怎么写,内容包括安防备案证申请报告怎么写,安防工程资质该如何申请,请问新注册的安防公司,安防资质怎么申请。NO: 单位名称 单位地址 邮 编 电话 传 真 E-mail 法人代表 电话 负责人 电 话 联 系 人 职 务

知识

英文公寓地址怎么写(如何用英文写小区的地址)

阅读(424)

本文主要为您介绍英文公寓地址怎么写,内容包括如何用英文写小区的地址,公寓英语怎么写,英文书信地址第8公寓怎么写。地点要从小往大的写。例如安徽省 芜湖市 弋江区 文昌路22号 绿橡园小区 D栋二单元1111室Room1111, Unit 2, D B

知识

妙语连珠成语怎么写(照样子写成语:妙语连珠《比喻》)

阅读(416)

本文主要为您介绍妙语连珠成语怎么写,内容包括仿写成语妙语连珠,妙语连珠填成语,仿写成语妙语连珠。一败如水 一见如故 门庭若市 口若悬河 文如其人 心急如火 巧舌如簧目光如豆 如鱼得水 忧心如焚 冷若冰霜 寿比南山 受宠若惊 坚如磐石

知识

整形证明怎么写(办身份证整容证明格式)

阅读(466)

本文主要为您介绍整形证明怎么写,内容包括办身份证整容证明格式,整形证明格式范本什么样的,医疗证明怎么医疗证明怎么写。整容后,重新办理第二代身份证步骤如下: 先去户籍部门声明整容后需更换身份证,问明对方需要的文件和流程,领取专用表格

知识

王翱云的繁体字怎么写(王柏梁的繁体字怎么写)

阅读(426)

本文主要为您介绍王翱云的繁体字怎么写,内容包括王柏梁的繁体字怎么写,(王太平)繁体字怎么写,钟佳敏的繁体字。“王柏梁”这三个字严格地说是没有繁体字的!但有“异体字”(至于“异体字”的概念可参考“百度百科”中的解释,见下面的链接)。其中:王

[/e:loop]