Linux内核学习笔记3——分段机制和分页机制
一 分段机制
1、什么是分段机制
分段机制就是把虚拟地址空间中的虚拟内存组织成一些长度可变的称为段的内存块单元。
2、什么是段
每个段由三个参数定义:段基地址、段限长和段属性。
段的基地址、段限长以及段的保护属性存储在一个称为段描述符的结构项中。
3、段的作用
段可以用来存放程序的代码、数据和堆栈,或者用来存放系统数据结构。
4、段的存储地址
系统中所有使用的段都包含在处理器线性地址空间中。
5、段选择符
逻辑地址包括一个段选择符或一个偏移量,段选择符是一个段的唯一标识,提供了段描述符表,段描述符表指明短的大小、访问权限和段的特权级、段类型以及段的第一个字节在线性地址空间中的位置(称为段的基地址)。逻辑地址的偏移量部分到段的基地址上就可以定位段中某个字节的位置。因此基地址加上偏移量就形成了处理器线性地址空间中的地址。
6 逻辑地址到线性地址的变换过程

如果没有开启分页,那么处理器直接把线性地址映射到物理地址,即线性地址被送到处理器地址总线上;如果对线性地址空间进行了分页处理,那么就会使用二级地址转换把线性地址转换成物理地址。
7、虚拟地址到物理地址的变换过程

二 分页机制
1、什么是分页机制
分页机制在段机制之后进行的,它进一步将线性地址转换为物理地址。
2、分页机制的存储
分页机制支持虚拟存储技术,在使用虚拟存储的环境中,大容量的线性地址空间需要使用小块的物理内存(RAM或ROM)以及某些外部存储空间来模拟。当使用分页时,每个段被划分成页面(通常每页为4K大小),页面会被存储于物理内存中或硬盘中。操作系统通过维护一个页目录和一些页表来留意这些页面。当程序(或任务)试图访问线性地址空间中的一个地址位置时,处理器就会使用页目录和页表把线性地址转换成一个物理地址,然后在该内存位置上执行所要求的操作。
3、线性地址和物理地址之间的变换过程

三 分段机制和分页机制的区别
1、分页机制会使用大小固定的内存块,而分段管理则使用了大小可变的块来管理内存。
2、分页使用固定大小的块更为适合管理物理内存,分段机制使用大小可变的块更适合处理复杂系统的逻辑分区。
3、段表存储在线性地址空间,而页表则保存在物理地址空间。
Linux内核学习笔记3——分段机制和分页机制的更多相关文章
- Linux内核学习笔记-1.简介和入门
原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- Linux内核学习笔记二——进程
Linux内核学习笔记二——进程 一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...
- Linux内核学习笔记-2.进程管理
原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- 20135316王剑桥Linux内核学习笔记
王剑桥Linux内核学习笔记 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计算机是如何工作的 个人理 ...
- Linux内核学习笔记之seq_file接口创建可读写proc文件
转自:http://blog.csdn.net/mumufan05/article/details/45803219 学习笔记与个人理解,如有错误,欢迎指正. 温馨提示:建议跟着注释中的编号顺序阅读代 ...
- Linux内核学习笔记
1.vanbreaker的专栏 2.LinuxKernel Exploration 3.DroidPhone的专栏 4.Linux内核研究以及学习文档和ARM学习以及研究的开放文档 [力荐] 5. ...
- 20135316王剑桥Linux内核学习笔记第三周
20135316王剑桥 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC 1000029000 三个法宝:存储程序计算机.函数调 ...
- 20135316王剑桥Linux内核学习笔记第四周
20135316王剑桥 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC 1000029000 1.内核态:在高执行级别,代码可 ...
- Linux内核学习笔记(5)-- 进程调度概述
进程调度程序是多任务操作系统的基础,它是确保进程能有效工作的一个内核子系统,负责决定哪个进程投入运行.何时运行以及运行多长时间.只有通过进程调度程序的合理调度,系统资源才能够最大限度地发挥作用,多进程 ...
随机推荐
- jeesite 一对多,对子表单独修改时出现 HV000030: No validator could be found for type:
这是由于springmvc校验功能造成的,解决办法参见我的百度回答 http://zhidao.baidu.com/question/2141673418419314468
- Map集合中的一些具体方法的体现
package com.java.b.map.www; import java.util.Collection;import java.util.HashMap;import java.util.It ...
- 13_输出映射1_resultType
输出映射主要有两种:resultType和resultMap [resultType] 可以返回三种类型 pojo对象:例如select * from user where id=? pojo对象列表 ...
- poj2104:K-th Number
思路:可持久化线段树,利用权值线段树,把建树过程看成插入,插入第i个元素就在第i-1棵树的基础上新建结点然后得到第i棵树,那么询问区间[l,r]就是第r棵树上的信息对应减去第l-1棵树上的信息,然后再 ...
- ASP.NET中的Request、Response、Server对象
Request对象 Response.Write(Request.ApplicationPath) //应用根路径 Request.AppRelativeCurrentExecutionFilePat ...
- /etc/rc.local ; /etc/init.d ;/etc/profile;/etc/bashrc;~/.bash_profile;~/.bashrc;~/.bash_logout
1. /etc/rc.local 这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里. 把脚本程序写在/etc/rc.d/init.d/目录下也可以 在完成 run level 3 ...
- nginx重新加载配置
1.kill -HUP `cat /usr/local/nginx/logs/nginx.pid` 2./usr/local/nginx/sbin/nginx -s reload
- C语言结构体中的函数指针
这篇文章简单的叙述一下函数指针在结构体中的应用,为后面的一系列文章打下基础 本文地址:http://www.cnblogs.com/archimedes/p/function-pointer-in ...
- (转载).Net HttpPost的发送和接收示例代码
HttpPost在不同系统进行数据交互的时候经常被使用.它的最大好处在于直接,不像Webservice或者WCF需要wsdl作为一个双方的"中介".在安全性上,往往通过IP限制的方 ...
- BZOJ 1052: [HAOI2007]覆盖问题
BZOJ 1052: [HAOI2007]覆盖问题 题意:给定平面上横纵坐标在-1e9~1e9内的20000个整数点的坐标,用三个大小相同边平行于坐标轴的正方形覆盖(在边界上的也算),问正方形的边长最 ...