张建帮 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
通过这一段时间对Linux内核的学习,我不仅将操作系统课中所讲述的那套理论的东西和实际的代码结合了起来,加深了对整个Linux的运行机理的了解,更是深刻体会到了整个Linux系统设计的哲学美感,而且现在Linux的整个设计体系已经相当稳定,化繁为简,这也是大部分服务器使用Linux的重要原因吧。
这里放上我的博客作业的链接:
函数调用的栈帧分析
讲述了基本的AT&A汇编指令,并学会如何分析汇编代码的工作过程中堆栈的变化以及函数参数传递的过程中到底发生了什么深入理解操作系统内核
通过对一个简易内核的分析,来理解Linux内核的最基本的原理,简易内核的源代码在这里:源码Linux内核启动的进程浅析
使用gdb跟踪调试老师自制的 menu 系统,了解Linux内核启动过程的具体的流程,了解进程的由来及其关系Linux的系统调用机制
通过使用函数调用和嵌入式汇编两种方式调用同一个系统调用,加深对系统调用流程的理解system_call的汇编代码分析
分析使用汇编代码编写的系统服务例程,了解系统调用中究竟发生了什么Linux中fork的内核实现
fork() 系统调用是一个特殊的系统调用,它着一次调用,两次返回的特点。本次博客分析了其具体的实现,包括子进程的由来,以及为什么父子进程之间会互不影响Linux中可执行程序的装载与执行
Linux中可执行文件ELF格式文件的基本内容的学习,以及通过分析和跟踪execve系统调用来理解可执行程序的装载流程,当执行到execve系统调用时,陷入内核态,用execve加载的可执行文件覆盖当前进程的可执行程序,当execve系统调用返回时,返回新的可执行程序的执行起点。上面就是八周的博客列表。通过这八周的学习,我不仅学习到了Linux内核的相关知识,还学习到了正确的阅读代码的方法,尤其是在代码量极大的情况下:
在看代码之前,思考或者猜测代码想要实现的功能,在阅读具体代码的时,修正自己的认识偏差,然后写上自己的注释,这样也容易抓住主干,而不是深陷在具体细节而迷失在代码的海洋中。