Linux内核分析

是不是学完操作系统原理后觉得纸上谈兵不过瘾?是不是面对浩若烟海的Linux内核源代码迷失在代码的海洋里不知所措…

中国科学技术大学

分享

Linux内核分析
  • 分类: 计算机
  • 平台: 中国大学MOOC
  • 语言: 中文

是不是学完操作系统原理后觉得纸上谈兵不过瘾?是不是面对浩若烟海的Linux内核源代码迷失在代码的海洋里不知所措?这门课可以带您用理论结合实践的方法一步一步抓住Linux内核最核心的部分代码,理解Linux操作系统运行的基本过程及涉及的核心机制。

课程概述

本课程从理解计算机硬件的核心工作机制(存储程序计算机和函数调用堆栈)和用户态程序如何通过系统调用陷入内核(中断异常)入手,通过上下两个方向双向夹击的策略,并利用实际可运行程序的反汇编代码从实践的角度理解操作系统内核,然后开始分析Linux内核源代码,从系统调用陷入内核,进程调度与进程切换,最后返回到用户态进程,通过仔细分析梳理这一过程,并推广到硬件中断、缺页异常等内核执行路径,最终能从本质上把握Linux内核的实质,乃至在头脑中演绎Linux系统的运行过程。

安装Linux系统做实验太麻烦?No,实验楼为我们提供了Web端可访问的虚拟机,立即去看看!

Latest Stable Kernel:linux-3.18.6

授课大纲

第一周:计算机是如何工作的?
存储程序计算机工作模型
32位X86汇编基础
反汇编一个简单的C程序

第二周:利用mykernel实验模拟计算机硬件平台
函数调用堆栈
如何打断当前正在执行的程序?——中断
保护现场和恢复现场
借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断
构造一个简单的操作系统内核

第三周:构造一个简单的Linux系统
Linux内核源代码导读
构造一个简单的Linux系统
跟踪调试Linux内核的启动过程

第四周:程序和进程
程序的编译、链接和可执行文件格式
进程的描述和程序的装载

第五周:利用汇编指令触发系统调用
使用库函数触发一个系统调用
C代码中嵌入汇编代码的写法
使用嵌入式汇编代码触发同一个系统调用
系统调用在内核代码中的处理过程

第六周:进程的执行和进程的切换
用户态堆栈和内核态堆栈
进程上下文的保存和恢复
进程切换的关键代码switch_to分析

第七周:Linux内核的实质和Linux系统的一般执行过程
内核执行路径的集合——中断(异常)处理过程的集合
Linux系统的一般执行过程

第八周:Linux系统架构和执行过程概览
Linux系统架构
Linux执行过程概览

参考资料

《深入理解Linux内核》第三版

程序员的自我修养:链接、装载与库 潘爱民 (作者), 俞甲子 (作者), 石凡 (作者)

部分自编讲义http://teamtrac.ustcsz.edu.cn/wiki/Linux2014

主要参考书:

http://codelab.shiyanlou.com/xref/linux-3.18.6/
http://lxr.free-electrons.com/source/?v=3.18

深入分析Linux内核源码

LinuxStart

Linux的进程详解

http://www.oldlinux.org/index_cn.html

GCC编译背后(第二部分:汇编和链接)

GLIBC, the GNU C Library

http://www.linuxfromscratch.org

http://savannah.nongnu.org/projects/sysvinit

UNIX/LINUX 平台可执行文件加载过程

ELF 文件格式分析

程序员的自我修养:链接、装载与库

The Linux® Networking Architecture: Design and Implementation of Network Protocols in the Linux Kernel

Linux and glibc API changes

证书要求

合格证书: 综合评定成绩 >= 60分

本课程内容被中国科学技术大学软件学院《Linux操作系统分析》课程选用,获得证书经过考核可以充抵部分分数;
本课程内容被北京电子科技学院在课程教学中选用;

预备知识

Linux基本操作技能、C语言、数据结构基础、操作系统原理

声明:MOOC中国收录之课程均源自下列机构,版权均归他们所有。本站仅作报道并尊重其著作权益,感谢他们对MOOC事业做出的贡献!(排名不分先后)
  • Coursera
  • edX
  • OpenLearning
  • FutureLearn
  • iversity
  • Udacity
  • NovoEd
  • Canvas
  • Open2Study
  • Google
  • ewant
  • FUN
  • IOC-Athlete-MOOC
  • World-Science-U
  • Codecademy
  • CourseSites
  • opencourseworld
  • ShareCourse
  • gacco
  • MiriadaX
  • JANUX
  • openhpi
  • Stanford-Open-Edx
  • 网易云课堂
  • 中国大学MOOC
  • 学堂在线
  • 顶你学堂
  • 华文慕课
  • 好大学在线CnMooc

Copyright © 2008-2015 MOOC.CN 慕课改变你,你改变世界