操作系统

从lab1~lab6迭代地开发一个小型操作系统,各lab内容如下:

lab0. Linux、Makefile、git、vi 和仿真器的使用以及基本的shell编程。

lab1. 内核、启动和 printf: PC 启动的实验,理解硬件的启动过程及链接地址、加载地址和重定位的概念,学习如何编写裸机代码。

lab2. 内存管理: 理解虚拟内存和物理内存的管理,实现操作系统对虚拟内存空间的管理。

lab3. 进程与异常: 通过设置进程控制块和编写进程创建、进程中止和进程调度程序,实现进程管理;编写通用中断分派程序和时钟中断例程,实现中断管理。

lab4. 系统调用与 fork: 掌握系统调用的实现方法,理解系统调用的处理流程,实现本项目所需的系统调用。

lab5. 文件系统: 通过实现一个简单的、基于磁盘的、微内核方式的文件系统,掌握文件系统的实现方法和层次结构。

lab6. 管道与 shell: 实现具有管道,重定向功能的命令解释程序 shell,能够执行一些简单的命令。最后将 6 部分链接起来,使之成为一个能够运行的操作系统。

challenge. 信号:理解实现信号(Signal)这种进程间的通讯机制,用来提醒进程一个事件已经发生。