操作系统设计与实现:基于LoongArch架构
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第0章 绪论

MaQueOS是一个基于龙芯LoongArch架构的教学版操作系统。它使用C语言和LoongArch汇编指令编写。目前,MaQueOS仅可以运行在QEMU虚拟机中,不支持在LoongArch架构的物理硬件平台上运行。MaQueOS由Linux 0.11内核深度裁剪而来,并做了从x86架构到LoongArch架构的移植。其中,硬盘驱动、键盘驱动和显示器驱动进行了重写。除此之外,MaQueOS仅支持自定义的xtfs格式的文件系统和xt格式的可执行文件,并且实现了基于共享内存的进程间通信机制。

作为一个教学版操作系统,MaQueOS的特点是设计简单。正如MaQueOS这个名字的含义,“麻雀”虽小,五脏俱全。如表0.1所示,与目前的教学版操作系统相比,MaQueOS的代码虽然只有1000多行,但是它实现了操作系统核心的功能子系统:进程管理、内存管理、文件系统、中断管理和外设驱动。

表0.1 教学版操作系统的对比

㊀ https://github.com/kiukotsu/ucore/tree/master/labcodes/lab8/kern目录下所有代码的总行数。

㊁ https://gitee.com/ipads-lab/chcore-lab-v2/tree/lab5/kernel目录下所有代码的总行数。

㊂ Lcore-Stage8-01/kern目录下所有代码的总行数。

㊃ https://github.com/mit-pdos/xv6-riscv/tree/riscv/kernel目录下所有代码的总行数。

㊄ https://gitee.com/dslab-lzu/maqueos/tree/master/code12/kernel目录下所有代码的总行数。

为了能更好地适用于教学,以及让读者尽快掌握基本的操作系统实现原理,MaQueOS被实现为一个基于单核处理器的操作系统,同时没有考虑只有在多核处理器情况下存在的资源竞争问题。除此之外,为了减小代码量,以及简化功能流程,MaQueOS未做过多的异常处理。当内核在运行过程中遇到异常情况时,仅仅在打印错误信息后终止运行。例如,在调用get_page函数申请一个空闲物理页时,若系统中已没有空闲物理页,则在打印“panic:out of memory!”信息后,系统进入死循环,而不是返回NULL(表示系统中已无可分配的空闲物理页)。之后,在调用get_page函数申请空闲物理页的函数中,判断物理页是否申请成功。