`
eriol
  • 浏览: 400969 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CPU段式内存管理

    博客分类:
  • OS
阅读更多

逻辑地址如何转换为线性地址

 

 

一个逻辑地址由两部份组成,段标识符: 段内偏移量。段标识符是由一个16位长的字段组成,称为段选择符。其中前13位是一个索引号。后面3位包含一些硬件细节,最后两位涉及权限检查。如图:

 

 

 

 

 

索引号就是“段描述符(segment descriptor)”。段描述符描述了一个段。这样,很多个段描述符,就组了一个数组,叫“段描述符表”。然后可以通过段标识符的前13位,直接在段描述符表中找到一个具体的段描述符,这个描述符就描述了一个段。每一个段描述符由8个字节组成,如下图:

 

 

 

这里我们只关心Base字段,它描述了一个段的开始位置的线性地址。

 

 

Intel设计的本意是,一些全局的段描述符,就放在“全局段描述符表(GDT)”中。一些局部的,例如每个进程自己的,就放在所谓的“局部段描述符表(LDT)”中。那究竟什么时候该用GDT,什么时候该用LDT呢?这是由段选择符中的T1字段表示的,=0,表示用GDT,=1表示用LDT。

 

GDT在内存中的地址和大小存放在CPU的gdtr控制寄存器中,而LDT则在ldtr寄存器中。

 

下面是一个例子:

 

 

     首先,给定一个完整的逻辑地址[段选择符:段内偏移地址]

  1. 看段选择符的T1=0还是1,知道当前要转换是GDT中的段,还是LDT中的段,再根据相应寄存器,得到其地址和大小。我们就有了一个数组了。
  2. 拿出段选择符中前13位,可以在这个数组中,查找到对应的段描述符,这样,它了Base,即基地址就知道了。
  3. 把Base + offset,就是要转换的线性地址了。

Linux的段式管理

按照Intel的本意,全局的用GDT,每个进程自己的用LDT——不过Linux则对所有的进程都使用了相同的段来对指令和数据寻址。即用户数据段,用户代码段,对应的,内核中的是内核数据段和内核代码段。

在Linux下,逻辑地址与线性地址总是一致(是一致,不是有些人说的相同)的,即逻辑地址的偏移量字段的值与线性地址的值总是相同的。在Linux中,绝大部份进程并不例用LDT。

 

分享到:
评论

相关推荐

    2018080901006-刘文晨-OS实验二报告1

    5.2 CPU段式内存管理:逻辑地址转换为线性地址逻辑地址示意图如图8所示 5.3 CPU页式内存管理 CPU的页式内存管理单元,负责把一个线性地址,最终翻译

    X86CPU在段式管理下的地址形成机制

    X86 CPU在段式管理下的地址形成机制 以及BIOS初始化过程对这种机制的利用 陈英豪 中科院计算所

    Window s 中段页式内存管理硬件实现剖析

    本文依据80x86CPU 中的内存管理单元(MMU)的硬件工作原理,论证了Windows 环境下内存管理单元如何 进行内存单元的段页式寻址、保护检查和虚拟内存的实现过程以及有效地克服内存碎片问题的原理

    操作系统第四章.docx

    7、在分页内存管理系统中,假设采用16位地址,分页大小为4096B,页表中第0~7项对应的块号分别是11、7、0、2、3、8、14、1,求逻辑地址(16进制表示)2691h和6A53h对应的物理地址。写出计算过程。 分页大小为4096B

    基于javatcpsocket通信的拆包和装包源码-java:Java

    基于java tcp socket通信的拆包和装包源码 ...cpu段式管理:段式管理的基本原理是指把一个程序分成若干个段(segment)进行存储,每个段都是一个逻辑实体(logical entity)。一个用户作业或进程所包含的段对应一个二维

    linux 内核源代码分析

    1. 3 i386的页式内存管理机制 1. 4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 地址映射的全过程 2.3 几个重要的数据结构和函数...

    页面置换实习报告.docx

    页面置换实习报告 实习报告----页面置换算法 一、设计目的: 加深对请求页式存储管理实现原理的理解,掌握页面置换算法。 二、设计内容 设计一个进程,可以实现用户可以为程序指定内存块数,自由设置程序的页面访问...

    学生学籍管理信息系统

    硬件需求:10M以上的LAN接入网络带宽,P4 3.0G Xeon CPU /1G内存/360G(10K) SCSI硬盘的服务器,P3以上微机(带网卡)的客户机,P4 3.0G Xeon CPU /1G内存/36G(10K) RAID硬盘的数据库服务器 本系统采用vb实现,依靠其...

    2015年操作系统复习题.doc

    页式的地址是一维的,段式的地址是二维的 ( × )8.位示图方法可用于磁盘的调度管理。 ( × )9.虚拟设备是指把一个物理设备变换成多个对应的逻辑设备,它通过逻辑设备表来实 现的。 ( × )10.页式管理易于实现...

    《计算机操作系统》期末复习指导

    •兼有段式和页式管理的优点,系统复杂和开销增大,一般在大型机器上才使用。 第五章文件管理 1、文件管理任务与功能 任务:把存储、检索、共享和保护文件的手段,提供给操作系统本身和用户,以达到方便...

    计算机机房管理系统设计.doc

    掌握了计算机的 运行状态就能从中分析出整个机房的运行状态,并能掌握计算机内存、硬盘、CPU等硬件 的使用情况。同时实现对计算机日志、网络、进程等进行分析。还能从中了解到各种软 件对计算机的占用情况,为计算机...

    计算机系统课程.docx

    CPU运行程序是一条指令一条指令地执行的,而且指令地址往往是连续的,意思就是说CPU在访问内存时,在较短的一段时间内往往集中于某个局部,这时候可能会碰到一些需要反复调用的子程序。电脑在工作时,把这些活跃的子...

    电大计算机本科操作系统作业及答案.docx

    段式管理 在分页存储管理系统中,从页号到物理块号的地址映射是通过( )实现的。 A.段表 B.页表 C.PCB D.JCB 在页式存储管理系统中,整个系统的页表个数是( )个。 A.1个 B.2个 C.与页面数相同 D.和装入...

    电大计算机本科操作系统作业及答案定稿版.docx

    段式管理 在分页存储管理系统中,从页号到物理块号的地址映射是通过( )实现的。 A.段表 B.页表 C.PCB D.JCB 在页式存储管理系统中,整个系统的页表个数是( )个。 A.1个 B.2个 C.与页面数相同 D.和装入...

    电大计算机本科操作系统作业及答案(1).docx

    段式管理 在分页存储管理系统中,从页号到物理块号的地址映射是通过( )实现的。 A.段表 B.页表 C.PCB D.JCB 电大计算机本科操作系统作业及答案(1)全文共7页,当前为第3页。在页式存储管理系统中,整个系统的...

    电大计算机本科操作系统作业及答案(2).docx

    段式管理 在分页存储管理系统中,从页号到物理块号的地址映射是通过( )实现的。 A.段表 B.页表 C.PCB D.JCB 在页式存储管理系统中,整个系统的页表个数是( )个。 A.1个 B.2个 C.与页面数相同 D.和装入...

    oracle数据库dba管理手册

    第7章 回滚段管理 166 7.1 回滚段概述 166 7.1.1 数据库对回滚段的使用 166 7.1.2 激活回滚段 168 7.1.3 为事务处理指定回滚段 169 7.2 回滚段的空间使用 169 7.3 监控回滚段使用 173 7.3.1 监控当前空间分配 173 ...

    上海一家公司的C++试题集

    又叫内存保护模式,寻址采用32位段和偏移量,最大寻址空间4GB,在这种模式下,系统运行于多任务,设计这种模式的原因和好处是:保护模式增加了寻址空间,增加了对多任务的支持,增加了段页式寻址机制的内存管理...

    会议信息管理系统详细设计

    在窗体上放置多个文本框和下拉式文本框,用来输入学籍信息;两个按钮用来确定是否输入学籍信息;一个按钮用来退出窗体;多个标签用来提示文本框中需要输入的内容。 1.3.2修改学籍信息功能 点击学籍管理模块下的修改...

    Linux内核源代码情景分析 (上下册 高清非扫描 )

    1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 地址映射的全过程 2.3 几个重要的数据结构和函数 2.4 越界...

Global site tag (gtag.js) - Google Analytics