临界区段

科技工作者之家 2020-11-17

临界区段是指一连串由一个以上的process所执行的指令,因为某种原因,在执行完毕前不可被取回执行权。内存配置就是这样的一个例子。

程序设计师在谈及开发可抢先式多工处理系统中的软件时,经常会提到‘临界区段’这个名词。所谓的临界区段是指一连串由一个以上的process所执行的指令,因为某种原因,在执行完毕前不可被取回执行权。内存配置就是这样的一个例子。
如同大多数操作系统一般,Windows使用已有30年历史的演算法则来管理可使用的内存区块(并非这些演算法则已不合时宜,而是30年前所发展出来的演算法则已不满足所需要的功能了).其中一种特殊的演算法将可使用的内存区块以联结表(linkedlist)的形式来加以管理,每个区块有个描述元(descriptor)来定义其大小和位置。当使用者向系统要求内存时,Windows必须从可使用内存的联结表中解除区块的联结。
在解除联结的程序中途,表的数据结构可能会有不妥当的指针(pointer)或错误的标志位设定。如果系统在这个时刻进行重新排序,其他process可能碰巧会发出新的内存配置的要求。由于第一个process尚未完成,新的process在企图处理不正确的表数据结构时可能会弄错,而可能会将整个系统死锁。为了防止这个情况,处理串列的程序码必须在这段指令的进入和离开点之间维持为临界区段,一且process进人临界区段,系统便保证在它离开之前,其他process不得进入。这并不表示在某个临界区段执行时,系统必须忽略其他process。举例来说,若在一个冗长的临界区段执行忽略硬件中断,这就不是一个好的系统设计。
每次只允许一个process执行--个临界区段的技术有时也称为相互排斥(mutualexclu-sion),而几个process使用进入临界区段来争夺某种受保护的资源(如内存)的现象则称为竞争(contention)。Windows虚拟机器管理器在支持设备驱动程序的临界区段管理上已有很长的历史。可抢先排序法意味着Windows95必须支持API层次的临界区段管理。1

本词条内容贡献者为:

程鹏 - 副教授 - 西南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。