其实我是一个很笨很笨的人。
从5
月份正式开始学linux, 到现在已经半年了。 中间还参杂着毕业和入学的一些事情。 一开始是学些基本命令,后来看了CSAPP和APUE.
慢慢地开始在linux 上写些程序。 到9月份正式开始看赵博的那本内核, 到现在基本看完。 感觉真的收获不少。 昨天晚上在bochs
下跑起了0.11的系统。 感觉真的很兴奋。 其实学linux的优势是你可以清楚地知道它到底是什么, 怎么实现, 怎么运转。
不像在windows环境下, 底层都是雾里看花。 看内核是一件需要耐心的事情, 幸好有好书的引导, 一些是那么的顺畅和清晰:
从BIOS
读入引导扇区的代码, 然后引导代码读入整个内核映像文件, 进入实模式, 转入保护模式,
初始化内存,陷阱/中断门,初始化设备驱动,初始化buffer cache
,文件系统以及硬盘软盘等,最后转入用户模式执用fork()产生第一个进程。执行init 初始化。。。 我是一步步跟进去看的。
到最后就形成了一个整体的概念。 也许这就是刚开始读内核的时候选择0.11的好处吧。
你可以知道整个系统从头到尾的运行过程,在并不大的代码里很快定位到你想要的答案。
你可以一开始不被现在内核的复制子系统所困扰而专注于整个系统的运行。。。 现在我明白了fork()到底是怎么回事,
为什么fork会两次返回,为什么子进程会一开始就从fork()后一条指令开始执行而不会再次从头开始执行进而产生递归?
还有dup到底是怎么回事,如何用dup做到重定位? 信号又是怎么回事,OS又是怎么实现和管理进程的信号?
进程调度的机制是什么,任务又是怎样切换的? 为什么会有用户态和内核态, 用户态堆栈和内核态堆栈?
保护模式又是怎么回事,怎么保护?描述符是怎么安排的?
还有虚拟内存到底是怎么实现的。。。这些都是我以前的疑问,很多时候都在一个人苦想也得不到答案,可是现在我明白了这一切。
明白了什么是OS,明白了系统的底层细节。 所以今夜有些感想,有些快乐!
现在我已经深深地被linux吸引。 已经变成了一个开源爱好者。 我成不了牛人,但是我可以找到我想要的答案,这样已经能够给我最够的勇气和快乐了。。。
我会坚持走我的路, 一切靠自己努力!!
已经订购了LKD 2rd, ULK 3rd, LDD了,Everything will be beatiful!!!
阅读(810) | 评论(2) | 转发(0) |