14.从"互斥","空闲让进","有限等待"3个方面讨论它的正确性.若正确,则证明之.若不正确,说明理由。

program sample;
    var c1,c2:integer;
    procedure p1
        begin
        repeat
            other section 1;
            repeat
            c1 = 1-c2;
            until c2!=0
            critical section;//临界区
            c1 = 1;
        until false
        end
    procedure p2
        begin
        repeat
            other section 2;
            repeat
            c2 = 1-c1;
            until c1!=0
            critical section;//临界区
            c2 = 1;
        until false
        end
    begin 
        c1 = 1;
        c2 = 1;    
        cobegin    
            p1;    
            p2;//进程p1,p2并行执行
        end

分析:
1)互斥:不能实现互斥进入临界区.比如:进程p1,p2都可以在判断到c1,c2为1的时候而进入临界区.
2)空闲让进:可以实现.当一个进程离开临界区后,进程p2还未来得及执行c2 = 1-c1操作时,进程p1再次先执行c1 = 1-c2,可以立即进入临界区,可能会造成进程p2长时间等待,出现"饥饿"现象.

15.解释彩票调度算法

答:彩票调度算法是一种模拟现实世界发行彩票的方法的计算机资源分配算法.其实现的基本思想是:为进程发放针对系统各种资源(如cpu占用时间)的彩票.当调度程序需要做出决策时,随机选择一张彩票,持有该彩票的进程将获得系统资源.所有的进程都是平等的.它们有相同的运行机会.若某些进程需要更多的机会,就可以被给予更多的额外彩票,以增加其中将(获得资源)的机会.

16.假设一个电影院有0,1,2三种不同的影片由观众选择放映.放映规则是:1)任一时刻最多只能放映一种影片,正在放映的影片是自动循环放映的,最后一个观众主动离开时结束当前影片的放映.2)选择当前正在放映影片的观众可立即进入,允许同时有多位选择同一影片的观众同时观看,同时观看的观众数量不受限制;3)等待观看其他影片的观众按到达顺序排队,当一中新的影片开始放映时,所有等待观看该影片的观众可以依次序进入电影院同时观看.

分析:电影院一次只能放映一部影片,希望观看的观众可能有不同的爱好,但每次只能满足部分观众的需求,即希望观看另外两部影片的用户只能等待.分别为三部影片设置三个信号量s0,s1,s2,初值分别为1,1,1电影院一次只能放一部影片,因此需要互斥使用.由于观看影片的观众有多个,因此必须分别设置三个计数器(初值都是0),用来统计观众个数.当然计数器是个共享变量,需要互斥使用。

var s=1,s0=1,s1=1,s2=1:semaphore;
var count0=0,count1=0,count2=0;

cobegin
process videoshow0 //vcd_id = 0
begin
    repeat
        p(s0);
        count0 = count0 +1;
        if(count0=1) p(s);
        v(s0);    
        看影片;
        p(s0);
        count0 = count0 -1;
        if(count0=1) v(s);
        v(s0);
    until false
end

process videoshow1 //vcd_id = 1
begin
    repeat
        p(s1);
        count1 = count1 +1;
        if(count1=1) p(s);
        v(s1);    
        看影片;
        p(s1);
        count1 = count1 -1;
        if(count1=1) v(s);
        v(s1);
    until false
end
process videoshow2 //vcd_id =2
begin
    repeat
        p(s2);
        count2 = count2 +1;
        if(count2=1) p(s);
        v(s2);    
        看影片;
        p(s2);
        count1 = count1 -1;
        if(count2=1) v(s);
        v(s2);
    until false
end
coend

17.图书馆有100个座位.读者进入时必须在一张登记表上登记,该表为每一座位列一表目,包括座位号和读者姓名.读者离开时要消掉登记内容.

var mutex=1,count=1:semaphore;

cobegin
process Readeri(i=1,2)
begin
    repeat
        进入图书馆;
        p(count);
        p(mutex);
        i = 获取座位号;
        登记i项表目(名字,座位号);
        v(mutex);
        坐下阅读;
        p(mutex);
        消去登记项(名字,座位号)
        v(mutex);
        v(count);
        离开;
    until false
end

18.盒子里装着数量相等的白子和黑子,两个进程p1,p2,p1捡白子,p2捡黑子,规定每一个进程轮流捡子且只捡一子.当一个进程正在捡子时,不允许另一个进程去捡,并设捡白子的进程先手.

分析:可以设置两个信号量s1,s2协调进程p1,p2之间的同步,由于不存在进程p1,p2之间同时取子的竞争,所以不必设置互斥信号量.又由于白先,所以信号量s1,s2的初值分别为1,0;

var s1=1,s0=0:semaphore;

cobegin
process p1
begin
    repeat
        p(s1);
        捡白子;
        v(s2);
    until false
end

process p2
begin
    repeat
        p(s2);
        捡黑子;
        v(s1);
    until false
end

19,有100名毕业生去甲,乙两公司求职,两公司合用一间接待室,其中甲公司准备招收10人,乙公司准备要15人,招完即止.两公司各有一位主管接待毕业生,每位主管每次只可接待一人,其他毕业生在接待室外排成一队等待,

分析:由于毕业生只排一队,所以只需要设置一个队列数据结构,在队列中不含甲,乙都接待过的毕业生和已被录用了的毕业生,只含标志为"A"(被甲接待过)或标志为"B"(被乙接待过)以及无标志的毕业生,此外,设置s1和s2分别为队列中甲乙正在面试的毕业生i(i=1,..100)标志,即此刻另一方不得面试该毕业生i.k1,k2为甲,乙所录取的毕业生计数,c1,c2为甲乙面试过的毕业生计数.mutex为访问队列互斥信号量,sa,sb分别为访问c1,c2的互斥信号量.需要注意的,若甲录取了一名学生,且乙没有面试过该学生,则乙的面试学生数将减少1人.可以采取如下方法:若甲所录取的学生没有被乙面试过时,给乙面试计数器c2加1(相当于乙已经面试过该生);即始终保持乙面试的人数值为100.反之,对甲也是如此.

var sa=1,sb=1,mutex=1,c1=0,c2=0,k1=0,k2=0:semaphore;

cobegin

process 甲
begin
    L1:p(mutex);
        p(sa);
        c1 = c1 +1;
        v(sa);
        if(c1<=100) then
        begin
            从标志为“B"且不为”Sb"或无标识的毕业生队列中选第i个学生将学生i标识为"A"和"sa"
        end
        v(mutex);
        面试;
        p(mutex);
        if 合格 then
        begin
            k1 = k1 +1;
            if(学生i的标识不含"B") then 
            begin
                p(sb);            
                c2 = c2+1;
                v(sb);
                将学生i从队列上摘除;
            end
            else
                将学生 i从队列上摘除;
        else
        if(学生i的标识含“B”)then 
            将学生i从队列上摘除
        else
            取消学生i的"sa"标识;
        v(mutex);
        if(k1<10) and (c1<100) then goto L1
end
        v(s2);
    until false
end

process 乙
begin
    L2:p(mutex);
        p(sa);
        c2 = c2 +1;
        v(sb);
        if(c2<=100) then
        begin
            从标志为“A"且不为”Sa"或无标识的毕业生队列中选第i个学生将学生i标识为"B"和"sb"
        end
        v(mutex);
        面试;
        p(mutex);
        if 合格 then
        begin
            k2 = k2 +1;
            if(学生i的标识不含"A") then 
            begin
                p(sa);            
                c1 = c1+1;
                v(sa);
                将学生i从队列上摘除;
            end
            else
                将学生 i从队列上摘除;
        else
        if(学生i的标识含“A”)then 
            将学生i从队列上摘除
        else
            取消学生i的"sb"标识;
        v(mutex);
        if(k2<10) and (c2<100) then goto L2
end
        v(s2);
    until false
end

操作系统复习笔记(五)相关推荐

  1. STM32复习笔记(五) —— GPIO锁定机制

    STM32复习笔记(五) -- GPIO锁定机制 1.GPIO 锁定机制 锁定机制可以锁定 IO 口的配置,锁定一个端口位之后,直至下一次复位之前,将不能再更改端口位的配置 2.本例程软件设计思路 1 ...

  2. 模拟电子线路复习笔记(五) —— 低频功率放大器

    模拟电子线路复习笔记(五) -- 低频功率放大器 本文是对模电的第五章的低频功率放大器知识点的笔记总结.全文手写,附有例题解析,帮助加深理解. 1.知识点总结

  3. 哈工大操作系统学习笔记五——内核级线程实现

    哈工大os学习笔记五(内核级线程实现) 文章目录 哈工大os学习笔记五(内核级线程实现) 一. 中断入口.中断出口(前后两段) 1. 从int中断进入内核(中断入口第一段) 2.中断出口(最后一段) ...

  4. 数理统计复习笔记五——假设检验之显著性检验

    一.基本概念 在统计中,我们把需要用样本去推断"正确"与否的命题称为一个假设.当然,假设是可以关于参数的,也可以是关于分布的. 通过样本对一个假设作出"对"或& ...

  5. 单处理机系统的进程调度动态优先_操作系统复习笔记(王道)C2.1

    进程与线程 一.进程特征和概念 前提:允许多个程序并发执行. 1.概念 PCB(process control block)进程控制块,系统利用 PCB 来描述进程的基本情况和运行状 态,进而控制和管 ...

  6. [个人笔记]操作系统复习笔记

    一 绪论 OS的作用 用户与硬件之间的接口 管理计算机资源 抽象计算机资源 OS的发展 单道批处理系统 用户程序交给监控程序,由监控程序控制作业一个接一个交给IO处理 CPU等待IO.内存浪费.资源浪 ...

  7. 操作系统复习笔记 04 Process 进程

    []进程的概念 1.进程是操作系统执行的各种程序. 2.现在的操作系统多为并发执行,具有许多新的特征.引入并发执行的目的是提高资源利用率. 3.OS的基本特征是[并发与共享]. 4.顺序环境计算机系统 ...

  8. 操作系统复习笔记 02-03 OS Structure 操作系统结构

    02-03操作系统结构(OS_Structure) []陈述: 1.IO设备与CPU可并行运行. 2.每一个设备控制器负责一个设备类型. 3.每一个设备控制器有一个局部缓存. 4.CPU通过局部缓存与 ...

  9. 操作系统复习笔记(四)

    10.司机和售票员之间要协同工作:一方面只有售票员把车门关好了司机才能开车,因此售票员关好车门应通知司机开车;另一方面只有当汽车已经停下时,售票员才能开门让乘客上下客,司机停车后应该通知售票员,假定某 ...

最新文章

  1. 使用 SQL Server 2012 Analysis Services Tabular Mode 表格建模 图文教程
  2. Google Inc.:Google APIs:23' 解决方案
  3. Oracle 移植 失败,Oracle迁移导致sqlplus报告ora-15180错误信息
  4. 【转】Azure应用部署方式对比
  5. Python文本词频统计
  6. Qt与Visual Assitst X的集成问题
  7. 安装不成功_win10+cuda10.1+cudnn+tensorflow1.15.0安装
  8. 剑指offer第七天
  9. Eclipse常用快捷键【转】
  10. vue系列---identify(生成图片验证码)插件
  11. Simplify Path
  12. CVPR2022Oral专题系列(二):多帧图像合成与增强
  13. maven 安装配置 - vscode for java
  14. 【JAVA基础速过】第3章 数组+Arrays工具类的使用
  15. java 调用nc查询引擎_用友NC系统查询引擎应用心得
  16. 网页截图怎么截一整张_电脑网页页面太长怎么截图 长网页滚动截图的两种方法...
  17. 龙迅LT86102SXE 是 Lontium 的第 4 代 2 端口 HDMI/DVI 分配器
  18. Ubuntu16.04使用sudo add-apt-repository时报错:aptsources.distro.NoDistroTemplateException
  19. c语言十进制转ieee754代码,C#IEEE754到十进制(C# IEEE754 to decimal)
  20. PTA 7-10 计算工资

热门文章

  1. lamp源码三层结构
  2. 增强环路现象!? 为你揭示云计算魔力!
  3. javascript基础知识总结
  4. 如果输入的dll名字被改后应该手工删除dll
  5. [PBRT-V3]从MCMC的角度分析MLT
  6. 数据分析的数据来源于哪
  7. 数据分析和数据挖掘有什么区别
  8. 大数据可视化技术挑战和措施
  9. java 中_l1,L2指令获取错过远高于L1指令获取未命中
  10. python xpath提取td标签_Python Xpath 提取html整个元素(标签与内容)