内存寻址 Embedded Operating Systems2 在 intelx86 处理器下,有三种不同的地址 逻辑地址:每个逻辑地址由一个段 (segment) 和偏 移量 (offset) 组成 线性地址: 32 位无符号整数,可以表示 4G 的地址.

Slides:



Advertisements
Similar presentations
首 页 首 页 上一页 下一页 本讲内容 投影法概述三视图形成及其投影规律平面立体三视图、尺寸标注 本讲内容 复习: P25~P31 、 P84~P85 作业: P7, P8, P14[2-32(2) A3 (1:1)]
Advertisements

一、统计范围 注册地在湖里区的具有房地产开发资质的 房地产开发企业 无论目前是否有开发项目 无论开发的项目是在湖里区还是在其他区 没有开发项目的企业需要报送年报和月报 中的资金表(空表)。 新成立的项目公司,要先入库,再报报表。
第十二章 常微分方程 返回. 一、主要内容 基本概念 一阶方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程.
概率统计( ZYH ) 节目录 3.1 二维随机变量的概率分布 3.2 边缘分布 3.4 随机变量的独立性 第三章 随机向量及其分布 3.3 条件分布.
第 12 章位运算 C 语言兼具高级语言及低级语言的特性,因此 适合编写系统软件。 C 语言具备低级语言的特性 就在于它能直接对硬件进行操作,即位运算。 所谓位运算是指,按二进制位进行的运算。 例如,将一个存储单元中各二进位左移或右移一 位等。
DCN 多核防火墙快速配置之 目的 NAT 配置 神州数码网络 蒋忠平.
PHPCMS 使用指南及二次开发向导 --- 系统设置篇 PHPCMS 网络培训课程 --- 系统设置篇 PHPCMS 项目部 王官庆制作 系统相关设置 1. 站点管理 2. 发布点管理 3. 系统其它设置 管理员设置 1. 角色定义 2. 管理员管理.
HistCite 结果分析示例 罗昭锋. By:SC 可能原因:文献年度过窄,少有相互引用.
实验:验证牛顿第二定律. 1 、实验目的:探究 a 与 F 、 m 的定量关系 2 、实验原理:控制变量法 A 、 m 一定时,探究 a 随 F 的变化关系 B 、 F 一定时, 探究 a 随 m 的变化关系.
计算机 在分析化学的应用 ( 简介 ) 陈辉宏. 一. 概述 信息时代的来临, 各门学科的研究方法都 有了新的发展. 计算机的介入, 为分析化学的进展提供了 一种更方便的研究方法.
编译程序 构造原理和实现技术 授课教师:吕江花. 第一章 编译程序概述 主要内容: 几个基本概念 编译器的工作过程概述 编译器各个阶段的功能描述 编译程序的实现途径.
主要内容  LR(0) 分析. 0 S→  E # E→  E+T E→  T T→  id T→  ( E ) 1 S→E  # E→E  +T 5 T→id  3 E→E+  T T→  id T→  (E) 4 E→E+T  9 E→T  6 T→(  E) E→
嵌入式操作系统 陈香兰 Fall 系统调用 10/27/09 嵌入式 OS 3/12 系统调用的意义  操作系统为用户态进程与硬件设备进行交互提供 了一组接口 —— 系统调用  把用户从底层的硬件编程中解放出来  极大的提高了系统的安全性  使用户程序具有可移植性.
系统调用 Embedded Operating Systems2 系统调用的意义 操作系统为用户态进程与硬件设备进行交互提 供了一组接口 —— 系统调用 把用户从底层的硬件编程中解放出来 极大的提高了系统的安全性 使用户程序具有可移植性.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第六十二讲 ) 离散数学. 最后,我们构造能识别 A 的 Kleene 闭包 A* 的自动机 M A* =(S A* , I , f A* , s A* , F A* ) , 令 S A* 包括所有的 S A 的状态以及一个 附加的状态 s.
1 为了更好的揭示随机现象的规律性并 利用数学工具描述其规律, 有必要引入随 机变量来描述随机试验的不同结果 例 电话总机某段时间内接到的电话次数, 可用一个变量 X 来描述 例 检测一件产品可能出现的两个结果, 也可以用一个变量来描述 第五章 随机变量及其分布函数.
主讲教师:陈殿友 总课时: 124 第八讲 函数的极限. 第一章 机动 目录 上页 下页 返回 结束 § 3 函数的极限 在上一节我们学习数列的极限,数列 {x n } 可看作自变量 为 n 的函数: x n =f(n),n ∈ N +, 所以,数列 {x n } 的极限为 a, 就是 当自变量 n.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第四十八讲 ) 离散数学. 例 设 S 是一个非空集合, ρ ( s )是 S 的幂集合。 不难证明 :(ρ(S),∩, ∪,ˉ, ,S) 是一个布尔代数。 其中: A∩B 表示 A , B 的交集; A ∪ B 表示 A ,
第十一章 曲线回归 第一节 曲线的类型与特点 第二节 曲线方程的配置 第三节 多项式回归.
第二部分 行政法律关系主体 第一节 行政主体 一、行政主体 (一)行政主体的概念 cc (二)行政主体资格含义及构成要件 CASE1CASE1\CASE2CASE2 (三)行政主体的职权和职责 1 、行政职权的概念及内容 2 、行政职权的特点 3 、行政职责.
线性代数习题课 吉林大学 术洪亮 第一讲 行 列 式 前面我们已经学习了关 于行列式的概念和一些基本 理论,其主要内容可概括为:
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第二十五讲 ) 离散数学. 定理 群定义中的条件 ( 1 )和( 2 )可以减弱如下: ( 1 ) ’ G 中有一个元素左壹适合 1 · a=a; ( 2 ) ’ 对于任意 a ,有一个元素左逆 a -1 适 合 a -1 ·
Linux 操作系统分析 主讲:陈香兰 助教:贾永泉、毛熠璐 (西区电三 421 ) Autumn 2007.
Linux 内核源代码导读 中国科学技术大学计算机系 陈香兰( 0551 - ) Spring 2009.
内存寻址 Embedded Operating Systems2 在 intelx86 处理器下,有三种不同的地址 逻辑地址:每个逻辑地址由一个段 (segment) 和偏 移量 (offset) 组成 线性地址: 32 位无符号整数,可以表示 4G 的地址 空间.
嵌入式操作系统 陈香兰 Spring 2006 中国科学技术大学计算机系.
第二章 随机变量及其分布 第一节 随机变量及其分布函数 一、随机变量 用数量来表示试验的基本事件 定义 1 设试验 的基本空间为 , ,如果对试验 的每一个基 本事件 ,规定一个实数记作 与之对应,这样就得到一个定义在基本空 间 上的一个单值实函数 ,称变量 为随机变量. 随机变量常用字母 、 、 等表示.或用.
第 4 章 过程与变量的作用范围. 4.1 Visual Basic 的代码模块 Visual Basic 的应用程序是由过程组成的, 过程代码存放在模块中。 Visual Basic 提供了 三类模块,它们是窗体模块、标准模块和类 模块。 窗体模块 窗体模块是大多数 Visual Basic.
数 学 系 University of Science and Technology of China DEPARTMENT OF MATHEMATICS 第 3 章 曲线拟合的最小二乘法 给出一组离散点,确定一个函数逼近原函数,插值是这样的一种手段。 在实际中,数据不可避免的会有误差,插值函数会将这些误差也包括在内。
实验三: 用双线性变换法设计 IIR 数字滤波器 一、实验目的 1 熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法。 2 掌握数字滤波器的计算机仿真方法。 3 通过观察对实际心电图信号的滤波作用, 获得数字滤波的感性知 识。
嵌入式操作系统 陈香兰 助教:毛熠璐、吴昊 Spring 2008.
外文文献检索示例. 实验目的: 掌握利用计算机网络检索外文文献的基本方法; 了解熟悉下列数据库的结构、内容并掌握其检索方 法 ; 掌握检索的主要途径:出版物( Publication )、关键 词( Keyword )、作者( Author )等。
OS 进程调度模拟演示 制作人: 钱晶 高上上. OS 进程调度模拟-实验原理 静态优先级原理 在这种方式下,系统一旦把处理机分配给就绪队 列中的优先权最高的进程后,该进程便一直执行下去, 直至完成。或因为发生某事件使该进程放弃处理机,系 统方可再将处理机分配给另一优先级最高的进程。这些 事件包括有优先级更高的进程进入,或是因为某些原因.
信息利用与学术论文写作 Library of Jiangsu University, Zhenjiang Sha Zhenjiang
量子化学 第四章 角动量与自旋 (Angular momentum and spin) 4.1 动量算符 4.2 角动量阶梯算符方法
主讲教师:陈殿友 总课时: 124 第十一讲 极限的运算法则. 第一章 二、 极限的四则运算法则 三、 复合函数的极限运算法则 一 、无穷小运算法则 机动 目录 上页 下页 返回 结束 §5 极限运算法则.
在发明中学习 线性代数 概念的引入 李尚志 中国科学技术大学. 随风潜入夜 : 知识的引入 之一、线性方程组的解法 加减消去法  方程的线性组合  原方程组的解是新方程的解 是否有 “ 增根 ” ?  互为线性组合 : 等价变形  初等变换  高斯消去法.
第十章 目标代码生成  目标代码 ( 单寄存器 )  临时变量的存储空间分配  寄存器的分配和释放.
Photoshop CS4 标准培训教程 第三章第三章 在 Photoshop CS4 中所谓的不规则选区指的是随意性强,不被局限在几何形状内, 他们可以是鼠标任意创建的也可以是通过计算而得到的单个选区或多个选区。在 Photoshop 中可以用来创建不规则选区的工具被分组放置到套索工具组、魔棒工具组.
1 学籍归档工作 年学籍归档工作安排 从 2008 年开始,改为按届移交档案 从 2008 年开始,改为按届移交档案 今年的归档工作范围: 今年的归档工作范围: 2014 年应届毕业班级 2014 年应届毕业班级 2014 年办理毕业证的往届生。 2014 年办理毕业证的往届生。 整理内容:根据.
第一节 相图基本知识 1 三元相图的主要特点 (1)是立体图形,主要由曲面构成; (2)可发生四相平衡转变; (3)一、二、三相区为一空间。
第5章 键盘与鼠标接口 5.1 键盘概述 5.2 键盘的工作原理 5.3 PC扩展键盘接口 5.4 键盘中断与键盘I/O 5.5 鼠标接口.
量子力学教程 ( 第二版 ) 3.4 连 续 谱 本 征 函 数 的 归 一 化 连续谱本征函数是不能归一化的 一维粒子的动量本征值为的本征函数 ( 平面波 ) 为 可以取 中连续变化的一切实数值. 不难看出,只要则 在量子力学中, 坐标和动量的取值是连续变化 的 ; 角动量的取值是离散的.
第二章 处理器管理 南通大学电子信息学院 2010 年 9 月. 第二章 处理器管理 2.1 中央处理器 2.2 中断技术 2.3 进程及其实现 2.4 线程及其实现 2.5 Linux 进程和线程 2.6 Windows 2003 进程和线程 2.7 处理器调度 2.8 作业的管理与调度 2.9.
第 3 章 控制流分析 内容概述 – 定义一个函数式编程语言,变量可以指称函数 – 以 dynamic dispatch problem 为例(作为参数的 函数被调用时,究竟执行的是哪个函数) – 规范该控制流分析问题,定义什么是可接受的控 制流分析 – 定义可接受分析在语义模型上的可靠性 – 讨论分析算法.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第五十三讲 ) 离散数学. 定义 设 G= ( V , T , S , P ) 是一个语法结构,由 G 产生的语言 (或者说 G 的语言)是由初始状态 S 演绎出来的所有终止符的集合, 记为 L ( G ) ={w  T *
编译原理总结. 基本概念  编译器 、解释器  编译过程 、各过程的功能  编译器在程序执行过程中的作用  编译器的实现途径.
周期信号的傅里叶变换. 典型非周期信号 ( 如指数信号, 矩形信号等 ) 都是满足绝对可 积(或绝对可和)条件的能量信号,其傅里叶变换都存在, 但绝对可积(或绝对可和)条件仅是充分条件, 而不是必 要条件。引入了广义函数的概念,在允许傅里叶变换采用 冲激函数的前提下, 使许多并不满足绝对可积条件的功率.
 符号表  标识符的作用: 声明部分:定义了各种对象及对应的属性和 使用规则。 程序体:对所定义的对象进行各种操作。 $ididname IdnameAttributeIR  必要性 Token : 新表-符号表(种类、类型等信息):
Department of Mathematics 第二章 解析函数 第一节 解析函数的概念 与 C-R 条件 第二节 初等解析函数 第三节 初等多值函数.
网上预约集港操作指南 一、登录系统 登陆下面图片显示网址:输入堆场用户名、密码和校验码登陆系统.
首 页 首 页 上一页 下一页 本讲内容本讲内容 视图,剖视图(Ⅰ) 复习: P107 ~ P115 作业: P48(6-2,6-4), P49( 去 6-6) P50, P51(6-13), P52 P50, P51(6-13), P52 P53 (6-18,6-20) P53 (6-18,6-20)
《 UML 分析与设计》 交互概述图 授课人:唐一韬. 知 识 图 谱知 识 图 谱知 识 图 谱知 识 图 谱.
1 、如果 x + 5 > 4 ,那么两边都 可得 x >- 1 2 、在- 3y >- 4 的两边都乘以 7 可得 3 、在不等式 — x≤5 的两边都乘以- 1 可得 4 、将- 7x — 6 < 8 移项可得 。 5 、将 5 + a >- 2 a 移项可得 。 6 、将- 8x < 0.
项目七: PLC 功能指令应用 带进位循环左移指令 XXXXX. 项目七: PLC 功能指令应用 FX2 系列可编程控制器移位控制指令有移位、循环移位、字移位 及先进先出 FIFO 指令等 10 条指令。 带进位循环右移指令 RCR 带进位循环左移指令 RCL 字右移位指令 WSFR 先入先出读出指令.
第四章 计算机数控( CNC )系统  本章重点:  1 计算机数控系统构成及其结构特点  2 运动轨迹插补原理  3 刀具补偿.
§10.2 对偶空间 一、对偶空间与对偶基 二、对偶空间的有关结果 三、例题讲析.
企业产品标准信息公共服务平台 操作介绍 目录 一 、系统架构介绍 二 、企业产品标准自我声明填报系统 三 、企业产品标准公示系统.
表单自定义 “ 表单自定义 ” 功能是用于制作表单的 工具,用数飞 OA 提供的表单自定义 功能能够快速制作出内容丰富、格 式规范、美观的表单。
项目 1 典型低压电器 的拆装、检修及调试 任务 2 交流接触器的拆装与检修 接触器是一种自动的电磁式自动开关,是 一种依靠电磁力作用使触点闭合或分离的自 动电器,用于接通和断开电动机或其它用电 设备电路。适用于远距离频繁地接通或断开 交直流主电路及大容量控制电路。交流接触 器具有控制容量大、操作方便、便于远距离.
力的合成 力的合成 一、力的合成 二、力的平行四边形 上一页下一页 目 录 退 出. 一、力的合成 O. O. 1. 合力与分力 我们常常用 一个力来代替几个力。如果这个 力单独作用在物体上的效果与原 来几个力共同作用在物体上的效 果完全一样,那么,这一个力就 叫做那几个力的合力,而那几个 力就是这个力的分力。
逻辑设计基础 1 第 7 章 多级与(或)非门电路 逻辑设计基础 多级门电路.
八. 真核生物的转录 ㈠ 特点 ① 转录单元为单顺反子( single cistron ),每 个蛋白质基因都有自身的启动子,从而造成在功能 上相关而又独立的基因之间具有更复杂的调控系统。 ② RNA 聚合酶的高度分工,由 3 种不同的酶催化转 录不同的 RNA 。 ③ 需要基本转录因子与转录调控因子的参与,这.
1 第三章 数列 数列的概念 考点 搜索 ●数列的概念 ●数列通项公式的求解方法 ●用函数的观点理解数列 高考 猜想 以递推数列、新情境下的 数列为载体, 重点考查数列的通 项及性质, 是近年来高考的热点, 也是考题难点之所在.
§9. 恒定电流场 第一章 静电场 恒定电流场. 电流强度  电流:电荷的定向移动  正负电荷反方向运动产生的电磁效应相同 ( 霍尔效应 特例 ) 规定正电荷流动的方向为正方向  电流方向:正方向、反方向  电流强度 ( 电流 ) A 安培 标量 单位时间通过某一截面的电荷.
目录 上页 下页 返回 结束 二、无界函数反常积分的审敛法 * 第五节 反常积分 无穷限的反常积分 无界函数的反常积分 一、无穷限反常积分的审敛法 反常积分的审敛法  函数 第五章 第五章.
本章讨论有限自由度结构系统,在给定载荷和初始条件激励下的系统动力响应计算方法。 第 六 章
2. MCS-51 单片机的组成及结构分析 2.1 MCS-51 单片机的内部结构及结构特点 1 )在 RAM 区有一个寄存器工作区( 4×8 个工作寄存器), 专门功能寄存器 SFR (完成定时器、串行口、中断逻辑等 控制)。 2 )程序存储器与数据存储器在空间上分开。 有不同的地址指针 PC 、
§7.2 估计量的评价标准 上一节我们看到,对于总体 X 的同一个 未知参数,由于采用的估计方法不同,可 能会产生多个不同的估计量.这就提出一 个问题,当总体的一个参数存在不同的估 计量时,究竟采用哪一个好呢?或者说怎 样评价一个估计量的统计性能呢?下面给 出几个常用的评价准则. 一.无偏性.
上机任务 认真查看课件内容,理解: ① ① I/O 接口的含义 ② ② I/O 端口与编址 上网查阅资料,至少找一篇 “I/O 接口 ” 有关的技术 资料(比如显卡、或声卡、网卡、磁盘控制器等 ) 的工作原理)并仔细阅读,扩展知识面。
Presentation transcript:

内存寻址

Embedded Operating Systems2 在 intelx86 处理器下,有三种不同的地址 逻辑地址:每个逻辑地址由一个段 (segment) 和偏 移量 (offset) 组成 线性地址: 32 位无符号整数,可以表示 4G 的地址 空间 物理地址:用于芯片级内存单元寻址。它们与从 CPU 的地址引脚发送到内存总线上的电信号相对应 地址转换过程 物理地址线性地址 分段单元分页单元 逻辑地址

Operating Systems3 为什么需要内存寻址机制? 保护内核不受恶意或者无意的破坏 隔离各个用户进程 方便程序的编写,使程序员可以抛开对物理内 存的考虑,而且理论上可以使用任意大小的空 间

Operating Systems4 硬件的分段单元( 1 ) 段寄存器 (segment register) I386 体系结构采用分段机制 逻辑地址 = 段:段内偏移 使用段寄存器指明当前使用的段 16 位的段寄存器,有六个: cs,ss,ds,es,fs 和 gs 其中 3 个寄存器 CPU 规定了专门的用途 cs 代码段寄存器,指向存放程序指令的段 ss 堆栈段寄存器,指向存放当前程序栈的段 ds 数据段寄存器,指向存放数据的段

Operating Systems5 在实模式中( 20 位) 段寄存器记录段基址的高 16 位 不采用虚拟地址空间,直接采用物理地址空间 物理地址 = 段寄存器值 *16+ 段内偏移 在保护模式( 32 位) 采用基于分页技术的虚拟地址空间 段寄存器无法直接记录段的信息,因此需要与 GDT 表配合使用 GDT 中记录了每个段的信息(段描述符),段寄存 器只需记录段在 GDT 中的序号

Operating Systems6 注意: cs 寄存器还有一个很重要的功能 : 它含有一 个两位的域,用以指明 CPU 当前特权级 (current privilege level, CPL) ,值为 0 代表最高优先级,值 为 3 代表最低优先级 虚拟地址 = 段基地址 + 段内偏移 其中,段基地址是根据段寄存器所指明的 GDT 中的段描 述符中的信息得到的 物理地址:根据页表对虚拟地址进行转换而得到

Operating Systems7 段描述符 (segment descriptor) 每个段由一个段描述符来表示,一个段描述符 长度为 8 个字节 全局描述符表 (global description table, GDT) 就用来存放段描述符 GDTR 寄存器用来存放 GDT 的起始地址(物理 地址)

Operating Systems8 段描述符的格式 段基址、 段长度、 其他属性

Operating Systems9 段选择子 段寄存器中值称为段选择子,长度为 16 位 13 位的索引,指定 GDT 表中的相应的段描述符 1 位的 TI(Table Indicator) ( 跟 LDT 表有关, Linux 中基本未使用) 2 位 RPL(request privilege level) 当相应的段选择符装入到 cs 寄存器中时,表明了 CPU 的当前特权级(用户 / 内核) indexTIRPL Segment selector

Operating Systems10 段选择子的使用

Operating Systems11 逻辑地址到线性地址的转换

Operating Systems12 Linux 中的段 基于下面两个原因, linux 中只使用了几个段 段和页的同时存在在一定程度上有点多余。 因为两者都可以划分进程的物理空间 所有的进程希望使用同样的 0-4G 的逻辑空间。 这样程序员不必考虑进程地址的问题,也让内核的 内存管理变得简单一些

Operating Systems13 Linux 下的全局描述符表(部分)

Operating Systems14 __KERNEL_CS 0x10= b 内核代码段,在 GDT 中相应的段描述符各个域 有如下值 Index=2RPL=0 特权级

Operating Systems15 __KERNEL_DS 0x18= b 内核数据段,在 GDT 中相应的段描述符各个域 有如下值 Index=3RPL=0 特权级

Operating Systems16 __USER_CS 用户代码段,用户态下所有进程共享

Operating Systems17 __USER_DS 用户数据段,用户态下所有进程共享

Operating Systems18 硬件的分页单元 分页单元把线性地址转换成物理地址 为了效率起见,线性地址被分成以固定长度为单位的 组,称为页。 页内连续的线性地址被映射到连续的物理地址中。 把线性地址映射到物理地址的数据结构叫做页表 (page table) 。页表存放在内存中,并在启用分页单 元以前由内核对之进行初始化 Intel 处理器中,通过设置 CR0 寄存器的一个标志位来 启用分页单元。

Operating Systems19 硬件的分页单元 区分一下页和页框的概念 一页指一系列的线性地址和包含于其中的数据 页框 (page frame) 分页单元认为所有的 RAM 被分成了固定长度的页框 每个页框可以包含一页,也就是说一个页框的长度 和一个页的长度是一样的 页框是内存的一部分,是一个实际的存储区域。而 页只是一组数据块,可以存放在任何页框中

Operating Systems20 常规分页 从 i386 起, intel 处理器的分页单元处理 4KB 的页 32 位的线性地址被分成 3 个域 目录 (directory) 最高的 10 位 页表 (Table) 中间的 10 位 偏移量 (offset) 最低的 12 位 线性地址的转换分两步完成,每一步都基于一种转 换表 第一种称为页目录表 (page directory) 第二种称为页表 (page table) 正在使用的页目录表的物理地址存放在 CPU 的 CR3 寄存器中

Operating Systems21 Intel 80x86 处理器的分页

Operating Systems22 页目录表项和页表项 页目录表项和页表项存储的都是页框的基址 页目录表项存储对应页表的物理地址 页表项存储对应物理页面的起始地址 4KB , 12 位对齐,因此最后 12 位被用来存放该 页的标志位,包括: Present 标志、 Accessed 标志、 Dirty 标志、 Read/Write 标志、 User/Supervisor 标志、 …… 如果 present 标志为 0 ,分页单元就把这个线性地址 存放在处理器的 CR2 寄存器中,并产生一个 14 号异 常(缺页异常)

Operating Systems23 硬件的分页单元 扩展分页 pentium 处理器引进了扩展分页,允许页框的大小 为 4K 或者 4M

Operating Systems24 硬件保护方案 级别由前面提到的 User/Spuervisor 标志控制 若这个标志为 0 ,只有当 CPL 小于 3( 对 linux 来说, 即处理器处于内核态 ) 时才能对此页寻址; 若这个标志为 1 ,则总能对此页寻址 存取权限由 Read/Write 标志控制 标志为 0 ,页是只读的 标志为 1 ,则是可读写的

Operating Systems25 0x : b 分页举例 假设内核给一个正在运行的进程 p1 分配的线性地 址空间是 0x 到 0x2003ffff 这段空间大小为 0x40000 ,即 0x40 个页( 64 页) 线性地址 页目录索引 ( 0x80=128 ) 页表索引 ( 0x0=0 ) 0x20003ffff : b 页目录索引 ( 0x80=128 ) 页表索引 ( 0x3f=63 )

Operating Systems26 p1 的页表和虚拟空间 … 1023 p1 的页目录 p1 的页表 p1 的页

Operating Systems27 分页举例 假设进程需要读取 0x 中的字节。 分页单元将该地址划分为 3 个部分: 0x = b 当进程无论何时试图访问 0x 到 0x2003ffff 范 围之外的线性地址时,都将产生一个保护错误 页目录索引 ( 0x80=128 ) 页表索引 ( 0x21 ) 页内偏移 ( 0x406 ) CR3 + p1 的页目录 p1 的页表 + Present=0 缺页异常 Xxx xxx Xx xxx Xx xx xxxx

Operating Systems28 Linux 的分页 Linux 采用 3 级分页模式 页全局目录 (Page Global Directory) 页中间目录 (Page Middle Directory) 页表 (Page Table)

Operating Systems29 Linux 的分页模式

Operating Systems30 Linux 进程的分页 Linux 对进程的处理很大程度上依赖于分页。实 际上,由硬件提供的 MMU 将线性地址自动转换 为物理地址使的下面的设计目标变得可行: 给每个进程分配一块不同的物理地址空间,这 种机制确保了对寻址错误提供有效的保护 区别页 ( 即一组数据 ) 和页框 ( 实际的物理空间 ) 之 间的不同。这是虚拟存储器机制的基本因素

Operating Systems31 每个进程都有它自己的页全局目录和自己的页 表集合,当进程切换发生时, linux 把 CR3 寄存 器的值保存在跟进程相关的一个数据结构中, 然后用另外一个进程相应的值填充 CR3 寄存器。 因此,当新进程恢复在 CPU 上执行时,分页单 元将使用一组与新进程对应的页表

Operating Systems32 Linux 对页表的处理函数 硬件提供了这种转换机制,而软件所要做的就是准 备好正确的数据,使得硬件能够准确无误的执行 Linux 中实现很多对页表进行设置,操作和处理的 函数

Operating Systems33 保留的页框 内核代码和静态数据结构存放在一组保留的页框中。 这些页框所含的页从不被动态的分配或者交换到磁 盘上 作为一条常规, linux 内核被安装在物理地址 0x 开始的地方。所需要的页框数依赖于 内核的配置方案。典型的配置所得到的内核可以被 安装在小于 2MB 的 RAM 中

Operating Systems34 Linux2.4 内核的前 512 个页框

Operating Systems35 进程页表 一个进程的线性地址空间被分成两部分 0~3G :用户态和内核态都可以访问 3G~4G :只有内核态可以访问 进程的页全局目录 前 768 项:用来映射低于 0xc 的线性地址, 具体内容与进程相关。 剩余的表项:用来映射内核空间,对所有进程都一 样

Operating Systems36 内核空间 Linux 把内核代码映射到了 0xc 以上的空间

Operating Systems37 内核页表 实际上,内核映象在被装入内存以后, CPU 仍 然运行于实模式下,分页单元还没有被启动 内核分两个阶段初始化自己的页表 一,仅创建够自己使用的 8MB 空间 二,利用剩余的 RAM 并恰当的建立映射整个物理内 存的页表

Operating Systems38 Linux 的临时内核页表 此阶段的目标是在实模式和保护模式下都能很 容易的对前 8MB 进行寻址。 即创建一个映射,把以下两组线性地址都映射 到物理地址 0x 至 0x007fffff 范围上 这两组线性地址是: 0x 至 0x007fffff 0xc 至 0xc007fffff

Operating Systems39 页全局目录 映射前 8MB 的页表 物理: 0~4MB-1 虚拟: 0~4MB-1 以及 3GB~3GB+4MB-1 物理: 4MB~8MB-1 虚拟: 4MB~8MB-1 以及 3GB+4MB~3GB+8MB-1

Operating Systems40 Linux 的分页 开启分页单元

Operating Systems41 最终内核页表 最终内核页全局目录仍然保留在变量 swapper_pg_dir 中。它由函数 paging_init() 初 始化 设置一个页目录表项 每个页目录表项对应 4MB 大小的空间

Operating Systems42 作业 6 : __USER_CS 、 __USER_DS 的值分别是多少? 它们分别对应 GDT 表中的哪一项? RPL 分别是 多少,对应 Linux 的哪个级别(用户级还是内 核级)?