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

目录:

1.通过简单的汇编程序谈谈对计算机工作方式的认识

http://www.cnblogs.com/yswysw/p/5210942.html

2.浅析基于mykernel实现的时间片轮转调度代码

http://www.cnblogs.com/yswysw/p/5242408.html

3.初始内核启动

http://www.cnblogs.com/yswysw/p/5258239.html

4.从一个简单的系统调用开始

http://www.cnblogs.com/yswysw/p/5280771.html

5.从内核角度浅析系统调用Linux

http://www.cnblogs.com/yswysw/p/5303777.html

6.Linux内核如何创建一个新进程

http://www.cnblogs.com/yswysw/p/5329994.html

7.浅谈Linux内核对可执行程序的装载、启动

http://www.cnblogs.com/yswysw/p/5352054.html

8.gdb跟踪分析进程调度和进程切换

http://www.cnblogs.com/yswysw/p/5388906.html

1. 对Linux操作系统的理解:

我认为linux系统是这样运行的:

  • 首先由0号进程idle创建其子进程1号进程init和2号进程kthreadd,1号进程init是所有用户态进程的祖先,init将会创建新的子进程用来执行用户命令;,2号进程kthreadd是所有内核线程的祖先。
  • 在这个过程中,有可能会发生冲突,根据进程优先级的不同,或者该进程是否是I/O密集型进程来决定谁先抢占CPU,这涉及到进程调度策略,并且在这个过程中会发生进程切换。
  • 进程切换的具体细节,就涉及到内核堆栈和用户堆栈之间数据保存和交换,即保存进程上下文。
  • 进程是依附于程序存在的,这就需要读取文件信息,通过预编译、编译、汇编、链接,生成可执行未见,才能执行。Linux中大部分可执行文件都是ELF格式,通过该格式文件头信息,可以找到程序执行的起点。

2. 收获

  • 系统的了解了操作系统内核的相关结构和设计原理,学会了gdb调试与分析内核代码的方法。
  • 虽然,学完linux内核分析之后我并不能自己编写一个小型的操作系统,但是我学会了分析内核代码的方法,如何使用gdb调试内核代码,以及在调试的过程中,理解内核代码的具体实现。

3. 学习完《Linux内核分析》课程后您最大的遗憾是什么?

这八周的MOOC学习下来,我觉得只是简单的了解了Linux内核的相关知识,在脑海里形成了大致的框架。但是在实际的操作应用层面上,自己还很缺乏。在学习的过程中,大多数实验只能根据老师的指导来进行,对于内核中其他的东西还没有彻底的了解。

最后,感谢孟老师八周来的幸苦教学!

《Linux内核分析》期终总结的更多相关文章

  1. 《Linux内核分析》期终总结&《Linux及安全》期中总结

    <Linux内核分析>期终总结&<Linux及安全>期中总结 [李行之 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc. ...

  2. 《Linux及安全》期中总结&《Linux内核分析》期终总结

    [5216 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK NINE ...

  3. linux内核分析作业8:理解进程调度时机跟踪分析进程调度与进程切换的过程

    1. 实验目的 选择一个系统调用(13号系统调用time除外),系统调用列表,使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 分析汇编代码调用系统调用的工作过程,特别是参数的传递的方 ...

  4. Linux内核分析作业7:Linux内核如何装载和启动一个可执行程序

            1.可执行文件的格式 在 Linux 平台下主要有以下三种可执行文件格式: 1.a.out(assembler and link editor output 汇编器和链接编辑器的输出) ...

  5. linux内核分析作业6:分析Linux内核创建一个新进程的过程

    task_struct结构: struct task_struct {   volatile long state;进程状态  void *stack; 堆栈  pid_t pid; 进程标识符  u ...

  6. linux内核分析作业5:分析system_call中断处理过程

    1.增加 Menu 内核命令行 调试系统调用. 步骤:删除menu git clone        (tab) make rootfs 这就是我们将 fork 函数写入 Menu 系统内核后的效果, ...

  7. linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作

    一.实验 使用gcc –S –o main.s main.c -m32 命令编译成汇编代码,如下代码中的数字请自行修改以防与他人雷同 int g(int x) { return x + 3; } in ...

  8. linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核代码

    计算机如何工作 三个法宝:存储程序计算机.函数调用堆栈.中断机制. 堆栈 函数调用框架 传递参数 保存返回地址 提供局部变量空间 堆栈相关的寄存器 Esp 堆栈指针  (stack pointer) ...

  9. linux内核分析作业3:跟踪分析Linux内核的启动过程

    内核源码目录 1. arch:录下x86重点关注 2. init:目录下main.c中的start_kernel是启动内核的起点 3. ipc:进程间通信的目录 实验 使用实验楼的虚拟机打开shell ...

随机推荐

  1. ELK-elasticsearch-6.3.2插件【head,bigdesk,cerebro[kopf]】安装

    参考博客:linux下ElasticSearch.6.2.2集群安装与head.Kibana.X-Pack..插件的配置安装 参考博客:ELK5.5.1 插件安装实践纪要(head/bigdesk/k ...

  2. Android 用webService产生java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive错误的解决(转)

    在做android  Webservice开发的时候一般情况下大家接受webservice服务器返回值的时候都是使用 SoapObject soapObject = (SoapObject) enve ...

  3. 软件工程实践_Task2_sudoku

    软工实践_Task2 标签(空格分隔): 软工实践 相关要求:第二次作业--个人项目实战 github:传送门 解题思路 先是一点杂谈. 首先,看完作业要求之后,心里先有个大概的框架. 语言:C++ ...

  4. JDK动态代理源码解析

    动态代理.静态代理优缺点     关于JDK的动态代理,最为人熟知的可能要数Spring AOP的实现,默认情况下,Spring AOP的实现对于接口来说就是使用的JDK的动态代理来实现的,而对于类的 ...

  5. UVa 11846 - Finding Seats Again

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. PHP的运行机制与原理(底层)

    原文:http://www.jb51.net/article/74907.htm 说到php的运行机制还要先给大家介绍php的模块,PHP总共有三个模块:内核.Zend引擎.以及扩展层:PHP内核用来 ...

  7. 【转】curl 命令行下载工具使用方法小结

    获取curl curl 命令行下载工具 curl的官方网站为: http://curl.haxx.se官方下载页面为:http://curl.haxx.se/download.html 你可能并不清楚 ...

  8. php 非对称加密解密类

    <?phpnamespace app\Parentclient\model;header("Content-Type: text/html;charset=utf-8");/ ...

  9. day16 Python 内置函数 大体演示想看就看,会用就行

    1.abs() 获取绝对值 a = -10 print(a.__abs__()) 结果: 10 2.all()  接收一个迭代器,如果跌电气的所有元素都为真,那么返回True,否则返回False tm ...

  10. linux shell脚本调用java main方法 代码传值

    #!/bin/bash #description: ljdjService export PRG_HOME=/ainmc/work/toptea/dataTransfer PRG_KEYWORD=pr ...