当前位置:首页 > 工业技术
Linux 0.01内核分析与操作系统设计 创造你自己的操作系统
Linux 0.01内核分析与操作系统设计 创造你自己的操作系统

Linux 0.01内核分析与操作系统设计 创造你自己的操作系统PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:卢军编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2004
  • ISBN:7302094071
  • 页数:315 页
图书介绍:本书讲解Linux0.01内核源代码分析及Linux操作系统设计原理及方法与技巧。
《Linux 0.01内核分析与操作系统设计 创造你自己的操作系统》目录

目录 1

第1章 GNU和Linux简介 1

1.1 自由的天地:GNU和Linux 1

1.1.1 热爱和享受自由 2

1.1.2 神奇的Linux 3

1.2 在乐趣中获得成功 6

1.2.1 11岁开始编程序 6

1.2.2 一种操作系统的诞生 7

1.3 GNU的开发工具 8

1.3.1 编译器家族GCC 8

1.3.2 和操作系统开发有关的工具 9

1.4 本章小结 12

2.1 操作系统介绍 13

第2章 操作系统设计入门 13

2.1.1 早期的操作系统 14

2.1.2 DOS操作系统 14

2.1.3 Unix和Windows操作系统两大阵营 15

2.1.4 自由时代的宠儿Linux 16

2.2 操作系统的基本功能 16

2.3 编写操作系统的建议 17

2.3.1 编程语言选择 18

2.3.2 编译器和链接器 18

2.3.3 运行时函数库 19

2.3.4 使用汇编语言完成底层操作 21

2.3.5 关于C++的使用 21

2.4 x86虚拟机Bochs使用简介 21

2.4.1 Bochs简介 22

2.4.3 如何安装Bochs 23

2.4.2 下载Bochs软件 23

2.5 使用Bochs运行一个操作系统 26

2.5.1 制作一个软盘镜像文件 27

2.5.2 使用Bochs运行操作系统 30

2.6 操作系统设计的基本准则 31

2.6.1 简单就是优美 31

2.6.2 利用已有的基础 31

2.6.3 良好的设计 31

2.6.4 单内核操作系统和微内核操作系统 32

2.7 本章小结 32

第3章 操作系统设计基础 33

3.1 使用DJGPP 33

3.1.1 DJGPP和RHIDE的安装与使用 33

3.1.2 make的使用 34

3.1.4 nasm的使用 36

3.1.3 ld的使用 36

3.2 保护模式汇编语言 37

3.2.1 一个简单的实模式的汇编语言的例子 37

3.2.2 Linux汇编程序设计 38

3.3 实例:一些简单的例子程序 40

3.3.1 识别CPU类型 40

3.3.2 直接向视频缓冲区输出 46

3.3.3 检测显示器类型 49

3.3.4 移动光标 49

3.4 本章小结 49

第4章 Linux 0.01内核简介 51

4.1 Linux 0.01内核简介 51

4.1.1 Linux 0.01内核背景 52

4.1.2 Linux 0.01内核的技术特色 52

4.1.3 存储管理 53

4.1.4 文件系统 54

4.1.5 硬件平台移植和应用程序 54

4.2 Linux 0.01核心代码目录 54

4.3 核心源代码的目录分布 55

4.3.1 boot目录 55

4.3.2 fs目录 57

4.3.3 include目录 58

4.3.4 init目录 58

4.3.5 kernel目录 60

4.3.6 lib目录 60

4.3.7 mm目录 61

4.3.8 tools目录 61

4.4 Linux 0.01的main.c分析 61

4.5 编译和运行Linux 0.01系统 65

4.6 本章小结 66

第5章 操作系统引导 68

5.1 操作系统引导的基本知识 68

5.1.1 系统引导设备 68

5.1.2 启动过程简介 73

5.1.3 硬盘主引导扇区简介 75

5.1.4 软盘主引导扇区 78

5.1.5 Linux 0.01引导代码分析 81

5.2 引导扇区和引导代码实例分析 93

5.2.1 引导扇区的内容 93

5.2.2 使用debug建立自己的第一张启动盘 95

5.2.3 使用BIOS增强“操作系统”功能 97

5.3.1 引导代码基础 99

5.3.2 最简单的引导程序 99

5.3 使用nasm生成引导代码 99

5.3.3 如何设置段寄存器 100

5.3.4 在引导程序中装入程序(基于扇区) 101

5.4 本章小结 105

第6章 存储管理分析 106

6.1 操作系统内存管理策略简述 106

6.1.1 连续分配存储管理方式 106

6.1.2 虚存组织 107

6.1.3 非连续存储管理机制 109

6.2 物理存储管理 110

6.2.1 技术细节 111

6.2.2 物理存储管理器的组织 112

6.2.3 物理存储管理器的初始化 114

6.2.4 页面分配 114

6.2.6 映射 115

6.2.5 页面回收 115

6.2.7 内存映射 116

6.3 虚拟存储管理 117

6.3.1 技术细节 118

6.3.2 malloc()和free() 118

6.3.3 缺页处理 119

6.3.4 虚拟存储管理的页面分配 120

6.3.5 可执行程序 121

6.3.6 交换 121

6.3.7 处理流程 122

6.4 存储管理系统代码实例 123

6.4.1 实例1:探测计算机的物理内存容量 123

6.4.2 实例2:malloc()和free()的实现 138

6.5 Linux 0.01存储管理代码分析 138

6.5.2 page.s分析 139

6.5.1 memory.c分析 139

6.6 本章小结 140

第7章 进程管理和调度 141

7.1 进程介绍 141

7.1.1 进程的基本功能 141

7.1.2 进程的调度(schedule()函数) 145

7.1.3 线程 147

7.2 多任务实现基础 148

7.3 进程调度的性能分析 152

7.4 Linux进程调度源代码分析 153

7.5 实例:实现协作式多任务 154

7.6 本章小结 158

8.1 Linux设备管理概述 159

8.1.1 设备管理的基本要求 159

第8章 设备管理和调度 159

8.1.2 驱动程序(Drivers) 160

8.1.3 接口(Interfaces) 160

8.1.4 异步I/O(Asynchronous I/O) 162

8.2 Linux 0.01中断处理 164

8.2.1 中断处理的基本过程 164

8.2.2 traps.c文件分析 165

8.2.3 /kernel/asm.s文件分析 168

8.3 如何编写中断服务程序ISR 172

8.4 设备驱动程序实例 174

8.4.1 利用BIOS的探测系统设备 174

8.4.2 块设备驱动 177

8.4.3 键盘驱动 178

8.4.4 访问8042芯片各端口 180

8.4.5 发给8042的命令 182

8.4.6 发给8048的命令 185

8.4.7 8048到8042的数据 186

8.4.8 键盘源代码 187

8.4.9 探测软盘驱动器 187

8.5 Linux 0.01设备驱动程序源代码分析 189

8.5.1 终端控制代码:console.c 190

8.5.2 rs323驱动代码:serial.c和rs_io.s 203

8.6 本章小结 208

第9章 磁盘文件系统 209

9.1 硬盘驱动器结构简介 209

9.1.1 硬盘参数解释 209

9.1.2 基本INT13h调用简介 210

9.1.3 现代硬盘结构简介 210

9.1.4 扩展INT13h简介 210

9.2 Unix文件系统 210

9.2.1 磁盘的基础特性 211

9.2.2 现代磁盘的寻道延迟特性 212

9.2.3 Unix文件系统分析 213

9.3 Virtual File System(VFS)简介 214

9.3.1 VFS的体系结构 215

9.3.2 文件的表示 216

9.3.3 磁盘布局(Disk layout) 216

9.4 文件系统设计步骤 217

9.4.1 磁盘函数库(Disk library) 217

9.4.2 文件系统(File system) 218

9.4.3 容错性(Robustness) 220

9.5 自己编写的简单文件系统 220

9.6 Linux 0.01文件系统源代码分析 226

9.7 本章小结 227

10.1 shell的基本概念 228

第10章 shell编程技术和实例 228

10.2 实例:最简单的shell程序 230

10.3 管道和I/O重定向 235

10.3.1 使用dup()重定向I/O 235

10.3.2 使用pipe()和dup() 236

10.3.3 使用dup2()的例子 237

10.4 t-shell实现代码分析 239

10.4.1 shell总体结构(不支持管道) 240

10.4.2 shell总体结构(支持管道) 240

10.4.3 main()函数 241

10.4.4 initialization()函数 242

10.4.5 getline()函数 243

10.4.6 parse()函数 244

10.4.7 command()函数 245

10.4.8 execute()函数 247

10.4.9 forkexec()函数 249

10.4.10 check()函数 251

10.4.11 getname()函数 251

10.4.12 t-shell的运行效果 252

10.5 本章小结 253

第11章 系统调用和C语言库的实现 254

11.1 Linux系统调用概述 254

11.1.1 系统调用 254

11.1.2 系统调用的实现 255

11.1.3 系统调用到INT 0x80h中断请求的转换 261

11.2 Linux 0.01系统调用实现分析 262

11.2.1 system_call.s 262

11.2.2 sys.c 267

11.3.2 链接新的系统调用 268

11.3.1 实现系统调用的代码 268

11.3 试验:在Linux中添加新的系统调用 268

11.3.3 重新编译Linux 0.01的内核 269

11.4 C语言标准库函数的实现 269

11.4.1 字符串和内存操作函数 269

11.4.2 I/O函数库 272

11.4.3 工具函数:随机数 274

11.5 本章小结 274

第12章 Linux网络实现分析 276

12.1 TCP/IP概述 276

12.1.1 协定分层原则 277

12.1.2 网络访问层 279

12.1.3 网络层 279

12.1.4 传论层 282

12.2.1 环形缓冲区的实现原理 289

12.1.5 应用层 289

12.2 环形缓冲区 289

12.2.2 实例:环形缓冲区的实现 290

12.3 通信协议中的定时器编程 293

12.3.1 基本定时编程 293

12.3.2 高精度定时中断编程 295

12.4 简单停等协议 297

12.4.1 停等协议简介 297

12.4.2 有限状态机 299

12.4.3 差错控制 300

12.5 实例:串口数据通信 300

12.6 实例:停等协议的实现 303

12.7 本章小结 314

参考文献 315

相关图书
作者其它书籍
返回顶部