第1章 操作系统课程设计概要
1.1 课程设计目的
1.2 课程设计实验报告基本要求
1.3 课程设计实验报告样例
第2章 Linux操作系统环境
第3章 编译Linux内核
3.1 Linux内核基础
3.1.1 Linux源程序的目录分布
3.1.2 kernel目录
3.1.3 mm目录
3.1.4 fs目录
3.1.5 arch目录
3.1.6 include目录
3.1.7 net目录
3.2 实验编译Linux内核
3.2.1 下载内核源代码
3.2.2 部署内核源代码
3.2.3 配置内核
3.2.4 编译内核和模块
3.2.5 启动Linux内核
3.2.6 应用grub配置启动文件
第4章 系统调用
4.1 系统调用基础知识
4.1.1 一个使用系统调用的例子
4.1.2 系统调用是什么
4.1.3 为什么需要系统调用
4.2 Linux系统调用实现机制分析
4.2.1 entry.S汇编文件
4.2.2 traps.c(arch/i386/kelaael/traps.c)文件
4.2.3 系统调用中普通参数的传递及unistd.h
4.2.4 getuid()系统调用的实现
4.3 实验1添加一个简单系统调用
4.4 实验2添加一个更复杂的系统调用
第5章 进程管理
5.1 Linux进程
5.1.1 进程是什么
5.1.2 Linux进程控制块
5.2 Linux进程创建及分析
5.2.1 第一个进程
5.2.2 fork、clone、kernel-thread
5.2.3 exec装载与执行进程
5.2.4 Linux中的线程
5.3 实验1分析系统调用sys—exit函数
5.4 实验2用fork()创建子进程
5.5 实验3用clone()创建子进程
第6章 /proe文件系统
6.1 /proc文件系统的介绍
6.1.1 系统信息
6.1.2 进程信息
6.2 /proc文件系统的使用
6.2.1 创建与删除proc文件
6.2.2 读写proc文件
6.3 /proc文件系统分析
6.3.1 /proc文件数据结构定义
6.3.2 /proc下文件的创建和删除
6.3.3 /proc下超级块和索引节点的操作
6.3.4 /proc文件系统初始化
6.4 实验1分析/proc文件系统初始化
6.5 实验2/proc文件系统的一个简单应用
第7章 内核模块
7.1 什么是内核模块
7.2 内核模块实现机制
7.2.1 内核模块和应用程序的比较
7.2.2 内核符号表
7.2.3 模块依赖
7.2.4 内核代码分析
7.3 如何使用内核模块
7.3.1 模块的加载
7.3.2 模块的卸载
7.3.3 模块实用程序modutils
7.4 实验1编写一个简单的内核模块
7.5 实验2多文件内核模块的实现
第8章 虚拟内存管理
8.1 Linux虚拟内存管理
8.1.1 虚拟内存的抽象模型
8.1.2 Linux的分页管理
8.1.3 虚存段(vma)的组织和管理
8.1.4 页面分配与回收
8.2 实验1统计系统缺页次数
8.3 实验2统计一段时间内系统缺页次数
第9章 时钟与定时器
9.1 时钟和定时器介绍
9.1.1 系统时钟
9.1.2 定时器
9.1.3 bottom half
9.2 Linux系统时钟
9.2.1 系统时钟的正常运行
9.2.2 系统时钟的设置和调整
9.3 Linux系统定时器
9.3.1 定时器的实现机制
9.3.2 定时器具体实现
9.4 实验1一个简单的定时器的实现
9.5 实验2统计进程的时间
第10章 文件系统
10.1 Linux文件系统概念
10.2 VFs文件系统分析
10.2.1 什么是VFS文件系统
10.2.2 为什么需要VFS
10.2.3 VFS文件系统的结构
10.2.4 进程与文件的关系
10.2.5 文件系统的安装(mount.)
10.2.6 路径的定位和查找
10.3 ext2文件系统
10.3.1 ext2体系结构
10.3.2 ext2的关键数据结构
10.3.3 ext2的操作实现
10.3.4 ext2数据块分配机制
10.4 文件操作分析
10.4.1 open操作
10.4.2 read操作
10.4.3 ext2的read、write操作
10.5 实验1 分析close和write操作
10.6 实验2添加一个文件系统
附录 Linux操作系统环境
参考文献