一、进程同步
它是一个操作系统级别的概念,是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步。进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。
二、进程互斥
进程互斥是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。
三、临界区和临界资源
一次只能被一个进程所占用的资源就是所谓的临界资源。典型的临界资源比如物理上的打印机,当临界资源被占用时,另一个申请临界资源的进程会被阻塞,直到其所申请的临界资源被释放。而进程内访问临界资源的代码被成为临界区。
四、实现临界区互斥的基本方法
1,屏蔽中断
禁止一切中断发生,因为CPU 只在发生中断时引起进程切换,这样屏蔽中断就能保证当前运行进程将临界区代码顺利地执行完,从而保证互斥的正确实现。
2,硬件指令方法:设立原子操作指令,即执行代码时不允许被中断。
五、信号量(semaphore)和管程
信号量是操作系统提供的一种协调共享资源访问的方法。
一般被成为P操作和V操作(有时也被成为wait、signal)。
P操作表示申请一个资源,P操作的定义:S=S-1,若S>=0,则执行P操作的线程继续执行;若S
Procedure P(Var S:Semaphore);
Begin
S:=S-1;
If S
End;
管程是一种用于多线程互斥访问共享资源的程序结构,只允许一个线程在管程内部执行,如果说在这个内部,没有其它共享数据的话这时候就和临界区是完全一样的。
二者比较:
1,信号量本质是可共享的资源的数量; 而管程是一种抽象数据结构用来限制同一时刻只有一个线程进入临界区。
2,信号量的P操作可能阻塞,也可能不阻塞;而管程的wait操作一定会阻塞。
今天,先讲这点,方便消化。
领取专属 10元无门槛券
私享最新 技术干货