• 工具
  • 源码阅读:understand
  • 源码文档自动生成工具:Doxygen
  • 编译环境:gcc
  • 运行环境:x86机器或QEMU
  • 调试工具:QEMU+(GDB or IDE)
  • IDE:Eclipse-CDT
  • 设计思路
  • 外设:IO管理/中断管理
  • 内存:虚存管理/页表/缺页处理/页替换算法
  • CPU:进程管理/调度器算法
  • 并发:信号量实现同步互斥应用
  • 存储:基于链表/FAT的文件系统
  • 实验内容(对应源码行数)
  • 1 OS启动、中断与设备管理:0200~1800
  • 2 物理内存管理:1800~2500
  • 3 虚拟内存管理:2500~3200
  • 4 内核线程管理:3200~3600
  • 5 用户进程管理:3600~4300
  • 6 处理器调度:4300~5100
  • 7 同步互斥:5100~6400
  • 8 文件系统:6400~9999

[OS] 操作系统课程(三)_内核线程

 [OS] 操作系统课程(三)_物理内存_02

  •  实验内容
  • Lab1:Bootloader/Interrupt/Device Driver
  • Bootloader启动操作系统
  • 操作系统启动前的状态和要做的准备工作
  • 运行操作系统的硬件支持
  • 操作系统如何加载到内存
  • 两类中断:外设中断,中断陷阱

[OS] 操作系统课程(三)_同步互斥_03[OS] 操作系统课程(三)_同步互斥_04

  • Lab2:物理内存管理
  • 理解x86分段/分页模式,了解操作系统如何管理连续空间的物理内存

 [OS] 操作系统课程(三)_内核线程_05[OS] 操作系统课程(三)_内核线程_06

  • Lab3:虚拟内存管理
  • 了解页表机制和换出(swap)机制
  • 故障中断,缺页故障处理,基于页的内存替换算法

 [OS] 操作系统课程(三)_物理内存_07[OS] 操作系统课程(三)_文件系统_08

  •  Lab4:内核线程管理
  • 如何利用CPU高效完成工作
  • 创建相对用户进程更简单的内核态线程
  • 对内核线程进行动态管理

 [OS] 操作系统课程(三)_内核线程_09[OS] 操作系统课程(三)_进程管理_10

  •  Lab5:用户进程管理
  • 用户态进程创建、执行、切换和结束的动态管理过程
  • 用户态通过系统调用得到内核态的内核服务的过程

 [OS] 操作系统课程(三)_文件系统_11[OS] 操作系统课程(三)_内核线程_12

  •  Lab6:进程调度
  • 理解操作系统调度过程和调度算法

[OS] 操作系统课程(三)_同步互斥_13 [OS] 操作系统课程(三)_物理内存_14

  • Lab7: 同步互斥
  • 进程间如何进行信息交换和共享
  • 同步互斥的具体实现及对系统性能的影响
  • 死锁产生的原因,如何避免
  • 哲学家吃饭问题

 [OS] 操作系统课程(三)_物理内存_15 [OS] 操作系统课程(三)_文件系统_16

  •  Lab8:文件系统
  • 文件系统的具体实现,与进程管理的关系
  • 缓存对操作系统IO访问的性能改进
  • 虚拟文件系统(VFS)
  • buffer cache和disk driver间的关系

 [OS] 操作系统课程(三)_文件系统_17 [OS] 操作系统课程(三)_物理内存_18