操作系统

进程的互斥
假设由两个进程Pa和Pb,共享内存MS。其中MS分为三个区域:系统区、进程工作区和数据区。数据区被划为大小相等的块。系统区主要是堆栈S,其中存放那些空数据块的地址。
操作系统_第1张图片
当进程要求空数据块时,从堆栈最顶部取出所需的数据块,当进程释放数据块时,则把所释放数据块的地址放入堆栈顶部。
临界资源:一次仅允许一个进程使用共享资源。
临界区:进程中访问临界资源的一段代码。
进入区:在进入临界区之前,检查可否进入临界区的一段代码。如果可以进入临界区,通常设置相应的“正在访问临界区”标志
退出区:用于将“正在访问临界区”标志清除。
剩余区:代码中剩余部分。
临界区是由属于不同并发进程的程序段共享数据或公用数据变量而引起的。临界区也可以被称为访问公用数据的那段程序。
间接制约
一般来说,可以把那些不允许交叉执行的临界区按不同的公用数据划分为不同的集合即类,对类给定一个唯一的标识名,系统很容易区分它们。
间接制约:由于共享某一共有资源而引起的在临界区内不允许并发进程交叉执行的现象,称为共享公有资源而造成的对并发进程执行速度的间接制约。
“间接”主要时指各并发进程由于公有资源制约,而不是进程间的直接制约。
受间接制约的类中各程序段在执行顺序上是任意的。
对于每一类,系统应有想应的分配和释放相应公有资源的管理办法,以制约并发进程。这就是互斥。
进程互斥所引起的制约
互斥:不允许进程交叉执行,即不允许两个以上的进程共享资源。
一组并发进程必须满足如下准则:
1.空闲让进
2.忙则等待
3.让权让进
4.有限等待
PV原语实现进程的互斥
信号量:
信号量sem是一个整数。
在sem大于等于0时,表示的是资源实体数;sem小于等于0时,则表示正在等待使用临界区的进程数
用于互斥的信号量sem的初值应该大于等于0.
建立一个信号量须说明所建立信号量所代表的意义,和赋初值以及建立相应的数据结构以便指向那些等待使用该临界区的进程。
PV原语
信号量的数值仅能由P、V原语操作改变。
采用P、V原语可以把类名为S的临界区描述为:When S do P(sem) 临界区 V(sem) od
sem是与临界区内所使用的公用资源有关的信号量
一次P原语操作使得信号量sem减1,而一次V原语操作将是的信号量sem加1.
PV原语操作功能
操作系统_第2张图片
PV原语必须以原语实现,且在执行期间不允许中断打发生
当一个进程进入临界区时,他必须先执行P原语操作以将信号量sem减一,在一个进程完成后,必须执行V原语释放进程所占领的临界区。

你可能感兴趣的:(操作系统)