庖丁解牛Linux内核

在线播放

课程目录

1 1 1 什么是冯诺依曼体系结构?

1 2 1 X86 Registers

1 2 2 X86汇编指令一(mov指令及几种内存寻址方式)

1 2 3 X86汇编指令二(push、pop、call、ret)

1 2 4 分析几个汇编指令片段(一)

1 2 5 分析几个汇编指令片段(二)

1 3 1 反汇编一个简单的C程序

1 3 2 C程序和对应的汇编指令

1 3 3 完整汇编程序执行过程分析

2 1 1 三个法宝

2 1 2 深入理解函数调用堆栈

2 1 3 参数传递与局部变量

2 2 1 mykernel实验背后涉及的思想

2 2 2 利用mykernel实验模拟计算机硬件平台

2 3 1 C代码中嵌入汇编代码的写法

2 3 2 一个简单的操作系统内核源代码

2 3 3 运行这个精简的操作系统内核

3 1 1 Linux内核源代码

3 2 1 构造一个简单的Linux系统MenuOS

3 3 1 使用gdb跟踪调试Linux内核的方法

3 3 2 简单分析一下start kernel

4 1 1 用户态、内核态和中断处理过程

4 2 1 系统调用概述和系统调用的三层皮

4 3 1 使用库函数API获取系统当前时间

4 3 2 使用C代码中嵌入汇编代码触发系统调用获取系统当前时间

5 1 1 给MenuOS增加time和time asm命令

5 2 1 使用gdb跟踪系统调用内核函数sys time

5 3 1 系统调用在内核代码中的工作机制和初始化

5 3 2 简化后便于理解的system call伪代码

5 3 3 简单浏览system call到iret之间的主要代码

6 1 1 进程描述符task struct数据结构(一)

6 1 2 进程描述符task struct数据结构二)

6 2 1 进程的创建概览及fork一个进程的用户态代码

6 2 2 理解进程创建过程复杂代码的方法

6 2 3 浏览进程创建过程相关的关键代码

6 2 4 创建的新进程是从哪里开始执行的?

6 2 5 使用gdb跟踪创建新进程的过程

7 1 1 可执行程序是怎么得来的?

7 1 2 目标文件的格式ELF

7 1 3 静态链接的ELF可执行文件和进程的地址空间

7 2 1 装载可执行程序之前的工作

7 2 2 装载时动态链接和运行时动态链接应用举例

7 3 1 可执行程序的装载相关关键问题分析

7 3 2 sys execve的内部处理过程

7 3 3 使用gdb跟踪sys execve内核函数的处理过程

7 3 4 可执行程序的装载与庄生梦蝶的故事

7 3 5 浅析动态链接的可执行程序的装载

8 1 1 进程调度与进程调度的时机分析

8 1 2 进程上下文切换相关代码分析

8 2 1 Linux系统的一般执行过程分析

8 2 2 Linux系统执行过程中的几个特殊情况

8 2 3 内核与舞女

9 1 Linux操作系统架构概览

9 2 最简单也是最复杂的操作——执行ls命令

9 3 从CPU和内存的角度看Linux系统的执行

最后更新于