文章目录
一、临界与同步
1、临界资源与临界区
在计算机中,有些资源允许多个进程同时使用,如磁盘;而另一些资源只能允许一个进程使用,如打印机、共享变量。如果多个进程同时使用这类资源,就会引起激烈的竞争。操作系统必须保护这些资源,以防止两个或者两个以上的进程同时访问它们。
那些在某段时间内只允许一个进程使用的资源就称为临界资源。
而每个进程中访问临界资源的那段程序就称为临界区。
2、进程同步
进程同步是指多个进程中发生的事件存在着某种时序关系,必须协同动作,相互配合,以共同完成一个任务。进程同步的主要任务是使并发执行的诸各个进程有效地共享资源和相互合作,从而使程序的执行具有可再现性。
进程同步一种直接制约关系。这种用法比进程之间的互斥知道对方的程度要高,因为进程之间需要合作。
3、信号量实现进程同步
semaphore S = 0;
P1()
{
一些操作代码...;
x; // 语句x;
V(S)// 唤醒另外P进程
}
P2
{
P(S); // 一直堵塞P2进程,等待唤醒
Y; // 被唤醒,执行正事
}
二、进程互斥
1、进程互斥的软件实现方法
2、进程互斥的硬件实现方法
(1)中断屏蔽方法
关中断;
临界区;
开中断;
中断屏蔽的特点:
- 限制了CPU交替执行能力
- 用户能力变大,甚至可以控制中断
(2)硬件指令方法
- TestAndSet指令
boolean TestAndSet(boolean *lock)
{
boolean old;
old =</