作者:杨舒雯,原创作品转载请注明出处,《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. Windows系统安装nginx及配置

    1.下载nginx http://nginx.org/en/download.html         下载稳定版本,以nginx/Windows-1.12.2为例,直接下载 nginx-1.12.2 ...

  2. Java设计模式之八 ----- 责任链模式和命令模式

    前言 在上一篇中我们学习了结构型模式的享元模式和代理模式.本篇则来学习下行为型模式的两个模式, 责任链模式(Chain of Responsibility Pattern)和命令模式(Command ...

  3. css设置文字不能选中状态

    高版本浏览器的处理方式 -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-u ...

  4. cf C. Finite or not? 数论

    You are given several queries. Each query consists of three integers pp, qq and bb. You need to answ ...

  5. ActivityThread

    /** * This manages the execution of the main thread in an * application process, scheduling and exec ...

  6. canvas的drawImage函数

    HTML5中引入新的元素canvas,其drawImage 方法允许在 canvas 中插入其他图像( img 和 canvas 元素) .drawImage函数有三种函数原型: drawImage( ...

  7. 转载 多线程实际运用<第七篇>

    多线程实际运用<第七篇> 1.单线程采集100个页面 class Program { static int i = 6991275; static void Main(string[] a ...

  8. checkbox选中并通过ajax传数组到后台接收

    这次讲的是通过复选框,选中,点击提交,并将值chuan到后台controller.这个应用是比较广的,什么批量修改,批量添加,授权管理等等,都用到这个.其实这个还是挺简单的,并没有想象中的那么难,但我 ...

  9. PAT A1132 Cut Integer (20 分)——数学题

    Cutting an integer means to cut a K digits lone integer Z into two integers of (K/2) digits long int ...

  10. gitlab备份及恢复

    gitlab备份步骤 https://blog.csdn.net/qq_31666147/article/details/79844107 gitlab版本  下载地址 https://mirrors ...