进程同步
- 并发执行的两个进程必须保证“一前一后”执行的两个操作(或两句代码)
- 进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。
- 进程同步就是解决进程异步的问题。
- 同步亦称为直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协它们的工作次序而产生的制约关系。进程间的直接制约关系就是它们之间的相互合作。
进程互斥
- 一个时间段内只允许一个进程使用的资源称为临界资源。许多物理设备(比如摄像头、打印机)都属于临界资源。此外还有许多变量、数据、内存缓冲区等都属于临界资源。
- 对临界资源的访问,必须互斥地进行。互斥,亦称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。
- 临界区是进程中访问临界资源的代码段。
- 举个有味道的例子:
厕所只有一个坑位,有多人同时上厕所,那么需要排队,每个人都只能互斥地访问坑位,访问坑位时需要锁上厕所门。while(1){ //锁厕所门 //访问坑位 //打开厕所门 }
- 实现对临界资源的互斥访问,需要遵循的四个原则
(1)空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区
(2)忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待
(3)有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿)
(4)让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。