×
操作系统教程操作系统的定义和功能操作系统的类型

进程管理

与进程有关的时间操作系统CPU调度操作系统调度算法操作系统FCFS调度操作系统FCFS护航效果操作系统FCFS与开销操作系统最短作业优先(SJF)调度预测SJF进程的CPU突发时间最短剩余时间优先(SRTF)调度算法循环调度算法循环调度算法示例最高响应比下(HRRN)调度最高响应比下(HRRN)调度示例优先级调度非抢占式优先级调度抢先式优先级调度

同步

进程同步简介临界区问题锁定变量机制测试集锁定机制优先级反转开启可变或严格的交替方式感兴趣变量机制帕特森(Peterson)解决方案同步机制无需等待睡眠和唤醒信号量介绍计算信号量的问题计算信号量的问题二进制信号量或互斥量

死锁

死锁简介处理死锁的策略死锁预防避免死锁避免死锁使用RAG进行死锁检测死锁检测和恢复

内存管理

内存管理简介固定分区动态分区压缩(碎片整理)用于动态分区的位图链表动态分区分区算法分页技术分页技术实例二进制地址基础知识物理和逻辑地址空间页表从页表映射到主内存页表项查找最佳页面大小虚拟内存后备缓冲器按需分页转换页表页面替换算法Belady异常分段分页与分段比较分段的分页

文件管理

文件的属性文件上的操作文件访问方法目录结构一级目录两级目录树型结构目录非循环图结构化目录文件系统文件系统结构主引导记录(MBR)磁盘中的数据结构内存中的数据结构目录实现目录实现连续分配链表分配文件分配表索引分配链接索引分配索引节点空闲空间管理磁盘调度

感兴趣变量机制


必须确保进度必须由我们的同步机制提供。 在转向变量机制中,由于不想进入临界区的进程并没有考虑其他感兴趣的进程,所以没有提供进展。

另一个进程也将不得不等待,而不管临界区内部没有进程。 如果操作系统可以利用额外的变量以及转向变量,那么这个问题就可以解决,而且我们的问题可以在大部分范围内提供进展。

感兴趣的变量机制利用额外的布尔变量来确保提供进度。

对于进程Pi

Non CS   
Int[i] = T ;  
while ( Int[j] == T ) ;   
Critical Section  
Int[i] = F ;

对于进程Pj

Non CS  
Int [1] = T ;  
while ( Int[i] == T ) ;   
Critical Section   
Int[j]=F ;

在这个机制中,使用了一个额外的变量。 这是一个布尔变量,用于存储在临界区中的兴趣进程。

想要进入临界区的进程首先在入口区检查其他过程是否有兴趣进入内部。 该进程将等待直到另一个进程感兴趣的时间。

在退出部分,该进程使其感兴趣变量的值为false,以便其他进程可以进入临界区。

该表格显示了在场景中获得机会的进程和进程的利益变量的可能值。

Interest [Pi] Interest [Pj] 获得机会的过程
True True 首先表现出兴趣的进程。
True False Pi
False True Pj
False False X

让我们根据需求分析机制。

相互排斥
在感兴趣的变量机制中,如果一个进程有兴趣进入CPU,那么另一个进程将等待,直到它变得不感兴趣。 因此,临界区不能同时存在多个进程,因此该机制保证互斥。

进展

在这种机制中,如果一个进程不想进入临界区,那么它不会阻止另一进程进入临界区。 因此,这种方法肯定会提供进展。

有界等待

为了分析有界等待,让我们考虑两个过程Pi和Pj,合作过程是否希望在关键部分执行。 下面以相对方式显示过程执行的指令。

最初,这两个过程的利益变量是错误的。 进程Pi显示了进入临界区的兴趣。

它将其Interest变量设置为true,并检查Pj是否也有兴趣。 由于其他进程的兴趣变量是错误的,因此Pi将进入临界区。

同时,过程Pi被抢占并且Pj被调度。 Pj是一个合作过程,因此它也想进入关键部分。 它通过将兴趣变量设置为true来显示其兴趣。

它还检查其他流程是否也有兴趣。 我们应该注意到Pi被抢占了,但其感兴趣的变量是真实的,这意味着它需要在临界区进一步执行。 因此Pj不会有机会陷入while循环。

同时,CPU将Pi的状态从阻塞状态变为运行状态。 Pi尚未完成临界区,因此它完成临界区并通过将interest变量设置为False而退出。

现在,当Pi再次想要进入临界区并将其感兴趣的变量设置为true并且检查Pj的感兴趣变量是否为真时,情况是可能的。 在这里,Pj的兴趣变量是True,因此Pi将陷入while循环并等待Pj变得不感兴趣。

因为,Pj仍然停留在while循环中,等待Pi感兴趣的变量变为false。 因此,这两个进程都在等待对方,他们都没有进入临界区。

这是死锁的情况,在死锁的情况下永远不能提供有界的等待。

因此,我们可以说感兴趣的变量机制并不能保证死锁。

架构中立

该机制是在用户模式下执行的完整软件机制,因此它保证了可移植性或架构中立性。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)