全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)
看得出来外国高校教育中的质量,一个课程涉及到的资料特别庞大。我感觉掌握起来比较缓慢吃力,当然,这不排除语音障碍带来的影响。但是,对等的中文页面看起来估计也是很有挑战度的。这是我学习MIT的OS课程的时候一个中间的参考资料,主要是PC汇编语言相关的。这一次,整理其中的部分信息。
1. 高级的OS基本上都适用虚拟内存,有内存保护。
2. 之前的书籍中对于保护模式下的编程介绍很少,这是这本书编写的一个很重要的原因。
3. 这里顺带介绍了一个windows以及linux上都有的汇编工具NASM。
这一个章节基本上可以不用看,主要是介绍十进制、二进制以及十六进制的。之前看过的很多计算机相关的资料中都有,这也算是能够让我快速通关的一小点积累了。
这里算是掌握了一个新的常识性知识,以前只知道ASCII码的编码是一个字节的信息,这里增加了Unicode的编码所占存储空间信息:一个字,也就是两个字节。
1. 这里用音乐类比了计算机的程序运行节拍,我觉得非常形象。很多时候,我觉得国外的资料读起来有意思就是因为多了很多这样的小细节,让人觉得整本书里面不仅仅有工程思想,也有艺术情怀。
2. 8088以及8086只支持16bit的实地址。到了286的阶段,支持了保护模式。而386开始,支持增加到了32bit,也就有了现代的通用处理器的原型。
这里简单介绍了一下8086的架构以及寄存器体系,大学的时候没少受到这样的资料的折磨。但是,后来的工作经验告诉我大可不用怕,其实这个东西让他在我们脑海中留下一点影子即可,不用拼自己的记忆力。等我们在实战中不断与之打交道之后,他们会自然在我们的记忆中沉淀。
1. 实模式的机制我是看懂了,但是为什么会设计一个1MB空间的限制?这个我有点没理解,是因为当时制造出来的产品普遍达不到这个水准吗?
2. 多次看到的偏移地址或者分段信息限制为64K,根本原因其实是在于16bit的寄存器表达能力上限就是64K。
1. 为什么会出现地址重叠?其实很好理解,因为最小的段偏移量是16,但是offset又可能大于16,最大64K,因此重合很正常。
2. 不同于实模式,保护模式下段不再固定的物理地址上,甚至可以不在内存中。运行的过程中,会有磁盘与内存之间的数据交换。看到这里,感觉这样是否会增加磁盘的寿命损耗呢?其实答案是很肯定的!除此之外,甚至还会有效率上的损失。
3. 由于CPU依然是16bit,因此之前的64K限制其实是还存在。
升级后的32bit,保护模式其实是改进了段分配机制,改成了页,而每一个页大小是4K。这种升级,除了增加了支持的内存大小之外,还在一定程度上减少了swap的产生。