20135132陈雨鑫 + 原创做品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”html
第一周http://www.cnblogs.com/20135132yoggie/p/5220003.htmllinux
第二周http://www.cnblogs.com/20135132yoggie/p/5240418.html程序员
第三周http://www.cnblogs.com/20135132yoggie/p/5251382.html数据结构
第四周http://www.cnblogs.com/20135132yoggie/p/5279906.html架构
第五周http://www.cnblogs.com/20135132yoggie/p/5312850.html函数
第六周http://www.cnblogs.com/20135132yoggie/p/5333026.html学习
第七周http://www.cnblogs.com/20135132yoggie/p/5363734.htmlspa
第八周http://www.cnblogs.com/20135132yoggie/p/5389083.html操作系统
1、计算机是如何工做的?调试
一、存储程序计算机工做模型
1)冯诺依曼体系结构
2)存储程序计算机工做模型
3)CPU识别什么样的指令?如何定义?
API:程序员与计算机的接口界面。
ABI:程序与CPU接口界面
二、X86汇编基础
1) X86 CPU的寄存器
2)常见汇编指令
2、操做系统是如何工做的
一、函数调用堆栈
1)三个法宝 计算机是如何工做的?(总结)——三个法宝(存储程序计算机、函数调用堆栈、中断机制)
2)深刻理解函数调用堆栈
二、借助Linux内核部分源代码模拟存储程序计算机工做模型及时钟中断
三、在mykernel基础上构造一个简单的操做系统内核
3、构造一个简单的Linux系统MenuOS
一、linux内核源代码简介
三大法宝(存储程序计算机、函数调用堆栈、中断)和两把宝剑(中断上下文的切换:保存现场和恢复现场、进程上下文的切换)
1)在linux内核源码里面arch占有的代码量至关庞大。arch/x86目录下的代码是咱们重点关注的。
2)内核启动相关的代码基本都在init目录下(main.c)。
start_kernel是初始化linux内核的起点。
start_kernel至关于c程序中的main函数
3)linux内核的核心代码在kernel目录中
二、构造一个简单的linux系统
init是第一个用户态进程,是1号进程。
三、跟踪调试Linux内核的启动过程
4、扒开系统调用的三层皮(上)
一、用户态、内核态和中断
库函数将系统调用封装起来。
1)什么是用户态和内核态
2)在linux内核代码中区分用户态和内核态
用cs(代码段选择寄存器)和eip(偏移量寄存器)进行区分。
3)中断处理是从用户态进入内核态的主要方式
二、系统调用概述
三、使用库函数API和C代码中嵌入汇编代码触发同一个系统调用
5、扒开系统调用的三层皮(下)
一、给menuOS增长time和time-asm
二、使用gdb跟踪系统调用内核函数sys_time
三、系统调用在内核代码中的工做机制和初始化
1) 系统调用在内核代码中的工做机制和初始化
2) 简化后便于理解的system_call伪代码
3)简单浏览system_call和iret之间的主要代码
6、进程的描述和进程的建立
一、进程的描述
1)进程描述符task_struct数据结构(一)
操做系统的三大功能:进程管理(核心)、内存管理、文件系统。
二、进程的建立
7、可执行程序的装载
一、预处理、编译、连接和目标文件的格式
1)可执行程序是怎么得来的
2)目标文件的格式ELF
3)静态连接的ELF可执行文件和进程的地址空间
二、可执行程序、共享库和动态加载
1)装载可执行程序以前的工做
2)装载时动态连接和运行时动态连接应用举例
3)可执行程序的装载
1.可执行程序的装载相关关键问题分析
2.sys_execve的内部处理过程
3.使用gdb跟踪sys_execve内核函数的处理过程
4.可执行程序的装载与庄生梦蝶的故事
5.浅析动态连接的可执行程序的装载
8、进程的切换和系统的通常执行过程
一、进程切换的关键代码switch_to分析
1)进程进度与进程调度的时机分析
2)进程上下文切换相关代码分析
二、Linux系统的通常执行过程
1)Linux系统的通常执行过程分析
2)Linux系统执行过程当中的几个特殊状况
3)内核与舞女
三、Linux系统架构和执行过程概览
1)Linux操做系统架构概览
2)最简单也是最复杂的操做——执行ls操做
3)从CPU和内存的角度看Linux系统的执行
总结
linux内核分析的网课转眼就结束了,这几个月来,仍是收获颇丰,至少如今对一些操做仍是有些了解,在实验过程当中,虽然碰到了许多问题,但仍是一个一个的解决了,使用gdb调试,设断点等等一系列操做。了解了计算机是怎么工做的,什么是操做系统,操做系统是如何工做的,了解系统调用的过程,以及进程的描述和建立,可执行程序的装载,进程的建立等等。须要在从此的学习中,经过不断练习加深理解。