唠叨一下
没想到第一课的信息量就这么大,如果是没有接触过汇编的同学可能会有些难度,这里不仅要求对系统有一定的了解,还得会通过调试的方法来查看整个程序的运行过程。
我的环境还没有搭建好,看了一些大佬的在环境搭建的时所到的坑,多有点耐心一定可以的。
不知道你们有没有看PPT,第一课的教案内容也十分丰富,人家的绪论一点都不水反而是整体的总结了一下系统的各个层次和设计难点。作业可以看成是实践教学了,美国的这种教育体系很和我的胃口不会觉得无聊,有挑战性!
作业笔记
第一步很人性化的教你如何建立一个git上的仓库,这一步有兴趣可以看看
第二步搭建环境,老师写了一个小的内核程序,JOS,我们需要完善里面的一些代码。程序运行在qemu上面,属于模拟器毕竟操作系统可能被玩坏。
Part 1: PC BootstrapGetting
Started with x86 assembly:熟悉一下指令集,老师也知道单独看汇编那些指令也记不住,所以只是告诉我们在之后可能会用得上这些资料。汇编有好几种不同的指令集,这次所用的是NASM Intel风格的汇编指令。
Simulating the x86:配置搭建运行环境,这里参加一些大佬的环境部署,会有很多坑
The PC’s Physical Address Space:这张图信息量爆炸!不过也不难理解,讲的很详细
个人理解:
- 最早的时候PC电脑只有16位(Intel 8088),因此可以寻址空间很少,因为总线只有16位。所以最早只能寻址640K (0x00000000 ~ 0x0000FFFF),所以这一段被称为是low memory,如果在16bit下只能随机的访问这么多内存。
- 屏幕的缓存和固件驱动都需要占用一定的存储空间,这个部分就是空出来的,一般来说我们的视频缓存内容都会用voliate修饰并且放在这个区域里面。
- 最早的BIOS程序都是放在ROM上面的,近几年都放在了flash上面,程序也不大,就是一个初始化硬件引导系统的一个装置,有了它无论是在u盘里面还是硬盘,系统都能被加载到内存里面运行起来。
- JOS使用的是前256M因此就只学习32位系统的设计
- 学习GDB调试方法,由于已经提供了.gdbinit文件&#