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

进程管理

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

同步

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

死锁

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

内存管理

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

文件管理

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

锁定变量机制


这是最简单的同步机制。 这是一个在用户模式下实现的软件机制。 这是一个繁忙的等待解决方案,可用于两个以上的进程。

在这个机制中,使用了锁变量lockis。 两个锁定值是可能的,可以是01。锁定值0表示临界区域是空的,而锁定值1表示它被占用。

想要进入临时部分的进程首先检查锁定变量的值。 如果它是0,那么它将锁的值设置为1并进入临界区,否则等待。

该机制的伪代码如下所示。

Entry Section →   
While (lock! = 0);   
Lock = 1;  
//Critical Section   
Exit Section →  
Lock =0;

如果我们看一下伪代码,发现代码中有三个部分。 入口部分,临界区和退出部分。

最初锁定变量的值为0。需要进入临界区的进程进入入口区并检查while循环中提供的条件。

该进程将无限等待,直到锁定值为1(while循环暗示该值)。 因为在第一次临界区是空的,因此该过程将通过将锁变量设置为1而进入临界区。

当进程从临界区退出时,在退出部分,它将锁的值重新指定为0。

每个同步机制是根据四个条件来判断的。

  • 相互排斥
  • 进程
  • 有界等待
  • 可移植性

在四个参数中,互斥和进度必须由任何解决方案提供。在上述条件的基础上分析这个机制。

相互排斥

在某些情况下,锁定变量机制不提供互斥。 这可以通过操作系统视图I.E,查看伪代码来更好地描述。 程序的汇编代码。 让我们将代码转换为汇编语言。

  1. Load Lock, R0
  2. CMP R0, #0
  3. JNZ Step 1
  4. Store #1, Lock
  5. Store #0, Lock

考虑一下有两个进程P1和P2。 过程P1想要执行其临界区。 P1进入入口部分。 由于锁的值为0,因此P1将其值从0更改为1并进入临界区。

同时,P1被CPU抢占,P2被安排。 现在临界区没有其他进程,并且锁变量的值为0。 P2还想执行其临界区。 它通过将lock变量设置为1进入临界区。

现在,CPU将P1的状态从等待改为运行。 P1尚未完成其临界区。 P1已经检查了锁定变量的值,并且在先前检查它时记得其值为0。 因此,它也会进入临界区而不检查锁定变量的更新值。

现在,在临界区有两个进程。 根据相互排斥的条件,临界区中的一个以上的过程不得同时出现。 因此,锁定变量机制不能保证互斥。

锁变量机制的问题在于,同时,多个进程可以看到空标签,并且在临界区中可以输入多个进程。 因此,锁变量不提供互斥,这就是为什么它不能被普遍使用。

因为这种方法在基本步骤上失败了; 因此,没有必要谈谈要实现的其他条件。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)