第1章 GeekOS教学操作系统概论
1.1 引言
1.2 GeekOS教学操作系统
1.2.1 GeekOS概述
1.2.2 GeekOS的存储器管理
1.2.3 GeekOS支持的设备
1.2.4 GeekOS的中断和线程
1.2.5 GeekOS系统引导和初始化
1.2.6 GeekOS系统源代码结构和设计项目
第2章 课程设计开发环境
2.1 Cygwin介绍
2.1.1 Cygwin简述
2.1.2 Cygwin安装与设置
2.1.3 Cygwin使用
2.2 安装Linux
2.2.1 安装虚拟机
2.2.2 在虚拟机上安装Linux
2.2.3 安装VMware Tools和实现文件共享
2.3 工具软件
2.3.1 GNU gcc编译器
2.3.2 NASM汇编器
2.3.3 GNU gdb调试器
2.4 Bochs PC 模拟器
2.4.1 Bochs安装和使用
2.4.2 在Bochs中运行GeekOS
第3章 make工具和makefile规则
3.1 makefile文件
3.1.1 makefile文件内容
3.1.2 makefile规则
3.1.3 makefile文件示例
3.1.4 make工作原理
3.1.5 makefile宏
3.1.6 make隐含规则
3.1.7 clean命令的应用
3.2 GeekOS的makefile文件
第4章 PC启动原理及GeekOS启动程序
4.1 PC启动原理
4.1.1 计算机系统启动
4.1.2 引导程序
4.1.3 内核程序导入
4.2 保护模式
4.2.1 保护模式
4.2.2 实模式和保护模式
4.2.3 进入保护模式
4.3 GeekOS启动程序分析
4.3.1 fd_boot.asm代码分析
4.3.2 setup.asm代码分析
4.3.3 lowlevel.asm代码分析
第5章 GeekOS进程管理
5.1 GeekOS进程状态及转换
5.2 GeekOS内核进程
5.2.1 内核进程控制块
5.2.2 GeekOS系统中最早的内核进程
5.2.3 内核进程对象
5.3 进程调度
5.3.1 内核进程切换
5.3.2 用户进程切换
5.3.3 GeekOS进程调度策略
5.4 内核进程主要操作函数
5.4.1 Init_Thread函数
5.4.2 Create_Thread函数
5.4.3 Destroy_Thread函数
5.4.4 Reap_Thread函数
5.4.5 Detach_Thread函数
5.4.6 Start_Kernel_Thread函数
5.4.7 Setup_Kernel_Thread 函数
5.4.8 Make_Runnable函数
5.4.9 Make_Runnable_Atomic函数
5.4.10 Get_Current函数
5.4.11 Get_Next_Runnable函数
5.4.12 Schedule函数
5.4.13 Join 函数
5.4.14 Lookup_Thread函数
5.4.15 Wait函数
5.4.16 Wake_Up函数
5.4.17 Wake_Up_One函数
5.4.18 Dump_All_Thread_List函数
第6章 GeekOS分页存储管理
6.1 存储器分页管理机制
6.2 线性地址到物理地址的转换
6.2.1 映射表结构
6.2.2 表项格式
6.2.3 线性地址到物理地址的转换
6.2.4 不存在的页表
6.2.5 页的共享
6.3 页级保护和虚拟存储器支持
6.3.1 页级保护
6.3.2 虚拟存储器技术
6.4 页故障
6.5 GeekOS分页系统数据结构
6.5.1 页目录表和页表项数据结构
6.5.2 物理页数据结构和页状态
6.6 GeekOS分页系统主要操作函数
6.6.1 Alloac_Page函数
6.6.2 Alloac_Pageable_Page函数
6.6.3 Find_Page_To_Page_Out函数
6.6.4 Free_Page函数
6.6.5 Page_Fault_Handler函数
6.6.6 Print_Fault_Info函数
第7章 GeekOS文件系统
7.1 GeekOS文件系统框架
7.2 虚拟文件系统层
7.3 高速缓冲区
7.4 PFAT文件系统
7.5 PFAT文件系统操作函数
7.5.1 Copy_Stat函数
7.5.2 PFAT_FStat函数
7.5.3 PFAT_Read函数
7.5.4 PFAT_Write函数
7.5.5 PFAT_Seek函数
7.5.6 PFAT_Read_Entry函数
7.5.7 PFAT_Lookup函数
7.5.8 Get_PFAT_File函数
7.5.9 PFAT_Open 函数
7.5.10 PFAT_Open_Directory函数
7.5.11 PFAT_Mount函数
7.5.12 Init_PFAT函数
7.5.13 Register_Filesystem函数
7.6 虚拟文件系统函数
7.6.1 Unpack_Path 函数
7.6.2 Lookup_Filesystem函数
7.6.3 Lookup_Mount_Point函数
7.6.4 Format函数
7.6.5 Mount函数
7.6.6 Open函数
7.6.7 Do_Open函数
7.6.8 Close函数
7.6.9 Read函数
7.6.10 Write函数
7.6.11 Seek函数
7.6.12 Create_Directory函数
7.6.13 Delete函数
第8章 GeekOS设计项目0
8.1 项目设计目的
8.2 项目设计要求
8.3 GeekOS键盘处理函数
8.4 项目设计提示
第9章 GeekOS设计项目1
9.1 项目设计目的
9.2 项目设计要求
9.3 ELF文件格式
9.3.1 可执行文件
9.3.2 ELF(可执行连接格式)
9.3.3 ELF Header
9.3.4 程序头部(Program Header)
9.3.5 节区头部表格(section header table)
9.4 用户可执行程序装入
9.5 项目设计提示
第10章 GeekOS设计项目2
10.1 项目设计目的
10.2 项目设计要求
10.3 项目设计提示
10.3.1 GeekOS的用户态进程
10.3.2 用户态进程空间
10.3.3 用户堆栈空间初始化
10.3.4 用户态进程创建
第11章 GeekOS设计项目3
11.1 项目设计目的
11.2 项目设计要求
11.3 项目设计提示
11.3.1 GeekOS进程调度处理过程
11.3.2 四级反馈队列调度策略实现
11.3.3 进程调度策略评价
11.3.4 GeekOS系统中的进程同步
第12章 GeekOS设计项目4
12.1 项目设计目的
12.2 项目设计要求
12.3 项目设计提示
12.3.1 为内核程序空间建立页表
12.3.2 为用户进程建立页表
12.3.3 请求分页技术实现
12.3.4 进程终止处理
12.3.5 系统完善处理
第13章 GeekOS设计项目5
13.1 项目设计目的
13.2 项目设计要求
13.3 项目设计提示
13.3.1 GOSFS磁盘格式
13.3.2 文件与目录
13.3.3 GOSFS文件系统数据结构和操作
参考文献