第1章 引例 1
1.1多进程演示 1
1.1.1演示内容 1
1.1.2程序说明 2
1.2优先级演示 5
1.2.1演示内容 5
1.2.2程序说明 6
1.3命令行演示 8
1.3.1演示内容 8
1.3.2程序说明 9
1.4哲学家用餐 12
1.4.1演示内容 13
1.4.2程序说明 14
第2章 基础概要 19
2.1基本概念 19
2.1.1应用程序编程接口 19
2.1.2原子操作 19
2.1.3互斥 20
2.1.4同步和异步 20
2.1.5运行环境 20
2.1.6测试并置位 20
2.1.7移植 20
2.2操作系统基础 21
2.2.1操作系统概述 21
2.2.2进程 22
2.2.3进程状态 22
2.2.4进程调度 23
2.2.5优先级反转 23
2.2.6临界段 24
2.2.7死锁 24
2.2.8内存管理 24
2.2.9设备管理 26
2.3源代码组织结构 27
2.3.1项目根目录 27
2.3.2 include目录 27
2.3.3 src目录 28
2.3.4 lib目录 28
2.3.5 obj目录 28
2.3.6 demo目录 28
2.3.7 doc目录 28
第3章 系统概况 30
3.1系统结构 30
3.1.1模块组成 30
3.1.2层次划分 31
3.1.3系统编译 32
3.2.系统启动 34
3.2.1启动流程 34
3.2.2 Lenix_ initial函数 35
3.2.3Lenix_ start函数 36
3.3系统使用 37
3.3.1编程框架 37
3.3.2编译和链接 38
第4章 临界段保护 40
4.1临界段保护框架 40
4.1.1适用范围 40
4.1.2框架组成 40
4.2框架使用 41
4.2.1一般用法 41
4.2.2嵌套用法 42
4.2.3实际案例 43
4.3实现分析 44
4.3.1方式0 44
4.3.2方式1 45
4.3.3方式2 46
第5章 硬件模型 48
5.1概述 48
5.1.1模型引入 48
5.1.2设计目标 48
5.1.3模型结构 49
5.2 CPU模型 49
5.2.1 PSW及其操作 49
5.2.2中断操作 50
5.2.3 I/O操作 51
5.2.4 TaS操作 54
5.2.5停机 56
5.3计算机模型 56
5.3.1中断控制器模型 57
5.3.2系统时钟 60
5.3.3计算机初始化 61
第6章 进程管理 63
6.1需求与设计 63
6.1.1需求分析 63
6.1.2系统设计 64
6.1.3调度算法 64
6.1.4单个进程的管理 67
6.1.5进程管理的数据表 69
6.2功能应用 71
6.2.1生命管理API 71
6.2.2调度管理API 72
6.2.3状态管理API 73
6.3实现解析 75
6.3.1数据类型 75
6.3.2全局变量 79
6.3.3函数说明 81
第7章 时间管理 114
7.1需求与设计 114
7.1.1硬件基础 114
7.1.2软件支持 114
7.2基础功能 115
7.2.1功能应用 115
7.2.2实现解析 117
7.3定时器 122
7.3.1需求和设计 122
7.3.2功能应用 123
7.3.3实现说明 126
第8章 内存管理 133
8.1概述 133
8.1.1管理方案 133
8.1.2使用规范 134
8.2定长内存管理 134
8.2.1设计 134
8.2.2功能应用 136
8.2.3实现解析 138
8.3堆内存管理 143
8.3.1设计 144
8.3.2功能应用 145
8.3.3实现解析 147
第9章 进程间通信 154
9.1概述 154
9.1.1 IPC的核心 154
9.1.2 IPC的应用 155
9.2自旋锁 157
9.2.1简述 157
9.2.2功能应用 158
9.2.3实现说明 159
9.3普通锁 160
9.3.1简述 160
9.3.2功能应用 161
9.3.3实现说明 162
9.4互斥 165
9.4.1简述 165
9.4.2功能应用 166
9.4.3实现说明 171
9.5信号量对象 177
9.5.1基本原理 177
9.5.2 API简介 177
9.5.3实现说明 178
9.6消息 186
9.6.1设计 186
9.6.2功能应用 187
9.6.3实现说明 194
第10章 设备管理 210
10.1需求与设计 210
10.1.1基本需求 210
10.1.2存储结构设计 212
10.1.3驱动接口设计 213
10.1.4管理框架设计 213
10.1.5驱动程序框架 214
10.2功能应用 217
10.2.1 API简介 217
10.2.2应用举例 219
10.3实现解析 225
10.3.1数据类型 225
10.3.2全局变量 228
10.3.3函数说明 229
第11章 人机交互 246
11.1概述 246
11.1.1交互的形式 246
11.1.2交互的实质 247
11.1.3系统组成 247
11.1.4 Lenix现状 247
11.2终端对象 248
11.2.1需求与设计 248
11.2.2功能应用 250
11.2.3实现说明 251
11.3命令解释进程 262
11.3.1需求与设计 263
11.3.2功能应用 264
11.3.3实现说明 264
第12章 移植 273
12.1移植的内容 273
12.1.1移植硬件模型 273
12.1.2移植进程运行环境初始化 273
12.1.3移植进程切换 273
12.1.4移植中断处理 274
12.1.5其他 274
12.2硬件模型移植 274
12.2.1移植CPU模型 274
12.2.2移植计算机模型 277
12.3进程运行环境初始化移植 279
12.3.1 Seg_get_cs 279
12.3.2 Context initial 280
12.4进程切换移植 281
12.4.1 PROC SWITCH TO 281
12.4.2 Proc switch to 282
12.5PC硬件中断 283
12.5.1Ivt set 283
12.5.2时钟中断处理 284
12.5.3键盘中断处理 285
附录A Borland C/C++ 3.1使用简介 288
A.1引子 288
A.2编译器 290
A.2.1语法格式 290
A.2.2编译选项及用法 291
A.2.3多文件编译 309
A.3链接器 313
A.3.1语法 313
A.3.2链接选项及用法 314
A.4库文件制作 315
A.4.1语法 315
A.4.2命令及用法 315
附录B Makefile编写基础 318
B.1引入 318
B.2原理与结构 319
B.3编写基础 320
B.3.1 make的用法 320
B.3.2脚本语法 321
B.3.3执行流程 323
B.3.4变化的例子 325
B.3.5注释 326
B.3.6清空 327
B.4变量 328
B.4.1定义 328
B.4.2引用 328
B.4.3基本用法 329
B.5自动化 330
B.5.1批量编译 331
B.5.2自动化变量 331
B.6结束 332
附录C PC基本硬件编程 333
C.1引言 333
C.2视频编程 333
C.2.1视频子系统简介 334
C.2.2字符模式编程 335
C.2.3基本功能实现 337
C.3中断控制器编程 339
C.3.1 8259A简介 339
C.3.2硬件配置 340
C.3.3 8259A初始化 340
C.4时钟编程 344
C 4.1硬件配置 344
C.4.2 8254简介 344
C.4.3编程简介 344
C.5键盘编程 346
C.5.1硬件配置 346
C.5.2按键过程 347
C.5.3获得键盘输入 347
C.5.4控制LED灯 349
C.5.5控制A20地址线 349
C.5.6控制硬件系统重启 349
参考文献 350