进程同步、进程互斥

weblog 768 0 0

《操作系统》

什么是进程同步

进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。

再看另一个例子:进程通信――管道通信

读进程和写进程并发地运行,由于并发必然导致异步性,因此“写数据”和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据→读数据”的顺序来执行的。

如何解决这种异步问题,就是“进程同步”所讨论的内容。

同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。

什么是进程互斥

进程的“并发”需要“共享”的支持。各个并发执行的进程不可避免的需要共享一些系统资源(比如内存,又比如打印机、摄像头这样的I/o设备)

两种资源共享方式

互斥共享方式:

系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源

同时共享方式:

系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问

我们把一个时间段内只允许一个进程使用的资源称为临界资源。许多物理设备(比如摄像头、打印机)都属于临界资源。此外还有许多变量、数据、内存缓冲区等都属于临界资源。

对临界资源的访问,必须互斥地进行。互斥,亦称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。

对临界资源的互斥访问,可以在逻辑上分为如下四个部分:

注意:

临界区是进程中访问临界资源的代码段。进入区和退出区是负责实现互斥的代码段。临界区也可称为“临界段”。

如果一个进程暂时不能进入临界区,那么该进程是否应该一直占着处理机?该进程有没有可能一直进不了临界区?

为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则:

1.空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;

2.忙则等待。当己有进程进入临界区时,其他试图进入临界区的进程必须等待;

3.有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿) ;

4.让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。


猜你喜欢
official 1110 的硬件实现方法中断屏蔽方法、TestAndSet(TS指令/TSL指令)、Swap指令(XCHG指令)中断屏蔽方法利用“开/关中断指令”实现(与原语的实现思想相,即在某开始访问临界区到
official 940 的软件实现方法单标志法,双标志先检查、双标志后检查、Peterson算法学习提示:理解各个算法的思想、原理结合上小节学习的“实现的四个逻辑部分”,重点理解各算法在入区、退出区都做了什么
official 779 《操作系统》什么是通信顾名思义,通信就是指之间的信息交换。是分配系统资源的单位(包括内存地址空间),因此各拥有的内存地址空间相独立。为了保证安全,一个不能直接访问另一个
official 899 《操作系统》什么是控制控制的主要功能是对系统中的所有实施有效的管理,它具有创建新、撤销已有、实现状态转换等功能。如何实现控制创建:需要初始化PCB,分配系统资源。创建
java基础 7256 多线带来的问题:线有时候回和其他线共享一些资源,比如内存、数据库等。当多个线时读写一份共享资源的时候,可能会发生冲突。这时候,我们就需要引入线”机制,即各位线之间要有顺序使用
official 823 《操作系统》调度的时机调度(低级调度),就是按照某种算法从就绪队列中选择一个为其分配处理机。需要调度不能调度临界资源:一个时间段内只允许一个使用的资源。各需要
weblog 1003 根本区别:是操作系统资源分配的基本单位,而线是处理器任务调度和执行的基本单位。包含关系:一个内可以有多个线(默认有一个主线),线的一部分,必须依赖于而存在,不能独立存在。资源共享:之间是不共享资源的,多个线之间是共享资源的,所以存在资源竞争的问题。
linux系统 3131 linux下查看的命令1、ps命令用于查看当前正在运行的。grep是搜索例如:ps-ef|grepjava表示查看所有里CMD是java的信息2、ps-aux|grepjava
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。