第四章 并发与同步

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DarkAngel1228/article/details/82620273

一. 进程(线程)间相互作用

1.1 相关进程和无关进程:

  • 相关进程:在逻辑上具有某种联系的进程

    这些都是相关进程(相关事件),一个进程(事件)依赖或影响其它进程(事件)的执行,这些并发进程是相关的

  • 无关进程:在逻辑上没有任何联系的进程

    如果一个进程的执行不影响其它进程的执行,且与其它进程的进展情况无关,即它们是各自独立的,则说这些并发进程的相互间是无关的!
    注:无关的并发进程一定没有共享的变量!

案例:

学校白天突然停电,那么在实训室、实验室、机房无法授课(相关进程)
而在多媒体和普通教室的课可以正常授课!这就是无关进程(无关进程)

1.2 与时间有关的错误:

进程执行的速度是不能由进程自身控制的。对于相关进程来说,可能有若干并发进程同时使用共享资源,即一个进程一次使用未结束,另一个进程也开始使用,形成交替使用共享资源。

进程同步:

指多个进程中发生的事件存在某种时序关系,必须协同动作,相互配合,以共同完成一个任务。

进程互斥:

是指由于共享资源所要求的排他性,进程间要相互竞争,以使用这些互斥资源。

二. 进程互斥

进程互斥的解决做法:

1)由竞争各方平等协商;

2)引入进程管理者,由管理者来协调竞争各方对互斥资源的使用。

  就像生活中法院中的协调机制一样,当双方有互斥时,可以通过调解协商解决,如果不行,就继续打官司,双方聘请各自代表律师,由双方代表律师来协调双方,最终由法院对互斥双方下最后判定!

基于进程间平等协商的互斥算法:

  临界资源:指计算机系统中的需要互斥使用的硬件或软件资源,如外设、共享代码段、共享数据结构等。多个进程在对临界资源进行访问时,特别是进行写入或修改数据时,必须互斥进行!

计算机系统中资源共享的程序可分成三个层次:

  互斥:保证资源的互斥作用是指多个进程不能同时使用同一资源,这是正确使用资源的最基本要求。如:同一站台同一轨道不能同时停靠多列火车?

  死锁:避免死锁是指避免多个进程互不相让,避免出现都得不到足够资源的情况,保证系统功能的正常运行。如:同一小巷单车道双向行车不相让?

  饥饿:避免饥饿是指避免某些进程一直得不到资源或得到资源的概率很小,保障系统内资源使用的公平性。如:部分旅客选择高铁和动力,选择普车少,但为了保障较多出行者,T、Z、K、L等普通列车也要运行!

为了保证临界资源的正确合作,可把临界资源的访问过程分成四部分:

1)进入区:为了进入临界区使用临界资源,在进入区要检查可否进入临界区;如果可以进入临界区,通常设置相应的“正在访问临界区”标志,以阻止其它进程同时进入临界区。例如:生活中的临界管制区

2)临界区:进程中访问临界资源的一段代码

3)退出区:将“正在访问临界区”标志清除

4)剩余区:代码中的其余部分

  为了合理使用计算机系统中的资源,在操作系统中采用的进程同步机制应遵循以下几条准则:

1)空闲则入:任何同步机制都必须保证任何时刻最多只有一个进程位于临界区。当有进程位于临界区时,任何其它进程进程均不得进入临界区

2)忙则等待:当已有进程处于临界区时,后到达的进程只能在进入区等待

3)有限等待:为了避免死锁等现象的出现,等待进入临界区的进程不能无限期地“死等”

4)让权等待:因在进入区等待而不能进入临界区的进程,应释放处理机,转换到阻塞状态,以使得其它进程有机会得到处理机的使用权

这里写图片描述

这里写图片描述

这里写图片描述
这里写图片描述

1.2 进程互斥的硬件方法:

  基本思路:用一条指令完成读和写两个操作,因而保证读操作与写操作不被打断。依据所采用的指令的不同,硬件方法分为TS指令和SWAP指令两种

1)TS(Test-and-Set)指令:读出指定标志后把该标志设置为TRUE,利用TS指令实现的进程互斥算法是,每个临界资源设置一个公共布尔变量lock,表示资源的两种状态:TURE表示正在占用,FALSE表示空闲,初始值为FALSE。

  有进程在临界区时,重复检查,直到其它进程退出时检查通过,所有要访问临界资源的进程的进入区和退出区代码是相同的。

2)Swap指令:功能是交换两个字(字节)的内容。

  利用SWAP指令实现的进程互斥算法是,每个临界资源设置一个公共布尔变量lock,初值为FALSE;每个进程设置一个私有布尔变量KEY,用于与lock间的信息交换。在进入区利用SWAP指令交换lock和key的内容,然后检查key的状态;有进程在临界区时,重复交换和检查过程,直到其它进程退出时检查通过。

硬件方法的优点:

1)适用范围广:适用于任意数目的进程,在单处理器和多处理器环境中完全相同。

2)简单:硬件方法的标志设置简单,含义明确,容易验证其正确性。

3)支持多个临界区:在一个进程内有多个临界区时,只需为每个临界区设置一个布尔变量。

硬件方法的优点:

1)进程在等待进入临界区时,要耗费处理机时间,不能实现“让权等待”

2)由于进入临界区的进程是从等待进程中随机选择的,有的进程可能一直选不上,从而导致“饥饿”。

猜你喜欢

转载自blog.csdn.net/DarkAngel1228/article/details/82620273