总结 linux源码趣读
花了半个月左右,看完了闪客的 linux 源码趣读。感觉之前上的操作系统原理课程只能给你一个模糊的印象,啊,有这个概念来着,有这个算法来着。比起从理论到实践的文字游戏,我还是更喜欢从实践讲理论的脚踏实地。从阅读 linux-0.11 源码,了解操作系统的构成。
所谓的总结就是放到能够随时索引的地方。
盲总结
在进入 c 语言之前,用汇编进行了从实模式到 32位保护模式的转换。操做系统的构成是与理论息息相关的。我们需要在构建操作系统的同时不足操做系统原理知识,需要一些额外的参考书。
还有一些内存管理。
对于 linux 内核来说,一个 main 函数就是全部了。
分为几部分
- 初始化,是下面所有操做系统模块的基石。内存管理。
- fork 与进程管理
- shell、文件系统、文件从硬盘导入内存的过程、缓冲区。第三部分比较过程化,把几个系统的使用过程汇总在一起了。
linux-0.11 不涉及图形化界面的操做系统代码,这部分我们可以通过《30天自制操做系统》了解并且实践。
很多系统调用函数都是用汇编写的,能否用别的语言呢?
文章中提到的几个问题,能否通过自己的语言和代码实现和解决。
明总结
博客框架总结,目录
- 汇编
- 加载启动区,
- 载入代码,
- GDT,
- 转换实模式到保护模式,
- 分段与分页,
- 跳转到 main
- 初始化
- 内存规划,
- 内存位图等初始化,
- 中断初始化,
- 块请求初始化,
- tty 初始化,
- 计时器 cmos 初始化,
- 进程调度初始化,
- 缓冲区初始化,
- 硬盘初始化
- 进程
- 从内核态到用户态
- 进程调度设计
- 定时器滴答时的进程调度过程
- fork、系统调用
- fork 中的进程信息复制
- fork 中的进程内存规划
- 写时复制的原理
- shell
- 硬盘信息
- 根文件系统
- 打开终端设备文件
- 进程2
- execve 系统调用
- 缺页中断
- 跑通 linux-0.11
- shell 命令的执行
- 键盘输入
- shell 读取
- 输入处理途中进程的阻塞与唤醒
- 解析执行 shell 命令
- 读取硬盘数据
- 信号
查看一下 linux-0.11 的源码,把源码加上注释成为自己的源码。
感觉一篇篇看好无聊。不如开始着手写
操作系统编写计划
参考资料
- 30天自制操作系统
- linux-0.11
- xv6
命名:
dchgos
首先根据《30天自制操作系统》一步步做,完成一个 demo。
同时参考 linux-0.11、xv6、linux 更高版本的相应模块的实现,学习,优化 demo。
每天写项目进度报告。