进程互斥的软件实现方法
进程互斥的软件实现方法
单标志法,双标志先检查、双标志后检查、Peterson算法
学习提示:
- 理解各个算法的思想、原理
- 结合上小节学习的“实现互斥的四个逻辑部分”,重点理解各算法在进入区、退出区都做了什么3.分析各算法存在的缺陷(结合“实现互斥要遵循的四个原则”进行分析)
单标志法
算法思想:两个进程在访问完临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予。单标志法存在的主要问题是:违背“空闲让进”原则。
双标志先检查法
算法思想:设置一个布尔型数组flag[],数组中各个元素用来标记各进程想进入临界区的意愿,比如“flag[0]= ture”意味着0号进程PO现在想要进入临界区。每个进程在进入临界区之前先检查当前有没有别的进程想进入临界区,如果没有,则把自身对应的标志flag[li]设为true,之后开始访问临界区。双标志先检查法的主要问题是:违反“忙则等待”原则。
双标志后检查法
算法思想:双标志先检查法的改版。前一个算法的问题是先“检查”后“上锁”,但是这两个操作又无法一气呵成,因此导致了两个进程同时进入临界区的问题。因此,人们又想到先“上锁”后“检查”的方法,来避免上述问题。
双标志后检查法虽然解决了“忙则等待”的问题,但是又违背了“空闲让进”和“有限等待”原则,会因各进程都长期无法访问临界资源而产生“饥饿”现象。
Peterson算法
算法思想:双标志后检查法中,两个进程都争着想进入临界区,但是谁也不让谁,最后谁都无法进入临界区。Gary L. Peterson想到了一种方法,如果双方都争着想进入临界区,那可以让进程尝试“孔融让梨”,主动让对方先使用临界区。
猜你喜欢
ofc
进程互斥的硬件实现方法
official
1416
进程互斥的硬件实现方法中断屏蔽方法、TestAndSet(TS指令/TSL指令)、Swap指令(XCHG指令)中断屏蔽方法利用“开/关中断指令”实现(与原语的实现思想相同,即在某进程开始访问临界区到
ofc
信号量机制
official
1059
《操作系统》信号量机制的两种类型整形信号量记录型信号量复习回顾+思考:之前学习的这些进程互斥的解决方案分别存在哪些问题?进程互斥的四种软件实现方式(单标志法、双标志先检查、双标志后检查
ofc
进程同步、进程互斥
official
1010
,因此“写数据”和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据→读数据”的顺序来执行的。如何解决这种异步问题,就是“进程同步”所讨论的内容。同步亦称直接制约关系,它是指为
ofc
进程调度的时机、切换与过程、方式
official
1031
《操作系统》进程调度的时机进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。需要进行进程调度不能进行进程调度临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥
ofc
进程通信
official
1017
的地址空间。但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。共享存储、消息传递、管道通信。共享存储操作系统为两个进程分配一个共享空间两个进程对共享空间的访问必须是
框架
8222
一次实现上传文件的进度条原理:在上传文件之前,请求以下服务器,获取一个socketId(作用:用来标识本次连接,服务器端也是通过这个id找到对应的连接,然后给这个连接发送消息(进度)),此时socket
ofc
进程的定义,组成,组织方式和特征
official
923
了进程、进程实体的概念。PCB、程序段、数据段三部分构成了进程实体(进程映像)内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。操作系统要怎么才能找到各程序的存放位置呢?系统为每个运行的程
blog
java启动线程的两种方式
java基础
4727
java启动线程的三种方式1.继承Thread类,重写run方法,调用start方法启动线程2.实现Runnable接口,重写run方法,调用start方法启动线程3.实现Callable接口代码如
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。