新一轮软考备考来啦~
为了帮助大家提高备考效率,将2023上半年软考网络工程师知识点速记分享给大家,快来跟着一起打卡学习吧!
进程的同步和互斥
计算机有了操作系统后性能大幅度提升,其根本原因就在于实现了进程的并发运行。多个并发的进程彼此之间围绕着紧俏的资源产生了两种关系,同步或互斥。而可以通过 PV
操作结合信号量解决进程间的同步和互斥问题。
1.同步
进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。
比如说进程
A
需要从缓冲区读取进程
B
产生的信息,当缓冲区为空时,进程
B
因为读取不到信息而被阻塞。而当进程 A
产生信息放入缓冲区时,进程
B
才会被唤醒。
2.互斥
进程互斥是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。
比如进程
B
需要访问打印机,但此时进程
A
占有了打印机,进程
B
会被阻塞,直到进程 A
释放了打印机资源,进程
B
才可以继续执行。
3.信号量
信号量
S
可以直接理解成计数器,是一个整数。信号量的值仅能由
PV
操作来改变。通过 PV
操作控制信号量来实现进程的同步和互斥。
4.PV 操作
PV
操作:解决互斥和同步的问题。
PV
操作是分开来看的:
P
操作:使
S=S-1
,若
S>=0
,则该进程继续执行,否则该进程排入等待队列。
V
操作:使
S=S+1
,若
S<=0
,唤醒等待队列中的一个进程。
在资源使用之前将会执行
P
操作,之后将会执行
V
操作。在互斥关系中
PV
操作在一 个进程中成对出现,而在同步关系中则一定在两个或多个进程中成对出现。
例如:
生产者
-
消费者问题是一个经典的进程同步和互斥问题,生产者进程生产物品,然后将物品放置在一个空缓冲区中供消费者进程消费。消费者进程从缓冲区中获得物品,然后释放缓冲区。当生产者进程生产物品时,如果没有空缓冲区可用,那么生产者进程必须等待消费者进程释放出一个空缓冲区。当消费者进程消费物品时,如果没有满的缓冲区,那么消费者
进程将被阻塞,直到新的物品被生产出来。其
PV
操作过程如图
2-2
所示。
其中
S1
的初值为缓冲区的空间大小(一开始缓冲区为空,站在生产者的角度来看可以 存放 N
件产品,那么
S1
初值为
N
),
S2
为
0
(一开始缓冲区为空,站在消费者的角度来看, 无产品可取,所以初值为 0
),
S
属于互斥量,初值为
1
(生产者和消费者必须互斥的访问缓冲区)。
更多内容持续更新中,欢迎一起交流学习~