目录
第1章 EOS概述 1
1.1 EOS操作系统 1
1.2 集成实验环境 1
1.3 从源代码到可运行的操作系统 3
第2章 EOS编程基础 8
2.1 EOS内核源代码的结构 8
2.2 预定义的C数据类型 9
2.3 链表的使用 10
2.4 NASM汇编 13
2.5 C和汇编的相互调用 15
2.6 原语操作 18
2.7 错误处理 19
2.8 条件编译 22
2.9 C语言中变量的内存布局 24
2.10 使用工具阅读EOS源代码 30
第3章 EOS的启动过程 33
3.1 BIOS程序的执行过程 33
3.2 Boot程序的执行过程 35
3.3 Loader程序的执行过程 35
3.4 内核的初始化过程 35
第4章 对象管理 37
4.1 对象类型 37
4.2 对象 38
4.3 对象类型和对象组成的链表 39
4.4 对象的方法 40
4.5 对象的生命周期 41
4.6 对象的句柄 41
第5章 进程管理 43
5.1 进程的描述与控制 43
5.1.1 进程和程序 43
5.1.2 进程控制块 44
5.1.3 进程的创建 45
5.1.4 进程的终止 48
5.2 线程的描述与控制 49
5.2.1 线程控制块 49
5.2.2 线程的创建和终止 50
5.2.3 线程的状态和转换 51
5.2.4 线程的挂起状态 52
5.3 进程的同步与通信 55
5.3.1 基本概念 55
5.3.2 EOS内核提供的同步对象 55
5.4 线程调度 59
5.4.1 就绪队列和就绪位图 60
5.4.2 线程调度执行的时机 61
5.4.3 调度程序 63
5.4.4 时间片轮转调度 64
第6章 内存管理 68
6.1 i386处理器的工作模式和
内存管理方式 68
6.2 EOS内存管理概述 70
6.3 物理存储器的管理 71
6.4 进程地址空间 72
6.5 页目录和页表的逻辑地址 73
6.6 虚拟地址描述符链表 74
6.7 系统内存池 75
6.8 进程地址空间的内存分布 76
第7章 I/O管理 78
7.1 驱动程序对象与设备对象 78
7.2 文件对象及其操作 79
7.3 设备驱动的安装与工作原理 82
7.4 文件系统驱动 84
7.5 块设备的读写 84
7.5.1 磁盘调度算法 87
7.5.2 读写缓冲区 90
第8章 FAT12文件系统 91
8.1 文件系统是一个逻辑层 91
8.2 系统区 92
8.2.1 根目录 92
8.2.2 文件分配表 94
8.3 操作文件 98
8.3.1 打开文件与关闭文件 99
8.3.2 读文件 102
8.3.3 写文件 104
8.4 引导扇区 107
第9章 综合实验 110
实验1 实验环境的使用 110
实验2 操作系统的启动 122
实验3 进程的创建 131
实验4 线程的状态和转换 145
实验5 进程的同步 153
实验6 时间片轮转调度 16开2
实验7 物理存储器与进程逻辑地址空间的管理 16开9
实验8 分页存储器管理 181
实验9 页面置换算法与动态内存分配 190
实验10 串口设备驱动程序 199
实验11 磁盘调度算法 207
实验12 基本输入输出 218
实验13 扫描FAT12文件系统管理的软盘 225
实验14 读文件和写文件 230
附录 238
附录A Bochs虚拟机 238
附录B 字节顺序Little-endian与Big-endian 239
附录C EOS核心源代码协议 240
附录D 课程设计实验题目 241
参考文献 247