从上一次学习MIT的操作系统课程又过去了一年。上次学习并没有坚持下去。想来虽有种种原因,其还在自身无法坚持罢了。故此次再鼓起勇气重新学习,发现课程都已由2014改版为2016了。但大部分内容并没有改变。在这一年多的时间里,也曾学习过其他课程,比如孟宁的Linux内核分析,也看过其他人写的文章。但还是有很多内容无法全部理解,而且从网上文章或讨论中也看出,象我这种似懂非懂的状态很多人都有。比如,在看到linux0.11中的那个TSS结构时就一直在想,为什么要这样设计呀?系统明明没有使用到那么多结构成员,为什么还要保留呢?还有在调用系统调用时,讲课的老师总是说,硬件帮我们把返回地址、栈信息等自动保存起来,但到底做了什么呢?这个问题我发现其实很多人都存在。类似的问题还有很多。比如,如果有人问在linux下最多可以有多少个进程?这怎么计算呢?由什么来决定 ?网上也有文章介绍过,但为什么是那样呢?诸如此类。为此,我也困惑很久。再比如,总是说,在linux下,逻辑地址就是线性地址,可是线性地址是由三部分构成的,而逻辑地址是由两部分构成的,由于在linux中段基址永远是0,那程序中的偏移地址如何就是线性地址了呢?如果是,那如何与线性地址中的三部分对应的?程序中的地址到底是线性地址中的偏移地址还是三部分都包含在内呢?操作系统到底如何转换的?还需要做转换工作吗?可以从代码角度 看又没有这种转换呀?那程序如何转换地址呢?页目录到底是所有进程用一套,还是每个进程各用一套?如此等等,都似乎有一层迷雾一般。为了解决这个问题,此次我并没有在一开始学习MIT课程的时候就急着去做那些实验。而是跟随着实验指导的说明,把x86手册内容看了一次。其实上次学习也曾想读一读,但内容实在太多,又都是英文的,所以最终放弃了。此次,终于下定决心看下去。而由于本人英文水平实在有限,读手册时太过艰辛,为了更方便以后查看,遂决定将其内容翻译一遍,这样一来有助于理解,二来将来再看时就不用面对英文了,也方便查找。之所以放在这里,是想也许有许多人和我一样,如果能让我们这些人能有一丝帮助,就是最好的结果。

下面说一下我看完手册的感觉。以前对linux操作系统中的很多内容都无法真正理解,此次看完手册方才明白,linux之所以那样设计,其实很多结构和内容都是因为x86就是那样设计的。比如,段选择子、特权级别、任务切换、端口访问的映射位图,等等,这些结构在X86设计之初就已经决定了,不是操作系统可以左右的。看完之后,对很多以前不理解的都有了近一步的了解,例如,授课老师总是说在系统调用时硬件帮我把很多内容自动保存起来,在不同特级特权间进行切换时会导致栈切换,等等。看完这本手册你就彻底明白这些话的真正含义。

注:本人并没有对手册的所有内容进行翻译,其实有些章并没有看,比如关于兼容性的那一部分,还有协处理器和多处理器章节等,一来时间所限,二来觉得和理解linux0.11和MIT的实验系统并无多少相关,所以未做翻译。

下面是手册的来源地址:https://pdos.csail.mit.edu/6.828/2016/readings/i386/toc.htm

【译】x86程序员手册00 - 翻译起因的更多相关文章

  1. 【译】x86程序员手册01

    Intel 80386 Reference Programmer's Manual 80386程序员参考手册 Chapter 1 -- Introduction to the 80386 第1章 - ...

  2. 【译】x86程序员手册03 - 2.1内存组织和分段

    2.1 Memory Organization and Segmentation 内存组织和分段 The physical memory of an 80386 system is organized ...

  3. 【译】x86程序员手册38-10.2实在址模式下的软件初始化

    10.2 Software Initialization for Real-Address Mode   实地址模式的软件初始化 In real-address mode a few structur ...

  4. 【译】x86程序员手册09-第3章程序指令集

    注:觉得本章内容与理解操作系统不直接相关,所以本章并未看完,也就没有翻译完,放在这里中是为了保证手册的完整.有兴趣的人可以去原址查看. https://pdos.csail.mit.edu/6.828 ...

  5. 【译】x86程序员手册40-10.5初始化的例子

    10.5 Initialization Example初始化的例子 译注:本来想把这个例子全部注释完,但由于对intel汇编实不熟悉,有太多的伪指令,本人也是免强看懂,所以就不再做翻译了. $TITL ...

  6. 【译】x86程序员手册35-9.8异常条件

    译注:一些异常没有翻译,因为看书时主要为了理解linux代码,所以代码中没有主要使用的就没有仔细看.这部分内容后期再看时再进行翻译. 9.8 Exception Conditions 异常条件 The ...

  7. 【译】x86程序员手册31- 第9章 异常和中断

    Chapter 9 Exceptions and Interrupts 第9章 异常和中断 Interrupts and exceptions are special kinds of control ...

  8. 【译】x86程序员手册18-6.3.1描述符保存保护参数

    6.3 Segment-Level Protection 段级保护 All five aspects of protection apply to segment translation: 段转换时会 ...

  9. 【译】x86程序员手册02 - 基本的程序模式

    Chapter 2 -- Basic Programming Model: 基本的程序模式 Introduces the models of memory organization. Defines ...

随机推荐

  1. 稍微成型点的用WEBSOCKET实现的实时日志LOG输出

    难的是还是就地用JS显示出来相关的发布进度. 还好,花了一下午实现了. 可以移植到项目中去罗... websocket.py: import tornado.ioloop import tornado ...

  2. hihoCoder #27

    A QvQ B 题目:http://hihocoder.com/problemset/problem/1470 分析:dfs序+栈+数学 可以发现,对于每组询问,树上是有很多点都只能等于0的 对于每个 ...

  3. Ubuntu 16.04在启动和关机时不显示启动和关机画面且显示详细的命令信息,没有进度条和Logo,或者只有紫色界面,或者没有开机画面等问题解决

    主要有以下解决方法: 1.如果之前配置过Grub来显示详细的命令信息的,那么改回去就行了,参考:http://www.cnblogs.com/EasonJim/p/7129873.html,通过这种方 ...

  4. Ubuntu桌面卡死时的处理

    1.这种方式可以尝试,但是不成功 sudo skill x sudo stop lightdm sudo start lightdm 2.这种方式比较可靠 ps -t tty7 kill 27342 ...

  5. Maticsoft Code Generator

    源码:https://github.com/easonjim/MaticsoftCodeGenerator bug提交:https://github.com/easonjim/MaticsoftCod ...

  6. 美河LINUX 内核学习视频

    Linux内核从原理到代码详解 培训视频 Linux内核源码研读与实战演练 [7.10][美河资料发布小组@aipepsi][linux内核分析视频教程] 炼数成金Linux内核探秘 [11.23][ ...

  7. ArcGIS AO中控制图层中要素可见状态的总结

    一.DefinitionExpression 实现新建查询图层,查询结果要素为选中状态 该接口可以通过两种方法来控制要素的可见状态. 思路1 通过该接口的 DefinitionExpression 方 ...

  8. WeixinJSBridge 微信

    <!DOCTYPE html> <html> <head><title>微信WeixinJSBridge API</title> <m ...

  9. 为XCode 6 加入新建类模板

    用XCode 6在改动之前用XCode 5 的代码的时候突然间发现 XCode 6已经把新建带有 .xib 类的模板给删去了.而项目的新需求中又要用到新建带有 .xib 的类(用惯了~),全部不得不又 ...

  10. 开发汉澳sinox64位,对接汉澳矩阵电脑

    汉澳矩阵电脑刚刚不久前提出,即使全然设计出了汉澳矩阵电脑线路图,要在上面执行操作系统必须有矩阵操作系统. 汉澳sinox64位操作系统并非矩阵操作系统,仅仅是更为接近. 汉澳矩阵电脑假设插有16个矩阵 ...