四级网络工程师笔记-操作系统(中)

前言:

作者在优快云博客上开通了[网络工程师]专栏,目的在于激励自己坚持学习。由于是初次进行博客创作、经验不足、可能比较粗糙,如有错漏之处希望大家能够指正、也欢迎大家一起交流学习。

如需查看完整学习博文(笔记)请点击 [网络工程师] 进行查看

系列博文

1、四级网络工程师和四级信息安全工程师考试须知与学习方法

2、四级网络工程师笔记-操作系统(上)

3、四级网络工程师笔记-操作系统(中)

4、四级网络工程师笔记-操作系统(下)

5、四级网络工程师笔记-计算机网络(上)

6、四级网络工程师笔记-计算机网络(中)

7、四级网络工程师笔记-计算机网络(下)

第四章 并发与同步

1. 进程同步与进程互斥

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

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

2. 进程互斥解决方法

进程互斥的解决有两种做法:一是由竞争各方平等协商;二是引入进程管理者,由管理者来协调竞争各方对互斥资源的使用。

3. 资源共享 3 个层次

⚫ 互斥( MutualExclusion):保证资源的互斥使用是指多个进程不能同时使用同一个资源,这是正确使用资源的最基本要求;

⚫ 死锁( Deadlock):避免死锁是指避免多个进程互不相让,避免出现都得不到足够资源的情况,从而保证系统功能的正常运行;

⚫ 饥饿( Starvation):避免饥饿是指避免某些进程一直得不到资源或得到资源的概率很小,从而保障系统内资源使用的公平性。

4. 相互感知度划分:

相互感知的程度 交互关系 一个进程对其他进程的影响 潜在的控制问题
相互不感知(完全不了解其他进程的存在) 竞争(Competition) 一个进程的操作对其他进程的结果无影响 互斥、死锁、饥饿
间接感知(双方都与第 3方交互,如共享资源) 通过共享进行协 一个进程的结果依赖于从 其他进程获得的信息 互斥、死锁、饥饿
直接感知(双方直接交互,如通信) 通过通信进行协作 一个进程的结果依赖于从其他进程获得的信息 死锁、饥饿

5. 临界资源的访问过程

● 进入区( Entry Section):为了进入临界区使用临界资源,在进入区要检查可否进入临界区;如果可以进入临界区,通常设置相应的“ 正在访问临界区” 标志, 以阻止其他进程同时进入临界区。

● 临界区(Critical Section): 进程中访问临界资源的一段代码。

● 退出区(Exitt Section): 将“ 正在访问临界区” 标志清除。

● 剩余区(Remainder Section): 代码中的其余部分。

6. 进程同步机制准则

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

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

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

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

7. 进程互斥的硬件方法

目前,在平等协商时通常利用某些硬件指令来实现进程互斥。硬件方法的主要思路是用一条指令完成读和写两个操作,因而保证读操作与写操作不被打断。依据所采用的指令的不同,硬件方法分成 TS 指令和 Swap 指令两种。

⚫ TS(Test-and-Set)指令

TS 指令的功能是读出指定标志后把该标志设置为 TRUE。TS 指令的功能可描述成下面的函数。

Boolean TS (Boolean * lock) {
   

Boolean old;old=*lock;lock=TRUE; return old;

}

利用 TS 指令实现的进程互斥算法是,每个临界资源设置一个公共布尔变量 lock,表示资源的两种状态: TRUE 表示正被占用, FALSE 表示空闲, 初值为 FALSE。在进入区利用 TS 进行检查和修改标志 lock。有进程在临界区时,重复检查,直到其他进程退出时检查通过。所有要访问临界资源的进程的进入区和退出区代码是相同的。

TS 指令实现互斥的算法是:

① 测试锁变量的值,如为 1,则重复执行本命令,不断重复测试变量的值;

② 如为 0,则立即将锁变量测值置为 1,进入临界区;

③ 测试并设置指令是一条完整的指令,而在一条指令的执行中间是不会被中断的,保证了锁的测试和关闭的连续性;

④ 退出临界区时,将锁变量测试值设为 0。2)Swap 指令(或 Exchange 指令)

Swap 指令的功能是交换两个字( 字节) 的内容。可用下面的函数描述 Swap 指令的功能。

Void SWAP(int*a, int*b){
   

Int temp;

temp=*a; *a=* b;*b =temp;

}

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

8. 硬件方法优缺点

使用硬件方法实现进程互斥,

  1. 优点有以下几个方面:

⚫ 使用范围广:硬件方法适用于任意数目的进程,在单处理器和多处理器环境中完全相同;

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

⚫ 支持多个临界区:在一个进程内有多个临界区时,只需为每个临界区设立一个布尔变量;

  1. 其缺点有:

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

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

9. 信号量

信号量是由操作系统提供的管理公有资源的有效手段。信号量代表可用资源实体的数量。属于低级通信方法

⚫ empty 信号量表明的是空闲资源数目;

⚫ full 信号量表明的是满的资源数目;

⚫ mutex 信号量用于实现互斥访问。

10. PV 操作

  1. PV 操作由P 操作原语和V 操作原语组成(原语是不可中断的过程)对信号量进行操作。

⚫ P(S):将信号量 S 的值减 1,即 S=S-1;如果 S>=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。

⚫ V(S):将信号量 S 的值加 1,即 S=S+1;如果 S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。

2) 优点:

P、V 原语的执行, 不受进程调度和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值