Linux系统分析线上课程学习总结

  历时八周,完成了Linux内核分析的线上课程。在孟老师的引领下,完成了Linux内核核心进程相关的源代码阅读与过程追踪,一步步了解Linux系统中进程的前世今生,从出生到正常运行、切换的内核代码实现,在这个过程中孟老师的mykernel、MENUOS以及gdb调试工具都让学习过程变得更加顺利。

Linux系统分析入门–简单汇编代码分析

  第一周的课程主要学习了32位系统下的一些常用汇编代码,常用寄存器,并且通过分析简单的系统调用学习系统调用过程中堆栈的变化,是了解 Linux内核的基础。

简单的时间片轮转多道程序内核代码

  第二周的课程主要围绕孟老师编写的mykernel进行,基于mykernel编写简单的进程调度函数,主要理解进程调度过程中内核需要进程的工作,也就是运用第一周的汇编代码实现进程上下文的保存和恢复。

跟踪分析Linux内核的启动过程

  第三周课程最核心的内容运用gdb跟踪Linux内核启动过程,理解内核启动过程中0号进程,1号进程,2号进程的创建过程,通过自己阅读代码以及与阅读参考资料,可以知道0号进程也就是init-task,这个进程是由内核编写人员手动创建,并且在执行rest-init的过程中,通过调用kernel_thread函数创建两个进程,分别执行kernel-init和kthreadd函数,前者就是1号进程,最终启动init进程,后者是系统的2号进程,它是一个内核进程,管理内核资源。

Linux下简单的系统调用

  第四周课程通过int0x80系统中断实现系统调用,分别用C代码和嵌入式汇编实现同一个系统调用。

分析system_call中断处理过程

  第五周课程通过追踪系统调用过程,可以知道在系统调用的流程中,程序主要做了保存现场,根据%eax中保存的系统调用号执行对应的系统调用内核函数,恢复现场并返回到用户态这几部操作。

Linux系统创建进程过程简单分析

  第六周课程通过追踪系统创建新进程的过程,可以知道所有的进程创建都是基于复制的方式,然后对子进程做一些特殊的处理保证子进程从ret_from_fork处开始正常执行。

可执行程序的装载

  第七周的课程围绕可执行程序的产生、ELF文件、参数的传递、动态链接等几个方面说明了可执行程序的装载。

理解进程调度时机跟踪分析进程调度与进程切换的过程

  第八周课程讲解了进程切换函数,一般进程切换的过程以及几个特殊的进程切换时机。

  通过八周的课程,对Linux内核进程相关的内容有了深层次的认识,除了对代码、流程的学习理解,还学到了阅读大型工程代码的好方法,但是比较遗憾的就是时间不是那么的充裕,对于Linux内核的其它部分知识没有时间能跟着孟老师继续学习,此乃一大遗憾。


杨金龙原创作品转载请注明出处
课程信息:《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值