段的共享
在分页系统中, 虽然也能实现共享, 但远不如分段系统来得方便。若被共享的代码占 N 个页框, 则每个进程的页表中都要建立 N 个页表项, 指向被共享的 N 个页框。
在分段系统中, 不管该段有多大, 都只需为该段设置一个段表项, 因此非常容易实现共享。只需在每个进程的段表中设置一个段表项, 指向被共享的同一个物理段。
注意
- 这个被共享的物理段,可能未被调入内存,所以段的共享本质上是多个进程共享同一段代码和数据。
- 为了实现段的共享,我们还需要一个特殊的共享段表。
[[共享段表]]。
不能被任何进程修改的代码称为可重入代码或纯代码 (不属于临界资源), 它是一种允许多个进程同时访问的代码。为了防止程序在执行时修改共享代码, 在每个进程中都必须配以局部数据区, 将在执行过程中可能改变的部分复制到数据区, 这样, 进程就可对该数据区中的内容进行修改。