1 进程同步
回顾进程的特征:动态性、并发性、异步性、独立性、结构性。
由于进程的异步性,各个进程按各自独立的、不可预知的速度向前推进,例如下面两段伪代码:
P0进程
{
代码1; ............1
代码2; ............2
代码3; ............3
}
P1进程
{
代码4; ............4
代码5; ............5
代码6; ............6
}
如P0进程先获取到CPU执行权,先执行了代码1,之后切换到P1进程,执行了代码4、5、6,之后再切换到P0进程,执行了代码2和代码3。
如果P0进程先获取到CPU执行权,可能先执行了代码1、2,之后切换到P1进程,执行了代码4和代码5....
由于进程间的切换,导致了进程以不可预知的速度(顺序)执行。
举个例子,在进程通信中有一种通信方式——管道通信。在读写进程并发的条件下,由于读写进程执行的先后顺序是不确定的,但是实际要求必须按照先写再读顺序。
所以为了能够实现上述的需求,操作系统就需要提供“进程同步机制”。
同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生制约关系。
2 进程互斥
临界资源:是指一个时间段内只允许一个进程使用的资源。许多物理设备(如摄像头、打印机)都是属于临界资源。此外,很多变量,数据、内存缓冲区都是临界资源。
对临界资源的访问,必须互斥的进行。进程互斥指一个进程访问某个临界资源时,另一个进程想要访问这个临界资源必须要等当前访问临界资源的进