linux内核学习——内存管理——(保护模式下)分段分页
来源:互联网 发布:数据库开发工具 编辑:程序博客网 时间:2024/04/29 23:52
首先是地址转换:逻辑地址(——分段部件——>)线性地址(——分页部件——>)物理地址。
接着就是为什么要分段,为什么要分页:
1.分段是面向用户,每一个段是一个逻辑单位。每一个段有一个段描述符,如何找到段描述符呢?以及段描述符在什么地方?那么回到上面的地址转换,逻辑地址通过分段部件成为线性地址,这个过程其实就是找段描述符,以及通过描述符找到段的线性地址。[逻辑地址[段选择符]]根据段描述符寄存器找到GDT(段描述符表——存放段描述符),然后通过逻辑地址中的段选择符找到相应的段描述符,就得到线性地址了。
2.分页是面向物理部件的,为的是提高物理部件的利用率,每一个页是一个物理单位。
也许大家都知道线性地址通过页表转换成物理地址,具体怎么转换的呢?首先分析线性地址是什么,既然涉及到了页表,页目录项,那么线性地址肯定包括页目录项信息,页表项信息,页内偏移等信息了。所有通过(与或非)提取16进制线性地址特定几位的信息就可以获取了,然后再去查找就得出了相应的物理地址了,如何找到页目录和页表,自然也是同分段一样,通过寄存器找到页目录项也页表在内存中的位置。
当然上述过程不能想象成纯软件的过程,其中有是部分基本功能是硬件支持的。
现在讨论一下特权级的问题,主要讨论两种特权级:
1.CPU特权级,CPU特权级和linux进程的用户态和内核态有关,所谓用户态和内核态的区别是CPU当前的特权级来确定的,那么CPU的特权级怎么来的,通过CS寄存器中特权级标志位来的。既然由CPU的特权级来确定的,又由于CPU的特权级决定了硬件资源的访问级别,那么“用户进程想要访问硬件资源,比如说硬盘的访问...,必须从系统调用,陷入内核,也就是说从用户态转向内核态”就好理解了。
2.描述符特权级,可能大家都知道进程之间是可以段共享的,那么如何限制段的存取呢,以防止某些重要的段不被读取,通过描述符特权级。
关于分段部件就涉及到了段描述符问题
- linux内核学习——内存管理——(保护模式下)分段分页
- Linux学习总结—内存分段和分页管理
- Linux学习总结—内存分段和分页管理
- Linux学习总结—内存分段和分页管理
- 保护模式——从分段到分页
- [Linux内存]linux内存学习(二)——分段和分页
- linux内核学习——内存管理
- 学习内存管理---分段、分页
- Linux内核学习(1)——内存管理
- Linux kernel 学习笔记(1) --分段分页保护机制
- 保护模式下的分段内存寻址
- 操作系统存储管理:保护模式与实模式下的分页&分段【持续更新】
- Linux内核0.12——从一个简单的多任务内核实例学习保护模式
- Linux中的内存管理(分段和分页)
- linux内存管理概述(分段分页机制)
- Linux内存分段和分页管理
- Linux内存管理之一 分段与分页
- Linux内存管理中的分页,分段
- 动画
- 商品SKU乘积运算结果的输出
- 全面理解面向对象的 JavaScript
- Centos中配置静态IP
- htonl() htons()及inet_ntoa() inet_addr()的用法
- linux内核学习——内存管理——(保护模式下)分段分页
- Java反射机制
- Unity3d-C#之where
- VIM复制到系统剪切板
- 分布式文件系统架构GFS、HDFS、TFS、Haystack
- Java8学习:Lambda表达式、Stream API和功能性接口 — 教程、资源、书籍和实例
- AlarmManager详解-----实现定时提醒
- UVa 1103 - Ancient Messages(DFS:Floodfill)
- HDU 1026 Ignatius and the Princess I