Linux内核分析之课程总结

SA16225055冯金明    原创作品转载请注明出处 

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

时间的力量还是伟大的,课程终归是要结束了(不用再写博客啦!),要不是课程实验的要求,可能一年不能写到7篇博客的,同时估计一年Linux内核代码也看不了多少的!先简单贴一下各个博客的链接的:

简单总结每个章节掌握到的一些知识点:

计算机是如何工作的?

  • 存储程序计算机工作模式:冯.诺依曼体系结构
  • X86汇编基础:CPU的寄存器(通用寄存器、段寄存器、标志寄存器)、常见汇编指令、堆栈
  • 汇编一个简单的C程序分析其汇编指令执行过程

 操作系统是如何工作的?

  • 函数调用堆栈
  • 模拟存储程序计算机工作模型及时钟中断
  • 构造一个简单的操作系统内核
  • 三大法宝
存储程序计算机:所有计算机基础性的逻辑框架
堆栈:高级语言的起点,函数调用需要堆栈机制
中断机制:多道系统的基础,计算机效率提高的关键

构造一个简单的Linux系统MenuOS

  • 关键进程的初始化:sched_init()进程调度初始化函数,0号进程,即idle进程的初始化;rest_init()其他初始化函数,函数内创建1号进程,即init进程!
  • Linux内核的启动过程:rest_init()函数可以算是在运行最后的初始化工作,其中就包括创建1号进程以及第一个内核进程等操作。创建完成后,则使用do_fork()来创建新的进程。pid是会进行一个累加的。内核线程调用cpu_startup_entry,再调用其中的cpu_idel_loop函数进入循环,此即为0号进程。从rest_init开始,Linux开始产生进程,在rest_init中,通过init_task产生pid=0的进程,即0号进程(idle进程),它是内核状态下的进程;在rest_init函数中,内核通过kernel_init创建1号进程,它是第一个用户态进程。关于init_task(也就是idle),当运行队列中没有别的就绪进程时,init_task(也就是idle)将会被调用,它的核心是一个while(1)循环,在循环中它将会调用schedule函数以便在运行队列中有新进程加入时切换到该新进程上。

扒开系统调用的三层皮(上)

  • 用户态、内核态和中断处理过程
  • 系统调用的具体分析以及三层皮:xyz(API),system_call(中断向量),sys_xyz(中断服务程序)
  • 使用库函数API和C代码中嵌入汇编代码触发同一个系统调用

扒开系统调用的三层皮(下)

  • 分析system_call()中断处理过程:


system_call是Linux中所有系统调用的入口点,每个系统调用都至少需要有一个参数,即由eax传递进入的系统调用号。call *sys_call_table(,%eax,4)函数,就是通过eax传递进来的系统调用号来寻找相信的系统调用处理函数。系统调用本质上是一种特殊的中断,所以它也需要进行现场的保存和结束调用后的恢复。

进程的描述和进程的创建

  • 进程描述符task_struct数据结构
  • fork()、vfork()和clone()都是通过调用do_fork()来实现进程的创建
  • do_fork()、copy_process()和dup_task_struct( )函数的分析

可执行程序的装载

  • 可执行文件的创建
  • ELF三种主要的目标文件
  • 可执行程序的执行环境以及执行过程

进程的切换和系统的一般执行过程

  • 进程的切换
  • Linux系统的一般执行过程
  • 进程调度的时机
  • 进程切换代码switch_to分析

课程总结

Linux的内核代码我一直都很感兴趣,但是由于代码量非常的大,纷繁复杂,实在是不知道从哪儿入手。听了孟老师的课,让我对linux内核的工作执行有了深刻的理解,同时也为我打开了一扇读懂读透Linux内核代码的大门!由于老师讲的都是提纲挈领的Linux内核知识,要是真的想真正深入进入,还是需要静下心来,认真分析和理解!希望可以在理解老师所讲内容的基础上,能够真正理解内核源码,能够完全领悟内核源码的精妙之处,借鉴Linux内核源码,习得Linux内核所蕴含的为人之道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值