Linux操作系统分析(G430113373)

陈香兰

Autumn 2007


  • Instructor: 陈香兰
  • phone number: 0551-3606864-83(lab)
  • Course Time:
  • 助教:
  • phone number:
  • Project Time:
快速链接:
  • 课程简介
  • 参考书
  • 课程内容

考试

方式:闭卷。 时间:11月17日(周六)上午9点-11点。请同学们相互转告。

课程简介

本课程通过Linux操作系统源代码分析了解Linux操作系统与底层硬件、上层应用之间的结构关系、调用关系,熟悉Linux操作系统的配置、安装过程,深入分析Linux操作系统对底层硬件的封装方法、它是如何将体系结构相关部分与体系结构无关部分进行分离的,掌握Linux操作系统的内核关键技术,例如中断和异常处理、地址空间管理、内存分配技术、进程管理、进程切换关键代码、进程间通信机制、文件系统管理等内容,掌握Linux操作系统中设备管理方法以及设备驱动程序结构,掌握在Linux中的设备驱动层次。

参考书:

  1. Understanding Linux Kernel(深入理解Linux内核)
  2. Linux内和源代码情景分析,上下册,毛德操、胡希明,浙江大学出版社
  3. Unix Internals: The New Frontiers, Uresh Vahalia(中文版:Unix高级教程系统技术内幕,清华大学出版社)
  4. 微型计算机技术及应用——从16位到32位,第二版,戴梅萼、史嘉权编著,清华大学出版社

Project:

Project 1:基于I386的LinuxLinux2.4.18启动过程分析

  • 根据9.13日的上课内容和阅读作业,书写分析报告
  • 报告模板

Project 2:基于I386的Linux2.4.18的进程切换分析

  • 根据9.20日的上课内容和阅读作业,书写分析报告
  • 报告模板

Project 3:基于I386的Linux2.4.18的进程创建的分析和实践

  • 根据9.20日的上课内容和阅读作业,书写分析报告
  • 报告模板

Project 4:基于I386的Linux2.4.18的中断、异常和系统调用的分析和实践

  • 根据9.27和29日的上课内容和阅读作业,书写分析报告
  • 报告模板

Project 5:定时器

  • 参见10.9日的上课内容
  • 报告模板

Project 6:Linux中的VFS分析

  • 分析Linux的VFS相关的数据结构、文件系统的挂载操作,了解VFS中的各种操作(例如read)是如何与一个具体的文件系统相关的
  • 报告模板

Project 7:虚拟字符驱动

  • 参见10.25日的上课内容
  • 报告模板

课程内容:

周:日期 ppt等 readings & homeworks & project
第九周
星期四
11.1
内容提要
  1. GNU工具链简介
  2. 对换、project回顾、研究举例
第九周
星期二
10.30
内容提要
  1. Linux中的进程间通信
第八周
星期四
10.25
内容提要
  1. 管理I/O设备2
  2. Linux中的信号
第八周
星期二
10.23
内容提要
  1. 文件系统2
  2. 管理I/O设备1
第七周
星期四
10.18
内容提要
  1. 文件系统1
第七周
星期二
10.16
内容提要
  1. 进程地址空间
  2. 程序的执行
  3. fs/exec.c
  4. arch/i386/kernel/process.c
  5. mm/mmap.c
  6. arch/i386/mm/fault.c
第六周
星期四
10.11
内容提要
  1. 存储器管理
  2. arch/i386/mm/init.c
  3. init/main.c
  4. mm/bootmem.c
  5. mm/page_alloc.c
第六周
星期二
10.9
内容提要
  1. 时钟和定时测量
  2. kernel/timer.c
  3. timex.h
  4. asm-i386/timex.h
  5. arch/i386/kernel/time.c
第四周
星期六
9.29
内容提要
  1. 中断和异常2
  2. 系统调用
第四周
星期四
9.27
内容提要
  1. 中断和异常
  2. arch/i386/kernel/entry.S
  3. arch/i386/kernel/irq.c
  4. include/asm-i386/hw_irq.h
  5. arch/i386/kernel/traps.c
  6. arch/i386/kernel/i8259.c
第四周
星期二
9.25
内容提要
  1. Linux的进程2
第三周
星期四
9.20
内容提要
  1. 内存寻址2
  2. include/asm_i386/page.h
  3. include/asm_i386/pgtable.h
  4. include/asm_i386/pgtable_2level.h
  5. arch/i386/mm/init.c
  6. Linux的进程
  7. include/linux/sched.h
  8. kernel/sched.c
  9. kernel/fork.c
  10. kernel/timer.c
  11. include/asm-i386/processor.h
  12. include/asm-i386/current.h
  13. include/linux/wait.h
  14. include/asm-i386/system.h
  15. arch/i386/kernel/process.c
  16. arch/i386/kernel/entry.S
  17. arch/i386/kernel/init_task.c
  18. init/main.c
第三周
星期二
9.18
内容提要
  1. 内存寻址1
  2. arch/i386/boot/setup.S
  3. arch/i386/boot/compressed/head.S
  4. arch/i386/kernel/head.S
第二周
星期四
9.13
内容提要:
  1. 基于i386体系结构的Linux启动代码分析
  2. arch/i386/boot/bootsect.S
  3. arch/i386/boot/setup.S
  4. arch/i386/boot/compressed/head.S
  5. arch/i386/kernel/head.S
  6. arch/i386/vmlinux.lds
  7. documentation/i386/boot.txt
  8. Makefile
  9. arch/i386/Makefile
  10. arch/i386/boot/Makefile
  11. arch/i386/boot/compressed/Makefile
  12. asm/boot.h
  13. init/main.c
  • 阅读顶层目录下的readme
  • 阅读源代码中documentation/i386/boot.txt
  • 阅读顶层目录下的Makefile
  • 阅读i386的Makefile
  • 阅读i386/boot的Makefile
  • 阅读i386/boot/compressed的Makefile
  • 阅读i386的vmlinux.lds
  • 阅读Understanding the Linux Kernel(第二版)的附录1
  • 阅读i386/boot的bootsect.S
  • 阅读i386/boot的setup.S
  • 阅读i386/boot/compressed的head.S
  • 阅读i386/kernel的head.S
  • 找到init/main.c的start_kernel
  • 作业2
  • Project1
第二周
星期二
9.11
内容提要:
  1. 课程介绍等
  2. 绪论部分
  3. 堆栈使用举例:test.c的源文件
  4. 堆栈使用举例:test的反汇编文件
  5. 观察pt_regs
  6. 观察do_IRQ
  7. 观察do_IRQ的调用方法

Edited by xlanchen@ustc.edu.cn
Understanding Linux Kernel, Autumn 2007
Hefei, Anhui, China