操作系统篇-分段机制与GDT|LDT】的更多相关文章

|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言     在<操作系统篇-浅谈实模式与保护模式>中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的.因此若想理解操作系统程序中的启动相关的部分,必须要理解保护模式下的编程,而分段机制是保护模式编程下的基础.而且,由于实模式与保护模式的不同,对保护模式下的分段机制更需要注意. 二.线性地址 在保护模式下编程,访问内存时,需要在程序中给出段地址和偏移量,因为分段是保护模式的基本特征之一.传统上,段地址和偏移地址…
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到过特权级与调用门,特别是在说到保护模式时,我们提到了内存的保护,"保护"这两个字的含义何在呢?不同权级之间是如何相互访问,如何通讯,如何保护,这些东西都跟调用门和不同代码段的特权级紧密相关.本文主要探讨的就是,保护模式下的调用门与特权级,在阅读本文之前,建议大家先看看blog的之前几篇文章…
GDT的由来:     在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table). 为什么要有GDT?我们首先考虑一下在Real Mode下的编程模型:在Real Mode下,我们对一个内存地址的访问是通过Segment:Offset的方式来进行的,其中Segment是一个段的Base Address,一个Segment的最大长度是64 KB,这是16-bit系统所能表示的最大长度.而Offset则是相对于此Segment Bas…
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 这篇文章主要说一下linux对于分段机制的处理,虽然都说linux不使用分段机制,但是分段机制属于CPU的一个功能,即使linux不使用,也要通过代码想办法绕过它,况且linux也使用到了分段机制中的某些功能. 分段机制主要功能只有两点: 将物理内存划分为多个段,让操作系统可以使用大于其地址线对应的物理内存(比如正常情况下32位地址线可以访问4G大小的内存,但是有分段后则可访问大于4G的内存). 权限控制,将…
前言 本文涉及的硬件平台是X86,如果是其他平台的话,如ARM,是会使用到MMU,但是没有使用到分段机制: 最近在学习Linux内核,读到<深入理解Linux内核>的内存寻址一章.原本以为自己对分段分页机制已经理解了,结果发现其实是一知半解.于是,查找了很多资料,最终理顺了内存寻址的知识.现在把我的理解记录下来,希望对内核学习者有一定帮助,也希望大家指出错误之处. 分段到底是怎么回事 相信学过操作系统课程的人都知道分段分页,但是奇怪的是书上基本没提分段分页是怎么产生的,这就导致我们知其然不知其…
前言 最近在学习Linux内核,读到<深入理解Linux内核>的内存寻址一章.原本以为自己对分段分页机制已经理解了,结果发现其实是一知半解.于是,查找了很多资料,最终理顺了内存寻址的知识.现在把我的理解记录下来,希望对内核学习者有一定帮助,也希望大家指出错误之处. 分段到底是怎么回事 相信学过操作系统课程的人都知道分段分页,但是奇怪的是书上基本没提分段分页是怎么产生的,这就导致我们知其然不知其所以然.下面我们先扒一下分段机制产生的历史. 实模式的诞生(16位处理器及寻址) 在8086处理器诞生…
一 分段机制 1.什么是分段机制 分段机制就是把虚拟地址空间中的虚拟内存组织成一些长度可变的称为段的内存块单元. 2.什么是段 每个段由三个参数定义:段基地址.段限长和段属性. 段的基地址.段限长以及段的保护属性存储在一个称为段描述符的结构项中. 3.段的作用  段可以用来存放程序的代码.数据和堆栈,或者用来存放系统数据结构. 4.段的存储地址 系统中所有使用的段都包含在处理器线性地址空间中. 5.段选择符 逻辑地址包括一个段选择符或一个偏移量,段选择符是一个段的唯一标识,提供了段描述符表,段描…
kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html Windows操作系统及其安全机制 Windows文件系统 FAT (File Allocation Table文件分配表)  1980: FAT12  1987: FAT16  1995: FAT32  文件目录表: Table; 文件分配表: Linked List  安全性弱,正在被NTFS取代 NTFS (NT File System)  1990s…
 || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言     今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希望能给正在学习或者有意向学习操作系统的童鞋带来帮助.     二.有关知识     在进入代码之前,先给大家普及一些硬件知识,如果你已经具备了这方面的知识,可以直接略过这部份.     1.计算机怎么启动操作系统的?     首先,我们思考一个问题,为什么一个硬盘安装系统之后打开计算机电源之后就能正…
[0]写在前面 要知道,在汇编中,代码的装入顺序决定了在内存中的地址位置.所有的代码或者数据都在硬盘上,当调试或者启动的时候,加载到内存:当需要对数据进行处理的时候,我们通过将数据从内存载入到registers 通过cpu来进行处理的. [1]初始化各种段描述符 以 初始化 32 位代码段描述符 为例 [2]有感 首先:要先定义这段描述符(占据内存空间),然后向里面传入真正处理数据的地址: 2.1 定义阶段 为什么 LABEL_GDT 必须跟在最前面呢? 因为它的地址要作为段的基地址,而选择子的…