综述
之所以在介绍 C++ 的文章里 C 语言,是因为 C++ 确实脱胎于 C,所以很多语法现象都是和 C 保持一致的。
运算符优先级
虽然盲目的整理过会就忘,但是还是有很多可以记住的东西
这是一次对于 MOS 内存管理的钻牛角尖梳理,在梳理过程中诞生了一些奇怪的东西。
操作系统的代码不是 C 就是汇编。所以我们从一开始就在使用虚拟空间了。但是很有意思的是,我们为什么可以?我们在一开始的时候没有内存控制块,也没有页表结构。所以我们到底是怎么完成映射的?
其实就是对于 kseg0,只要我们往里面写东西,那么内容就会直接写到高位抹零后对应的物理地址上。这种映射是第一性的,也就是说,即使我一直不建立内存控制块,一直不建立页表结构,只要我用链接器把代码放到了 kseg0,那么这种关系依然是成立的。我写的每一段代码,操作的每一个数据,都是直接写到物理内存中的,不走 MMU,不查页表。这是一切的本源。
关于 kseg1 的情况,其实应该是书里写错了,采用的映射关系其实不是抹掉高 3 位以后映射到物理地址,而是映射到了设备总线。只有这样,才可以避免 kseg0 和 kseg1 的不同的虚拟页面映射到同一个物理页框。不同的虚拟页面确实可以映射到同一个物理页框,但是这意味着这两个虚拟页面的内容应该是相同的,但是显然这两个段内容显然不是相同的,所以两个段必然不能遵守书中的规则。
Just like the picture on this PowerPoint, today we are going to tell a romantic love story, the main characters of the story are Wallis (that is, the lady on the left side of the picture) and Edward (that is, the gentleman on the right side of the picture). Interestingly, even their initials together are the romantic “WE”. But believe me, their story is far more legendary than the coincidence of names.
I believe that we have more or less seen Qiong Yao’s novels or idol dramas, in which the heroes are very outstanding, they can give more than 100,000 dollars of money to the girl of their choice.They often talk about sending the Eiffel Tower and large square feet of the building.
为了不让读者懵逼(主要是我自己也懵逼),所以特地整理一下在后面会用到术语。
我们电脑上有个东西叫做内存,他的大小比较小,像我的电脑就是 16 GB 的。它是由 ROM 和 RAM 组成的(“组成”可能不太严谨)。他也被叫做主存,我们为了访问他,所以需要给他的存储空间进行编号,这种编号被叫做物理地址。
我们电脑上还有个东西叫做外存,他的大小比较大,像我的电脑是 256 GB的。它可以是磁盘,也可以是固态硬盘,还可以是 U 盘。我们访问它,也是需要对它的存储空间进行编号的,拿磁盘举例,我们一般用“分区-扇区”的系统来描述我们在访问磁盘的哪个区域。总之它是一个不在这一章重点讲的东西。