操作系统——进程同步(学习笔记)

目录

进程同步

(1)进程同步

1.进程同步的基本概念

2.进程之间的两种制约关系

3.四大区

4.同步机制应遵循的规则:

(2)硬件同步机制

1.关中断

2.利用Test-and-Set指令实现互斥(专用机器指令)

3.利用swap指令实现互斥(交换指令)

(3)信号量机制

1、整型信号量

2、记录型信号量

3、AND型信号量

4、信号量集

5.利用信号量实现进程互斥

6.利用信号量实现前趋关系

(4)管程机制

1.管程的基本概念和定义

2.条件变量


进程同步

(1)进程同步

1.进程同步的基本概念

进程同步的主要任务是使并发执行的诸进程之间能有效地共享资源相互合作,使执行的结果具有可再现性

2.进程之间的两种制约关系

 间接相互制约关系 系统资源共享:互斥地访问、系统统一分配
 直接相互制约关系 进程间合作,比如进程A、B,进程B是对进程A的数据进行处理,那么进程B就一定要在进程A之后执行。

 临界资源(critical resource):一段时间仅允许一个进程访问的资源。
 临界资源可能是硬件,也可能是软件:变量,数据,表格,队列等。
 并发进程对临界资源的访问必须做某种限制,否则就可能出现与时间有关的错误

3.四大区

临界区:临界段,在每个程序中,访问临界资源的那段程序。

进入区:用于进入临界区前检查临界资源是否正在被访问的代码块。

退出区:在临界区之后用于将临界区正在被访问的标志恢复为未被访问的状态的代码块。

剩余区:除进入区、临界区及退出区之外的其它部分的代码。

       一个访问临界资源的循环进程描述为:

while(true)
{
进入区
临界区
退出区
剩余区

}

4.同步机制应遵循的规则:

 空闲让进:当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。多中选一
 忙则等待:当已有进程进入临界区时,表明临界资源正在被访问,因而其它试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。   互斥访问
 有限等待:   对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,避免陷入"死等"状态。     (避免死等)
 让权等待:  当进程不能进入自己的临界区时,应立即释放处理机,避免进程陷入"忙等"状态。    (避免忙等)

(2)硬件同步机制

1.关中断

关中断:实现互斥最简单的方法。 进入锁测试之前关闭中断,直到完成锁测试并且关上锁以后再打开中断。进程进入临界区执行期间,计算机系统不会响应中断,也不会引发调度,就不会引起线程或者进程的切换。
 缺点:影响系统效率不适合多CPU、会导致严重后果

2.利用Test-and-Set指令实现互斥(专用机器指令)

TS指令的一般性描述:

boolean TS(boolean *lock){
boolean old;
old=*lock;
*lock=TRUE;
return old;
}

利用TS指令实现互斥的循环进程结构描述为:

do{
…
while TS(&lock);
critical section;
lock:=false;
remainder seciton;
}while(true)

3.利用swap指令实现互斥(交换指令)

void swap(boolean *a, boolean *b)
{
boolean temp;
temp=*a;
*a=*b;
*b=temp;
}

利用Swap指令实现进程互斥的循环进程描述为:

do{
key=TRUE;
do{
swap(&lock, &key);
} while(key!=FALSE);
critical section;   //临界区操作
lock:=false;
…
} while(TRUE);

(3)信号量机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

〖雪月清〗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值