进程互斥的软件实现方法

weblog 1291 0 0

进程互斥的软件实现方法

单标志法,双标志先检查、双标志后检查、Peterson算法

学习提示:

  1. 理解各个算法的思想、原理
  2. 结合上小节学习的“实现互斥的四个逻辑部分”,重点理解各算法在进入区、退出区都做了什么3.分析各算法存在的缺陷(结合“实现互斥要遵循的四个原则”进行分析)

单标志法

算法思想:两个进程在访问完临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予。单标志法存在的主要问题是:违背“空闲让进”原则。

双标志先检查法

算法思想:设置一个布尔型数组flag[],数组中各个元素用来标记各进程想进入临界区的意愿,比如“flag[0]= ture”意味着0号进程PO现在想要进入临界区。每个进程在进入临界区之前先检查当前有没有别的进程想进入临界区,如果没有,则把自身对应的标志flag[li]设为true,之后开始访问临界区。双标志先检查法的主要问题是:违反“忙则等待”原则。

双标志后检查法

算法思想:双标志先检查法的改版。前一个算法的问题是先“检查”后“上锁”,但是这两个操作又无法一气呵成,因此导致了两个进程同时进入临界区的问题。因此,人们又想到先“上锁”后“检查”的方法,来避免上述问题。

双标志后检查法虽然解决了“忙则等待”的问题,但是又违背了“空闲让进”和“有限等待”原则,会因各进程都长期无法访问临界资源而产生“饥饿”现象。

Peterson算法

算法思想:双标志后检查法中,两个进程都争着想进入临界区,但是谁也不让谁,最后谁都无法进入临界区。Gary L. Peterson想到了一种方法,如果双方都争着想进入临界区,那可以让进程尝试“孔融让梨”,主动让对方先使用临界区。


猜你喜欢
official 1416 中断屏蔽、TestAndSet(TS指令/TSL指令)、Swap指令(XCHG指令)中断屏蔽利用“开/关中断指令”(与原语思想相同,即在某开始访问临界区到
official 1059 《操作系统》信号量机制两种类型整形信号量记录型信号量复习回顾+思考:之前学习这些解决案分别存在哪些问题?四种式(单标志、双标志先检查、双标志后检查
official 1010 ,因此“写数据”和“读数据”两个操作执行先后顺序是不确定。而际应用中,又必须按照“写数据→读数据”顺序来执行。如何解决这种异步问题,就是“同步”所讨论内容。同步亦称直接制约关系,它是指为
official 1031 《操作系统》调度时机调度(低级调度),就是按照某种算从就绪队列中选择一个为其分配处理机。需要调度不能调度临界资源:一个时间段内只允许一个使用资源。各需要
official 1017 地址空间。但是之间信息交换又是必须。为了保证安全通信,操作系统提供了一些。共享存储、消息传递、管道通信。共享存储操作系统为两个分配一个共享空间两个对共享空间访问必须是
框架 8222 一次上传文度条原理:在上传文之前,请求以下服务器,获取一个socketId(作用:用来标识本次连接,服务器端也是通过这个id找到对应连接,然后给这个连接发送消息(度)),此时socket
official 923 概念。PCB、序段、数据段三部分构成了体(映像)内存中同时放入多道序,各个代码、运算数据存放位置不同。操作系统要怎么才能找到各存放位置呢?系统为每个运行
java基础 4727 java启动线三种式1.继承Thread类,重写run,调用start启动线2.Runnable接口,重写run,调用start启动线3.Callable接口代码如
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。