博客
关于我
保护模式(一)
阅读量:279 次
发布时间:2019-03-01

本文共 1209 字,大约阅读时间需要 4 分钟。

保护模式

任何复杂的设计都有其基础,理解复杂的内容从简单入手更为重要。保护模式可以追溯到最基本的机制,它通过分页和分段机制实现内存管理的安全性和保护性。

分页机制

在单任务时代,计算机内存分为两部分:一部分给操作系统,另一部分给应用程序。然而,多任务环境下,由于程序的地址在编译时就已经确定,若两个程序同时运行,可能会产生地址冲突。早期的解决方案并不能有效解决问题,因为它需要频繁地修改程序地址,带来较大的性能开销。此外,一次性修改其他程序的内存可能导致严重的系统故障。

为了解决这些问题,虚拟地址的概念被引入。例如,当程序A访问BASE_A+X时,通过映射表找到BASE_A对应的物理地址A1,然后加上偏移量X,最终访问A1+X。这种方式即使BASE_B等于BASE_A也不会产生冲突,整个过程由硬件MMU自动完成。

然而,一一映射的方法内存占用过大,因此采用分页表的方法。将内存分为4KB的页段,每个页段的起始地址存入映射表,缩小了内存占用至4MB。具体实现中,地址分为高20位页表索引和低12位偏移量,通过查找页表找到物理地址,最终确定实际访问位置。

分页机制的应用不仅限于内存管理,还包括文件映射。当文件太大无法完全加载时,触发缺页中断,动态分配内存并从磁盘读取。COW机制进一步优化了共享内存的管理,避免不必要的复制操作。

针对早期内存容量有限的问题,多级页表(如二级页表)被提出。页目录存储各页表地址,各页表存储内存页地址。通过多级分割,减少了页表大小,但增加了访问次数,进而优化了性能。CPU为了加速页表访问,配备了TLB缓存,减少了不命中率,提升了整体效率。

分段机制

分段机制通过将内存划分为不同的段(如代码段、数据段、BSS段等),实现了内存的保护和隔离。每个段都有自己的基址和长度,段表记录段的属性和访问权限。段表中的基址和长宽分别存储在段表中,段的起始地址由程序中指定的段选择符和基址计算得出。这种机制确保了不同段之间的隔离性,防止了非法访问和修改。

页表标志位

页表中的标志位提供了丰富的功能选项。P位表示物理存在状态,R/W位控制可读写权限,U/S位区分特权和普通权限,PWT位控制缓存策略,PCD位禁止缓存,A位跟踪访问情况,D位判断页面是否修改。PS位区分4KB和4MB页面,G位用于进程间共享。

PS位在页目录中置1时,表示使用4MB物理页面,避免了两级页表的必要性。D位有助于判断页面是否需要写入磁盘,A位记录页面首次访问时间。这些标志位为页表管理提供了灵活的配置选项。

应用实例

页表机制在多个方面发挥着重要作用。文件映射技术通过虚拟地址将大文件分成多个页面处理,确保内存利用最大化。COW机制在多进程共享时避免数据复制,提升内存效率。

保护模式通过分页和分段机制实现了进程的隔离性和内核的安全性。硬件权限控制确保了操作系统和内核代码的完整性,为现代操作系统的稳定运行奠定了基础。

转载地址:http://vbao.baihongyu.com/

你可能感兴趣的文章
ParameterizedThreadStart task
查看>>
Paramiko exec_命令的实时输出
查看>>
Spring security之管理session
查看>>
paramiko模块
查看>>
param[:]=param-lr*param.grad/batch_size的理解
查看>>
spring mvc excludePathPatterns失效 如何解决spring拦截器失效 excludePathPatterns忽略失效 拦截器失效 spring免验证拦截器不起作用
查看>>
Spring Cloud 之注册中心 EurekaServerAutoConfiguration源码分析
查看>>
Parrot OS 6.2 重磅发布!推出全新 Docker 容器启动器
查看>>
Parrot OS 6.3 发布!全面提升安全性,新增先进工具,带来更高性能
查看>>
ParseChat应用源码ios版
查看>>
Part 2异常和错误
查看>>
Pascal Script
查看>>
Spring Boot集成Redis实现keyspace监听 | Spring Cloud 34
查看>>
Spring Boot中的自定义事件详解与实战
查看>>
Passport 密码模式
查看>>
Spring Boot(七十六):集成Redisson实现布隆过滤器(Bloom Filter)
查看>>
passwd命令限制用户密码到期时间
查看>>
Spring Boot 动态加载jar包,动态配置太强了!
查看>>
Spring @Async执行异步方法的简单使用
查看>>
PAT (Basic Level) Practice 乙级1021-1030
查看>>