Linux内核学习第4天

举报
远航 | FIBOS 发表于 2020/12/01 00:23:14 2020/12/01
【摘要】 保护模式内存管理 分页机制(支持虚拟存储技术)      (1)虚拟存储:是一种内存管理技术,“虚拟化”线性地址空间的方法      (2)使用分页将段划分成页面(通常为4K),页面存储于物理内存或硬盘上,操作系统通过维护页表或页目录来管理,当程序访问线性地址空间的一个地址位置时,处理器会使用页目录和页表来转换为物理地址。如果访问的页面不在物理内存上,处...
保护模式内存管理

  1. 分页机制(支持虚拟存储技术)
         (1)虚拟存储:是一种内存管理技术,“虚拟化”线性地址空间的方法
         (2)使用分页将段划分成页面(通常为4K),页面存储于物理内存或硬盘上,操作系统通过维护页表或页目录来管理,当程序访问线性地址空间的一个地址位置时,处理器会使用页目录和页表来转换为物理地址。如果访问的页面不在物理内存上,处理器会产生一个中断,然后将该页面载入到物理内存。
         *段表存储在线性地址空间;页表存储在物理内存中
  2. 保护
        *80X86支持两种保护:一是通过给每个任务不同的虚拟地址空间来隔绝各个任务
                                            二是通过保护机制
        (1)任务之间的保护
                 *80X86使用的是把不同任务放在不同的虚拟地址空间中,给予每个任务不同的逻辑地址到物理地址的变换映射。
                 *全局地址空间:所有任务具有的相同虚拟地址空间
                   局部地址空间:每个任务唯一的虚拟地址空间
        (2)特权级保护(定义了4个执行特权级,0最高,3最低)
                 *每一个内存段都与一个特权级相关联
                 *CPL:Current Privilege Level 当前特权级,定义了当前活动代码段的特权级,确定了哪些段能被程序访问
                 *每个特权级都有自己的程序栈
分段机制
  1. 段的定义:段是虚拟地址到线性地址转换机制的基础
          (1)段由三个参数定义
                   *段基地址Base address:指定段在线性地址空间中的开始地址,基地址是线性地址,偏移为0
                   *段限长Limit:是虚拟地址空间中段内最大可用偏移地址,定义了段的长度
                   *段属性Attributes:描述了段的属性,如是否可读可写或作为程序执行以及段的特权级
          (2)逻辑地址---->线性地址:
                   *使用段选择符中的偏移值(段索引)在GDT或LDT表中定位相应的段描述符
                   *利用段描述符检验段的访问权限和范围
                   *把段描述符中的基地址加到偏移量上,形成线性地址
     

  2. 段描述符表:是段描述符的一个数组
         (1)分类:GDT(全局描述符表)
                             LDT(局部描述符表)
                             

          (2)GDT
                      *每个系统必须定义一个GDT
                      *GDT本身不是一个段,是线性地址中的数据结构
                      *处理器不使用GDT的第一个描述符
                      *LDT的段描述符必须包含于GDT中


文章来源: blog.csdn.net,作者:冰水比水冰,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/luoyhang003/article/details/24815205

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。