Linux内核分析学习心得

李洋  原创作品转载请注明出处

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

转眼几周过去,《Linux内核分析》这门课也眼看就要结束,再这几周的学习中,我在原来的基础上加深了对Linux系统内核的理解,比如很多内存管理,进程管理的知识,原来对于我只是书本上的东西,通过课程和实验却能够通过切实的代码和运行过程的跟踪而表现出来。

这几周的学习心得:

  这次学习涉及了Linux内核调度机制,schedule如何工作,系统API的实现,创建新进程过程的分析,可执行程序的装载及可执行ELF文件的结构等知识,线上课程总体上来说主要涉及的是内核启动~调度~运转的一个过程。

  基于x86计算机Linux系统的启动顺序。第一步是BIOS从启动设备中导入主引导记录(MBR),接下来MBR中的代码查看分区表并从活动分区读取GRUB、LILO或SYSLINUX等引导装入程序,之后引导装入程序会加载压缩后的内核映像并将控制权传递给它。内核取得控制权后,会将自身解压缩并投入运转。

  基于x86的处理器有两种操作模式:实模式和保护模式。在实模式下,用户仅可以使用1 MB内存,并且没有任何保护。保护模式要复杂得多,用户可以使用更多的高级功能(如分页)。cpu必须中途将实模式切换为保护模式。但是,这种切换是单向的,即不能从保护模式再切换回实模式。

  内核初始化的第一步是执行实模式下的汇编代码,之后执行保护模式下init/main.c文件中的 start_kernel()函数。start_kernel()函数首先会初始化CPU子系统,之后让内存和进程管理系统就位,接下来启动外部总线和 I/O设备,最后一步是激活初始化(init)程序,它是所有Linux进程的父进程。初始化进程执行启动必要的内核服务的用户空间脚本,并且最终派生控制台终端程序以及显示登录(login)提示。

  

下面是我学习这门课所有文章的目录:

计算机工作原理简析

Linux操作系统内核工作机制——简单时间片轮转的实现

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

使用库函数API和C代码中嵌入汇编代码系统调用

分析write中断处理过程

分析Linux系统内核创建一个新进程的过程

Linux内核如何装载和启动一个可执行程序

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

总结:

  通过学习,我掌握了更多的编译和GDB调试技巧,知道了如何自己编译生成一个Linux系统,当然更进一步的可能就是在系统内核上做手脚,尝试更改~删减~增加内核功能。

  当然。。。顺便的,写博客的能力也得到了很大的提升。。。这算是意外之喜,写博客确实能够从另一方面体现自己对知识的掌握程度,不过呢,确实让我有高中时候被语文老师逼着写周记的感觉(那是解决方案是自己写连载小说。。。)。

  如果说意见的话,我觉着本课程的富文本材料可以更丰富一些,尤其是对于核心代码的注解。同时呢,目前实验的设计更侧重与验证实验,我希望能有更多让同学们自己发挥的东西,比如提出一个功能,让大家结合本节所讲的内容进行实现;或者给出代码框架,让大家补全汇编代码之类,我觉着这样子动手动脑去做,会比照着做得验证实验更为有效。

  

时间: 2024-11-05 13:30:33

Linux内核分析学习心得的相关文章

Linux系统的理解及学习Linux内核的心得

作业列表      linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作 linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核代码 linux内核分析作业3:跟踪分析Linux内核的启动过程 linux内核分析作业4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 linux内核分析作业5:分析system_call中断处理过程 linux内核分析作业6:分析Linux内核创建一个新进程的过程 Linux内核分析作业7:L

Linux内核分析学习笔记(一)

从今天开始学习网易云课堂孟宁老师的<Linux内核分析>课程,链接地址:http://mooc.study.163.com/course/USTC-1000029000#/info,记录课程学习笔记. 第一周的内容主要介绍了冯诺依曼体系结构.ATT格式的32位x86汇编语言以及一个简单的c程序反汇编成汇编代码的执行分析过程. 一.冯诺依曼体系结构——存储程序式计算机 冯诺依曼体系结构的核心是存储程序,将数据和代码都存储在存储器中,都是二进制数据,通过特定的模块来分辨数据与代码.冯诺依曼体系结构

Linux内核学习总结:Linux系统的理解及学习Linux内核的心得

作业一计算机是如何工作的进行http://www.cnblogs.com/zhengwei0712/p/5207299.html 作业二操作系统是如何工作的进行http://www.cnblogs.com/zhengwei0712/p/5234622.html 作业三LINUX内核的启动过程http://www.cnblogs.com/zhengwei0712/p/5253703.html    第一章:Linux发展与UNIX 第二章:内核源码获取.解压.配置.编译与安装 作业四系统调用的工作

《Linux操作系统分析》之Linux系统的理解及学习Linux内核的心得

经过这一段时间的学习,自己对linux也有了一定的认识,今天这篇博客对以往的知识进行一个总结吧. 以往linux学习的博客,从上而下是学习深入的过程,我的博客链接如下: 第一篇:<Linux操作系统分析>之分析计算机如何启动以及如何工作运行 第二篇:<Linux操作系统分析>之分析精简的Linux的内核中断和时间片轮询 第三篇:<Linux操作系统分析>之跟踪分析Linux内核的启动过程 第四篇:<Linux操作系统分析>之使用库函数API和C代码中嵌入汇编

linux内核学习心得

博客 1.通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 http://blog.sina.com.cn/s/blog_7608db8f0102vndr.html 第八次 http://www.cnblogs.com/icecri/p/4457998.html

《Linux内核分析》学习总结与学习心得

一.目录列表 第一周:计算机是如何工作的? http://www.cnblogs.com/dvew/p/5224866.html 第二周:操作系统是如何工作的? http://www.cnblogs.com/dvew/p/5245866.html 第三周:构造一个简单的Linux系统MenOS http://www.cnblogs.com/dvew/p/5270915.html 第四.五周:系统调用的三层皮 http://www.cnblogs.com/dvew/p/5285685.html h

linux内核与分析 心得与体会

作业目录: (1)计算机是如何工作的:http://www.cnblogs.com/20135335hs/p/5213394.html (2)操作系统是如何工作的:http://www.cnblogs.com/20135335hs/p/5248078.html (3)Linux系统启动过程:http://www.cnblogs.com/20135335hs/p/5271708.html (4)系统调用的方法:http://www.cnblogs.com/20135335hs/p/5297310.

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

《linux 内核分析》总结

王一+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 一.linux 系统的理解和学习心得 操作系统作为一个运行任务和程序的平台,几乎所有的独立运行的计算平台上都有,小到一个51的最小系统,可以模拟简单的操作系统,大到超级计算机,平常最多的是Android系统,因为是目前为止大部分手机上所运行的操作系统,而这个操作系统的原型就是linux操作系统,它有很多优秀特性,多任务和多用户,开源和稳定.linux 操作系统