MIT6.S081 xv6book chapter3

第三章的主题是页表,单看页表会很抽象,但页表背后的思想是地址空间的隔离。让每个进程都有自己的地址空间,保护地址空间不受他人侵犯。同时,页表管理的“页”,页内地址连续,以页为单位,避免页表过于庞大(多级页表也是为了实现这个目标)。同时,虚拟空间到物理空间的映射,多了几分实用trick,比如内核采用直接映射、内核页表下的guard page(未映射)、内核和用户相同的映射(trampoline page,多对一映射)。

本节融合了课程lec04的内容。虚拟地址的抽象是为了程序的隔离性,理解这点后就很容易了。

阅读更多

MIT6.S081 xv6book chapter2

第二章以操作系统三个要求:复用、隔离和交互展开讲述了内核设计、进程设计,还描述了xv6的启动流程。

看完这一章还是很笼统抽象,一些细节还是需要等到后续披露,但这时候你大致把握到操作系统的整体设计了。

隔离的设计——用户态与内核态;复用的设计——用户进程;交互设计——进程通信。

阅读更多

MIT6.S081 xv6book chapter1

第一章从操作系统接口方面认识操作系统,以摘要的形式介绍几个关键点,详情请看xv6book。

我的学习经验是:这一章的主要目的就是从整体上把握操作系统,认识几个系统调用。如果你没看懂这一章的一些细节,这是ok的,因为这些细节会逐渐在后面的章节披露,这一章只需要理解系统调用(操作系统为你提供的服务)。

阅读更多

MIT6.S081 调试xv6

之前学了一些gdb的使用,但是总不能实际上手操作,不如终端IDE可视化调试。这次由于Docker配置环境,不想再折腾连接IDE调试,于是学习GDB。

阅读更多

MIT6.S081 lab1 utilities

实验一的目的是熟悉系统调用以及有限的C标准库使用,借此实现一些经典的unix命令。

在其中碰到了一些bug,大多与字符串解析有关。只记录了几个有意思点的实验。

搭建环境 : docker+目录映射

阅读更多