操作系统学习(十二) 、页级保护
一、页级保护方式
页目录和页表表项中的读写标志R/W和用户/超级用户标识U/S提供了分段机制保护属性的一个子集。分页机制只识别两级权限。特权级0、1和2被归类为超级用户级,而特权级3被称为普通用户级。普通用户级的页面可以被标志成只读/可执行或可读/可写/可执行。超级用户级的页面 对于超级用户来说总是可读/可写/可执行的,但普通用户不可访问。 对于分段机制,在最外层用户级执行的程序只能访问用户级的页面,但是在任何超级用户层(0、1、2)执行的程序 不仅可以访问用户层的页面,也可以访问超级用户层的页面。与分段机制不同的是,在内层超级用户级执行的程序对任何 页面都具有可读/可写/可执行权限,包括那些在用户级标注为只读/可执行的页面。
正如在整个80x86地址转换机制中分页机制是在分段机制之后实施一样,页级保护也是在分段机制 提供保护措施之后 发回作用 。首先,所有段级保护被检查和测试。如果通过检查,就会再进行页级保护检查。例如,仅当一个字节位于级别3执行的程序可访问段中,并且处于标志为用户级页面中时,这个内存中的字节才可被级别3上的程序访问。仅当分段和分页都允许写时,才能对页面执行 写操作。如果一个段是读/写类型的段,但是地址 对应的相应页面被标注为只读/可执行,那么还是不能对页面执行写操作。如果段的类型是只读/可执行,那么不管对应页面被赋何种保护属性,页面始终是没有写权限的。可见分段和分页保护机制就像电子线路中的串行线路,其中只要有一个开关没闭合上线路都不会通。
类似地,一个页面的保护属性有页目录和页表结构中表项的“串行”或“与操作”构成,页表表项中的U/S标志和R/W标志应用于该表项映射的单个页面。页目录项中的U/S和R/W标志则对该目录项所映射的所有页面起作用。页目录和页表的组合保护属性有两者属性的“与”操作构成,保护措施非常严格。
二、修改页表项的软件问题
这里提供了一些有关操作系统软件修改页表项内容所需遵守的规则。分页转换缓冲要求所有系统都须遵守这些规则。为了避免每次 内存应用都要访问驻留内存的页表,从而加快速度 ,最近使用的线性到物理地址的转换信息被保存在处理器内的页转换高速缓冲中。处理器在访问内存中的页表之前会首先利用缓冲中的信息。只有当必要的转换信息不在高速 缓冲中时,处理器才会搜寻内存中的页目录和页表。页转换高速缓冲也叫转换查找缓冲TLB(快表??)
80x86处理器并没有维护页转换高速缓冲和页表中数据的相关性,但是需要操作系统软件来确保它们一致。即处理器并不知道什么时候页表被软件修改过了。因此操作系统必须在改动过页表之后刷新高速缓冲以确保两者一致。通过简单地重新加载寄存器CR3,我们就可以完成对高速缓冲的刷新操作。
有一种特殊情况,在这种情况下修改页表项不需要刷新页转换高速缓冲。也即不存在页面的表项被修改时,及时是把P标志从0改成1来标注表项对页转换有效,也不需要刷新高速缓冲。因为无效的表项不会被存入高速缓冲中。所以在把一个页面从磁盘调入内存以使页面存在 时,我们不需要刷新页转换高速缓冲。