• Linux内核学习总结


    姓名:何伟钦

    学号:20135223

    ( *原创作品转载请注明出处*)

    ( 学习课程:《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-100002900

    学习Linux内核的心得和对linux系统的理解

          时光匆匆,转眼为期十一周的学习结束了,犹在耳边环绕的是孟老师诙谐幽默的言谈和深入透彻的讲解。感谢中科大孟宁老师推出的《Linux内核分析》这门课程,使我这个在工作中使用多年的操作系统第一次能有机会分析的这么透彻。

         在这为数不长的几周学习里,对Linux系统的工作有了一些初步的了解,不能说太过深入,但是至少心中有了一个具体的框架。在学习的过程中,还参考了相应书籍帮助自己深入理解Linux内核,如《Linux内核设计与分析》和《深入理解计算机系统》。 第一周课程基础知识的学习中,我掌握了计算机的结构--冯诺依曼体系结构以及x86汇编指令基础。尤其是x86汇编基础,可以说是贯穿了整个学习过程。我觉得老师的教学方式是十分优秀的,没有一开始就讲解,而是循序渐进,先介绍基础知识,然后再开始课程内容的教学,这样对我们这些没有基础的同学是很合适的。​第二周,老师通过对上周内容的补充教学,承上启下的开始了操作系统的相关内容介绍,没有丝毫突兀。除了知识的教学,老师还会布置与知识相关的实验,让我们通过自己动手实践,更快的掌握课堂所学并对课堂知识有着更加深刻的理解和掌握。​第三周的构造一个简单的Linux系统MenuOS,通过形象的比喻:​三个法宝:存储计算机、函数调用堆栈、中断;两个宝剑:中断上下文的切换(保存现场和恢复现场)、进程上下文的切换​以及对Linux内核的启动过程的跟踪调试,让我们很快对linux内核有了深刻的认识。第四周、第五周两周的时间对系统调用有了一个系统地介绍,让我知道系统有内核态、用户态之分,知道系统调用的过程,以及中断处理程序。最后是整个系统调用的过程。都有着深刻的认识。连续两次的实验是相互关联,循序渐进的让我掌握系统调用。第六周虽篇幅少,但内容却一点不少。从进程的基础知识,基本概念,到进程的创建,再到最后让我自己创建新进程,并分析其过程,这样一系列学习下来,毫无疑问地掌握了进程的知识。第七周脱离了内核态,开始了用户态的知识讲解,但又不局限于此,对其他知识也有着涉及,例如:共享库、动态链接、目标文件格式等知识,虽篇幅较少,但也有所涉及。实验更加需要对linux有较为全面的认识。第八周是最后一周,所以除了对进程最后一点知识的补充外,还有对整个linux系统的介绍,包括linux系统架构和执行过程,通过对进程切换和系统执行过程的测试,形象立体地向我展示了linux系统执行的过程。

         在源代码的分析上,主要通过调试源代码进行分析,我觉得在今后的学习里,我将会在Linux内核的分析里,进行一些更深入的学习,如进行一些实践,编一个系统调用以便更好地了解Linux内核,并加深知识点对自己的印象。

         最后,谢谢孟老师这几周来的辛勤教导,老师辛苦了!

    作业目录列表:

    《Linux内核分析》课程第一周学习总结

    计算机是如何工作的  
    存储程序计算机工作模型
    32位X86汇编基础
    反汇编一个简单的C程序

    《Linux内核分析》课程第二周学习总结

    操作系统是如何工作的(三个法宝:存储程序计算机、函数调用堆栈、中断机制   

                                  两把宝剑:中断上下文、进程上下文的切换

    函数调用堆栈
    借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断
    构造一个简单的操作系统内核

    《Linux内核分析》课程第三周学习总结

    构造一个简单的Linux系统MenuOS
    Linux内核源代码导读
    构造一个简单的Linux系统
    跟踪调试Linux内核的启动过程

    《Linux内核分析》课程第四周学习总结

    系统调用1
    使用库函数触发一个系统调用
    C代码中嵌入汇编代码的写法
    使用嵌入式汇编代码触发同一个系统调用
    系统调用在内核代码中的处理过程

    《Linux内核分析》课程第五周学习总结

    系统调用2
    使用库函数触发一个系统调用
    C代码中嵌入汇编代码的写法
    使用嵌入式汇编代码触发同一个系统调用
    系统调用在内核代码中的处理过程

    《Linux内核分析》第六周学习总结

    进程的描述和进程的创建

    《Linux内核分析》课程第七周学习总结

    程序和进程
    程序的编译、链接和可执行文件格式
    进程的描述和程序的装载

    《Linux内核分析》课程第八周学习总结

    进程的切换和执行过程概览
    用户态堆栈和内核态堆栈
    进程上下文的保存和恢复
    进程切换的关键代码switch_to分析

    学习《Linux内核分析》课程总结:

    最大的收获:

          这门课程就像一个向导,把我带入Linux内核的大门。当然,想要深入理解,仅靠听这几节课还远远不够,需要在以后理论结合实际,吃透、摸准。通过这门课程的学习,使我在今后调试程序,分析问题的时候更有针对性,更便于找到原因。

    最重要的是找到了学习的方法。(举一反三,学会总结等等)

    最大的遗憾:

    1.课程太短暂,对Linux内核分析也只是略懂皮毛而已,希望可以进一步去了解Linux内核。

    2.在学前没有一个好的计划,没有跟上老师的教学速度

    3.时间安排不好,有几章学习时间比较紧凑,没能好好吸收消化

     

  • 相关阅读:
    (重要)1
    大数据技术
    条件随机场之CRF++源码详解-预测
    条件随机场之CRF++源码详解-训练
    条件随机场之CRF++源码详解-特征
    条件随机场之CRF++源码详解-开篇
    这个更新需要花去 50.6 M 磁盘上总计 /boot 的空间。请在 7737k 磁盘上留出 /boot 空间。清空您的回收站和临时文件,用“sudo apt-get clean
    多线程:pthread_exit,pthread_join,pthread_self
    error: ‘for’ loop initial declarations are only allowed in
    多线程
  • 原文地址:https://www.cnblogs.com/20135223heweiqin/p/5444617.html
Copyright © 2020-2023  润新知