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 ...
随机推荐
- 【算法题】- 求和等于K子数组
一整数(有正有负)数组,用尽量少的时间计算数组中和为某个整数的所有子数组 public class SumK { public static void main(String[] args) { in ...
- Html 全屏切换效果
来源 http://www.imooc.com/learn/374 pageswitch.js (function ($) { var defaults = { 'container': '#cont ...
- MTK6577+Android环境变量
1. 环境变量机器对应的路径 $project = hsimobile77_ics2 $platform=mt6577 $(PRODUCT_OUT)=\out\target\product\$proj ...
- linux vi 编辑器命令
游标控制 h 游标向左移 j 游标向下移 k 游标向上移 l (or spacebar) 游标向右移 w 向前移动一个单词 b 向后移动一个单词 e 向前移动一个单词,且游标指向单词的末尾 ( 移到当 ...
- Hadoop集群(第8期)_HDFS初探之旅
1.HDFS简介 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开 ...
- 警惕rapidxml的陷阱:添加节点时,请保证变量的生命周期
http://www.cnblogs.com/chutianyao/p/3246592.html 项目中要使用xml打包.解析协议,HQ指定了使用rapidxml--号称是最快的xml解析器. 功能很 ...
- 如何使用adb命令查看android中的数据库
1,进入到控制台中,输入adb shell,进入到命令模式的环境中 2,输入:cd /data/data/ 3, 选择你所在的数据库文件,比如我的com.android.homework, 输入命令: ...
- You can't specify target table 'charge' for update in FROM clause
mysql中不能这么用. (等待mysql升级吧)错误提示就是说,不能先select出同一表中的某些值,再update这个表(在同一语句中) 替 换方 案: create table tmp as s ...
- window-messager(消息框)
所有的消息框都是异步的.用户可以在交互消息之后使用回调函数去处理结果或做一些自己需要处理的事情. 一.alert(警告框) <script type="text/javascript& ...
- PHPStorm/webstorm tips
phpstorm对于使用PHP开发web的人员来说,是一个非常不错的编辑开发IDE,以前用过sublime,但是相比于storm,sublime在浏览legacy代码,类代码编辑方面明显要逊色不少.同 ...