大家好,我是小林。
之前我小林把自己写的操作系统系列文章的整理过 PDF:小林的图解系统,大曝光!。
不过我这个 PDF 偏向理论知识多一些,实战的内容少一些。
最近有个读者说,他把自己学习 课程的笔记整理成了一个 PDF,已经开源至 Github,我也看了下,确实很不错,非常硬核。
课程一直被公认为学习操作系统的神级课程,其课程使用了一个小型的操作系统 还有一份配套的手册来教学。虽然资料齐全但由于是英文,加之内容本身的复杂性,上手还是有一些难度。
这里有一份开源的资料《给操作系统捋条线》,详细讲解了 系统,除了源码中的一些脚本文件几乎覆盖讲述了所有代码,从硬件到软件各个方面都有所讲述。这份资料恰如其名字一般实实在在地给操作系统捋了一条线出来,能够让读者知道计算机从上电那一刻开始,操作系统是如何一步步建立起来的,是如何运行起来的。资料的链接如下:
https://github.com/Rand312/xv6.git
https://gitee.com/rand_cs/xv6.git
全文将操作系统分为了五个大的部分:启动,中断,文件系统,进程,控制台,其他部分比如说内存管理,锁等等都是分散在那五大部分里面。每个部分作者都尽量细致到各个方面,并且附有详细的文字描述或者流程图。
比如说启动流程图
再比如中断流程图
又比如读写文件的流程图
看着这些图感觉还行是吧,较为繁杂的部分基本都有类似的流程图,《给操作系统捋条线》是真的如其名字一般将操作系统捋了 “一条线” 出来。其部分内容截图如下:
部分截图
《给操作系统捋条线》根据 主要讲述了以下问题问题:
启动部分:首先便是启动部分, 的计算机启动过程与常见那几大步骤稍稍不同,但本质一样,除了 和 揉在一起了,其他的没什么,比较常规,再者就是多处理器的情况可能大家不太熟悉,这一块大概有这么一些问题:
文件系统: 将文件系统分为了 7 层,磁盘 缓存 日志 目录 路径 文件描述符,大概有这些问题:
中断异常与系统调用:有时不加强调在 的架构下一般统称为中断,它们实际的处理过程都差不多,只不过中断来源不同而已,都是中断源触发中断,生成中断向量,然后 根据中断向量去处理中断,这一块儿大概有这些问题:
进程: 只支持进程,不支持线程,另外由于支持多处理器,在调度方面需要额外的锁来避免竞争,有这么一些问题:
内存管理: 的内存管理较为简单,使用的是空闲链表法将空闲内存组织起来,有这么一些问题:
锁:锁就其本身的实现上来说不难,难的是锁的使用,内核中的各种问题各种情况极其复杂,这里只简单聊聊:
控制台:主要是处理输入输出部分,特指键盘的输入和显示器的输出,另外再有就是串口的使用,大概有这么一些问题:
大概就这些吧,更多详情内容请看原资料,pdf资料链接:
https://github.com/Rand312/xv6.git
https://gitee.com/rand_cs/xv6.git
配合着本资料学习操作系统,跟进 课程,相信能够获得事半功倍的效果,好了推荐就到这里,祝大家学业进步,有所获有所得。