保护模式内存管理
来源:互联网 发布:windows活动目录的功能 编辑:程序博客网 时间:2024/04/28 18:46
保护模式内存管理1.内存寻址
保护模式下寻址由段地址+段内offset构成,其中段地址16b,其中的14b(16b的选择子中有2b用于特权级)可以选择2的14次方个段;段内偏移用32b来表示。程序中由上述48b构成的称为一个长地址或者一个长指针。 将要执行的指令的地址为CS:[EIP],段间转移指令可以用于为CS和EIP赋新值,从而可以将执行位置改变到其他的代码段中。这样,就实现了不同段中的程序的控制传递。 由SS寻址的段称为当前堆栈段,栈顶由ESP寄存器指定,因此堆栈顶端的地址是SS:[ESP].另外四个寄存器DS~GS是通用寄存器。当指令中没有指定所操作数据段时,DS是默认的。 为了指定内存操作数的段内偏移地址,指令的偏移量是三部分相加而成:基地址寄存器、变址寄存器、偏移常量。偏移地址=基地址+(变址X比例因子)+偏移量2.地址变换
内存管理系统包括两个部分:保护+地址变换。为了减少地址变换所需要的信息,变换或者映射需要用内存块作为操作单位,分页和分段是两种常见的地址变换技术。分页和分段机制都使用内存中的表来指定他们各自的变换信息,这些表只能被操作系统访问。下图,显示了虚拟地址到物理地址的变换过程。图1.虚拟地址到物理地址的变换过程下图,显示了逻辑地址、线性地址和物理地址之间的变换3.保护
3.1任务之间的保护
每个任务都有自己的段表和页表,当处理器切换任务的时候,关键就是切换到新任务的变换表。通过在所有任务中安排具有相同的虚拟到物理地址的映射部分,并且包操作系统存储在公共的虚拟地址空间部分,操作系统可以被任务共享。这一部分相同的地址空间被称为全局地址空间。3.2特权级保护
每个特权级都有自己的程序栈,避免使用共享堆栈带来的保护问题。程序的特权级别切换以后,堆栈段也切换到新级别的堆栈段中。
0 0
- 保护模式内存管理
- 保护模式内存管理总结
- IA-32 保护模式内存管理
- 80X86保护模式内存管理
- 80X86保护模式内存管理
- Intel CPU的保护模式和段式内存管理简介
- 之一:X86段式内存管理与保护模式
- linux0.00内核剖析之2.保护模式内存管理
- 80486保护模式存储管理
- Linux操作系统基础(三)保护模式内存管理(1)
- Linux操作系统基础(四)保护模式内存管理(2)
- Intel手册系统编程卷第3章 保护模式内存管理
- windows游戏编程<四>X86 32位保护模式下的内存管理概述(一)
- windows游戏编程<六>X86 32位保护模式下的内存管理概述(二)
- linux内核学习——内存管理——(保护模式下)分段分页
- IA-32 Intel手册学习笔记(二)保护模式下的内存管理
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.2 保护模式内存管理
- X86保护模式下的内存寻址
- C#多线程编程实践
- 修改鼠标的CSS样式
- 天承运,皇帝诏曰
- JAVA白盒安全测试需要关注的API
- 2014我准备好了
- 保护模式内存管理
- UVA 10047 The Monocycle(多状态BFS)
- JS实现商品筛选(2)
- 生活感悟
- Mapreduce-Partition分析
- 有关Vector里面元素重复解决办法
- linux内存管理(下)
- QT/E中的字体
- 获取html各标签或自定义标签的属性