最近开始学习操作系统原理,里面涉及到一种进程同步技术:PV原语。
PV原语是一种操作系统底层提供的同步技术,能够有效的降低多进程并发资源竞争,类比多线程同步,也是如此。
PV原语采用了诸多原子级别的操作【原子级别指的是,该操作在CPU看来是一个基本操作,无可打断,即使是最高优先级的中断到来,在这条指令执行期间,也必须等待,基本上任何中断才做只能在这条指令开始之前或者完成之后在执行】保证CPU不会因为中断问题和切换问题而产生冲突,造成操作中断,丢失数据。
前文《操作系统运转机制核心原理》中提到,操作系统是一个事件驱动型的软件系统,他有一个显著的特点,将所有操作划分为各个基本任务,对于每个基本任务都会进行合理调度。系统在进行任务切换的时候有两种方式,一种是系统响应外部事件,进行强实时性的切换,包括外部信号,时钟信号;另一种就是软件自行放弃执行,返回调度程序进行切换。在前文中,提到系统在运行一个程序的时候是在内核空间和用户空间不断的切换的,这种切换就是程序自行放弃执行操作的实例,一般发生在对资源的请求上,俗称内陷。
PV同步原语应用的领域就是内陷操作上。当系统调用各种资源(设备资源,临界资源)的时候,他会自动(编译时候自动添加)调用PV原语保存CPU现场资源到任务块,再次回来的时候,好用来恢复现场。
PV原语的基本构造:
P(sem){
sem = sem-1;