问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

记录型信号量

发布网友 发布时间:2022-11-28 02:46

我来回答

1个回答

热心网友 时间:2023-10-20 09:52

  记录型信号量:需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接等待进程。两个数据项可描述为:

type semaphore=record

                            value:integer;

                            L:list of process;

                            end

                            图1

相应地,wait(S)和signal(S)操作可描述为:

procere wait(S)

          var S:semaphore;

          begin

                S.value:=S.value-1;

                if S.value<0 then block(S,L)

          End

procere signal(S)

          var S:semaphore;

          begin

                S.value:=S.value+1;

                if S.value≤0 then wakeup(S,L);

          end

在记录型信号量机制中,S.value的初值表示系统中某类资源的数目,因而又称为资源信号量,对它的每次wait操作,意味着进程请求一个单位的该资源,因此描述为S.value:=S.value-1;当S.value<0时,表示该类资源已分配完毕,因此进程应调用block原语,进行自我阻塞,放弃处理机,并插入到信号量链表S.L中。可见,该机制遵循了“让权等待”准则。此时S.value的绝对值表示在该信号量链表中已阻塞进程的数目。对信号量的每次signal操作,表示执行进程释放一个单位资源,故S.value:=S.value+1操作表示资源数目加1.若加1后仍是S.value≤0,则表示在该信号量链表中,仍有等待该资源的进程被阻塞,故还应该调用wakeup原语,将S.L链表中的第一个等待进程唤醒。如果S.value的初值为1,表示只允许一个进程访问临界资源,此时的信号量转化为互斥信号量。

    以上内容摘之《计算机操作系统》,下面我谈谈对记录型信号量的认识:如上图1,你看上去是不是很像我们学习过的C语言定义的数据结构,它就是因此而得名的。只不过它是pascal语言书写的而已,那看下面两个方框,一个是wait,另一个是signal,是不是很像咱学的C语言啊。每次wait操作就是给进程分配一个单位的资源,每次signal操作就是进程释放一个单位资源。

      现在我们假设我的电脑有两台打印机,所以S.value的初值为2,表示系统打印机的数目,称为资源信号量。进程A请求打印,那么系统对它执行一次wait操作,执行S.value:=S.value-1语句后S.value减1,S.value的值变为1,表示有一个资源空闲。执行if语句,S.value不小于0,结束。然后又来了一个进程B请求打印,系统对它又执行一次wait操作,执行S.value:=S.value-1语句后S.value减1,S.value的值变为0,表示没有空闲的资源。执行if语句,S.value不小于0,结束。又来一个进程C请求打印,系统对它又执行一次wait操作,执行S.value:=S.value-1语句后S.value减1,S.value的值变为-1,表示有一个进程没有得到打印机资源。执行if语句,S.value小于0,执行block(S,L),进行自我阻塞,放弃处理机,并插入到信号量链表S.L中。此时S.value的绝对值表示了在该信号量链表中已阻塞进程的数目。所以这个时候阻塞的进程为一个,即是进程C。

      系统运行了一段时间后,A进程结束,在结束前执行了signal操作,当执行到S.value:=S.value+1语句时,S.value加1,即S.value变为0.然后执行 if 语句,S.value小于等于0,执行wakeup(S,L),从S.L链表中唤醒C进程。过了一会,B进程结束,同样执行signal操作,S.value变为1,表示有一个资源空闲。紧接着C进程也结束了,S.value变为2。S.value最终等于初值,等待其他的进程进行资源请求。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
工科考研50分数学能过国家线吗 数一工科国家线一般多少分 笔记本电脑无线连接epson爱普生打印机wifi怎么连接 爱普生如何无线连接 身份证注销了银行卡还可以用吗 8424西瓜是哪里产的? 一个人开两个支付宝是同一个二维码吗 买个衣服很生气,投诉无门, 拉夏贝尔衣服可以退吗 断桥铝门窗有多少种 药店有卖医用眼罩的吗 防尘眼罩一般什么店里卖 站在别人的影子下,永远看到真实的阳光。离开是否可以解脱一切,去找自己的环境。 让我们荡起双桨 中的阳光指什么 主要用于排痰用那种呼吸机 吸痰器雾化器是一种产品吗,痰多的用哪种合适啊 吸痰器多少钱?家里用的那种? 咖啡种类英语名称大全 什么品种的老鼠最大 几部让人晚上睡不着的电影,你敢看吗? 德国帕德博恩的邮编是哪些 帕达博恩市在德国哪里 帕德博恩大学世界排名 帕德博恩的历史 帕德博恩的简介 德国帕特伯恩在哪个洲 广西高一学英语报第30期小报答案 求学英语报高一课标广东,小报第53期答案(包括作文答案) 拇指骨折能评几级伤残 左手手腕舟骨骨折,能定几级伤残? 记录型成本会计出现在成本会计发展的哪个阶段 什么是记录型结构体 牛仔阔腿裤真挺百搭的,小粗腿、国足腿都能穿,不仅时髦还显腿细- 什么样的柚子甜_怎么挑选甜柚子 长沙市中心哪里有卖单车打气筒、锁的地方? 南京哪里有配捷安特自行车锁钥匙的。 1-为什么要做市场分析? 25×25铝型材用什么尺寸的紧固件? 南山铝材的25方铝管1个厚的有防伪标志吗 铝材一米多少公斤 做铝材生意,按米报价给客人。现客人要求按千克报价。请问怎么换算? 怎么把视频画面屏蔽边黑色的,只有声音 心理学在职研究生考哪些 东吴银泰城高多少米 临安滨湖新城双子楼怎么施工进度这么慢 我的被永久封号了,怎么办? bemadeinto用法 民国财政大臣孔祥熙的四个子女如今怎么样了 急:be made of , be made from , be made by , be made into 和 be made up of 的区别。 被永久封号了如何解开