IA32系统级架构总览(一) 实模式和保护模式
应用程序的编写大部分的时候是不必关心系统级架构的,最多学习一下平台所给的API即可,也就是我们通常说的黑箱子。但是在学习操作系统的时候,系统级架构是要关心的。
系统级架构很难学习,其中一个很大的原因是“纷繁复杂的架构”,还有就是很强的陌生感。先说个故事吧。
秋季学期俱乐部招新由我来面试,之前并没有做过这样的事情,我的手中有一份参加面试的名单,上面写着同学们的姓名、学号、学院、联系方式等信息,如果明天直接去面试彼此不了解,第一次做面试官的我很容易尴尬,“实体物的像会影响一个人的判断,甚至丧失对实体物全局的判断,全局把握的最佳时机就是实体物对我而言还是脑袋中的抽象时”,在我还没见到他们之前的一个晚上我弄到了教务处的管理员账号,根据学号一一查找信息,并一一谷歌,“免冠照片、高考成绩、家乡、高中、初中、获得奖项等”,有了这些信息,第二天的面试顺利进行,更没有遇到之前担忧的尴尬。
为了更好的学习架构,我所说的是不是“预习”?其实也不全是,重要的是要有一个全局的把握,这种把握既可以是学习之前也可以在学习之中获得,有了这个全局的把握,便知道了“因何而起,为何而生,为什么一定是它”。
处理器有两种工作模式(注意,不是只有这两种,而是存在):实模式、保护模式。他俩可能有很多不同,其中有一点不同就是访存。在实模式下,内存是裸露给处理器的,处理器获取到段地址和偏移地址(cs:eip),两者一拼凑即可获得要访问的地址,“我有两个残缺的地图,但是只要把他们拼在一起就可以找到宝藏的位置”;在保护模式下,访问内存可不是一件容易的事情,处理器获得了段地址和偏移地址,但此时的段地址并不是真实的段地址(但又确实是个地址),而是“段选择子”,然后根据段选择子在GDT中查找到真正的基地址,然后用这个基地址和偏移地址才可以获得要访问的地址“我有两个地图,其中一个地图指向一个房间,我的先到那个房间把真正需要的地图去取出来,然后把它和另一块地图拼在一起就可以找到宝藏的位置了”。
保护模式下的访存更加安全了,不仅仅是基地址的获得复杂了,仔细想一想为什么这么做会安全了。仅仅是增加了步骤而已吗,为什么要把实际基地址放在另一个地方然后让你去取,因为就在你取这个地址的时候,你的行径相当于被记录了,而且被限制,就好比说你要访问一个房间,这之前你需要做了登记,并被告知你的活动范围只能在这个房间里,你不能顺藤摸瓜去别的房间。
纷繁复杂的系统级架构,并不是工程师们喜欢复杂而制作出来了,而是为了满足某种目的的功能,比如保护模式的实现就需要很多数据结构(如GDT、LDT、TSS)和硬件,另外一些情况为了兼容之前的模式。
IA32系统级架构总览(一) 实模式和保护模式的更多相关文章
- IA32系统级架构总览(二)
系统级架构由寄存器.数据结构.指令组成,这些设计对基本的系统级别的操作提供了支持,比如:内存管理.终端与异常处理.任务管理.多进程控制等. 我们先来看一看寄存器与数据结构的总汇图:现在你可能看不懂,不 ...
- ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构
★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...
- x86架构:从实模式进入保护模式
详细的过程说明参考:(1) https://www.cnblogs.com/Philip-Tell-Truth/p/5211248.html (2)x86汇编:从实模式到保护模式 这里简化一下 ...
- OSLab:实模式与保护模式
日期:2019/5/18 12:00 内容:操作系统实验作业:x86:IA-32:实模式与保护模式. PS:如果我们上的是同一门课,有借鉴代码的铁汁请留言告知嗷.只是作业笔记,不推荐学习. 一.实模式 ...
- ASM:《X86汇编语言-从实模式到保护模式》第11章:进入保护模式
★PART1:进入保护模式 1. 全局描述符表(Global Descriptor Table,GDT) 32位保护模式下,如果要使用一个段,必须先登记,登记的信息包括段的起始地址,段的 ...
- 32位x86处理器编程导入——《x86汇编语言:从实模式到保护模式》读书笔记08
在说正题之前,我们先看2个概念. 1.指令集架构(ISA) ISA 的全称是 instruction set architecture,中文就是指令集架构,是指对程序员实际"可见" ...
- 【OS】实模式和保护模式区别及寻址方式
实模式和保护模式区别及寻址方式 转载请注明出处:http://blog.csdn.NET/rosetta 64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别 ...
- 关于80286——《x86汇编语言:从实模式到保护模式》读书笔记15
一.80286的工作模式 80286首次提出了实模式和保护模式的概念. 实模式:和8086的工作方式相同: 保护模式:提供了存储器管理机制和保护机制,支持多任务. 二.80286的寄存器 (一)通用寄 ...
- 进入保护模式(一)——《x86汇编语言:从实模式到保护模式》读书笔记12
之前已经做了一些理论上的铺垫,这次我们就可以看代码了. 一.代码清单 ;代码清单11-1 ;文件名:c11_mbr.asm ;文件说明:硬盘主引导扇区代码 ;创建日期:2011-5-16 19:54 ...
随机推荐
- 关于Struts2的Validator的配置找不到DTD
看教材的时候写的DTD是 <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN&q ...
- Excel有用的宏
=Index({"同事","同学","亲戚"},b3) 前面的array默认索引从1开始. 如果b3为1.而枚举数组是: 0=>同事, ...
- Sails 自定义 model 方法
Sails 自定义 model 方法 在 Sails 中 model 提供了一些原生的静态方法,如 .create(), .update(), .destroy(), .find(), 等. 在实际业 ...
- makefile中的自动化变量 【转】
转自:http://blog.chinaunix.net/uid-28458801-id-3495215.html 自动化变量 模式规则中,规则的目标和依赖文件名代表了一类文件名:规则的命令是对所有这 ...
- Android eclipse中程序调试
一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...
- python中的列表(list) 切片详解
1.切片: 通过指定下标的方式来获得某一个数据元素,或者通过指定下标范围来获得一组序列的元素,这种访问序列的方式叫做切片. 访问某一个数据元素的的语法如下: sequence[index] ...
- python之for学习
for i in range(100,-1,-1): print "%s\n"%i; import os path = 'D:\\Test' for root, ...
- Form.ShowDialog和Form.DialogResult
The dialog result of a form is the value that is returned from the form when it is displayed as a mo ...
- JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 一,概述 在Java语言中 ...
- jsp之jstl标签
常用jstl标签 一.<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ...