《Linux操作系统内核实习》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(美)Gary Nutt著
  • 出 版 社:
  • 出版年份:2002
  • ISBN:
  • 页数:0 页
图书介绍:

第一部分 Linux概况 1

1 Linux的演变 1

2 通用内核职责 4

2.1 资源抽象 4

2.2 共享资源 5

2.2.1 管理对资源的竞争 5

2.2.2 资源的独占使用 6

2.2.3 有控制的共享 6

2.3 操作系统的功能划分 7

3 内核的组织结构 8

3.1 中断 8

3.2 使用内核服务 10

3.3 串行执行 12

3.4 守护进程 13

3.5 引导过程 13

3.5.1 引导扇区 13

3.5.2 启动内核 14

3.6 登录到机器 15

3.7 机器中的控制流 16

4 进程与资源管理 17

4.1 运行进程管理程序 18

4.1.1 系统调用 18

4.1.2 中断 19

4.2 创建新任务 19

4.3 调度程序 20

4.4 进程间通信与同步机制 20

4.5 保护机制 21

5 存储管理 22

5.1 管理虚拟地址空间 22

5.2 辅助存储 23

5.3 缺页处理 23

5.4 地址变换 24

6 设备管理 26

6.1 设备驱动程序 27

6.2 处理中断 28

7 文件管理 29

7.1 装载文件系统 30

7.2 打开文件 31

7.3 读写文件 32

7.4 Ext2文件系统 33

8 了解Linux的更多信息 36

第二部分 练习 38

练习一 观察Linux行为 38

1.1 介绍 38

1.2 问题陈述 40

1.2.1 部分A 40

1.2.2 部分B 41

1.2.3 部分C 41

1.2.4 部分D 41

1.3 解决问题 42

1.3.1 /proc文件系统 42

1.3.2 使用argc和argv 42

1.3.3 组织方案 44

1.3.4 将工作保存在共享实验室 45

练习二 Shell编程 46

2.1 介绍 46

2.1.1 基本UNIX风格的shell操作 47

2.1.2 将进程放在后台 49

2.1.3 I/O重定向 49

2.1.4 shell管道 50

2.1.5 读取多个输入流 52

2.2 问题陈述 53

2.2.1 部分A 53

2.2.2 部分B 53

2.2.3 部分C 53

2.3 解决问题 54

2.3.1 组织方案 54

2.3.2 部分A 54

2.3.3 部分B和C 56

练习三 内核定时器 57

3.1 介绍 57

3.1.1 内核如何维护时间 57

3.1.2 每进程定时器 58

3.2 问题陈述 60

3.2.1 部分A 60

3.2.2 部分B 60

3.2.3 部分C 60

3.3 解决问题 61

3.3.1 Linux源代码组织结构 61

3.3.2 信号 62

3.3.3 组织方案 63

练习四 内核模块 66

4.1 介绍 66

4.1.1 模块组织结构 66

4.1.2 模块的装载与卸载 69

4.2 问题陈述 70

4.3 解决问题 70

4.3.1 read()过程 70

4.3.2 文件结束(EOF)条件 71

4.3.3 编译模块 71

4.3.4 装载和卸载模块 71

4.3.5 时钟精度问题 71

4.3.6 更多帮助 71

练习五 系统调用 72

5.1 介绍 72

5.1.1 系统调用链 72

5.1.2 定义系统调用编号 73

5.1.3 生成系统调用stub 74

5.1.4 内核函数组织结构 75

5.1.5 引用用户空间内存地址 76

5.2 问题陈述 76

5.2.1 部分A 76

5.2.2 部分B 76

5.3 解决问题 77

5.3.1 内核printk()函数 77

5.3.2 组织方案 77

5.3.3 重建内核 78

5.3.4 留下一个干净的环境 79

练习六 共享内存 80

6.1 介绍 80

6.1.1 共享内存API 80

6.1.2 实现 83

6.2 问题陈述 88

6.3 解决问题 88

练习七 虚拟存储 90

7.1 介绍 90

7.1.1 虚拟地址空间 91

7.1.2 虚拟存储区 93

7.1.3 地址变换 94

7.1.4 缺页处理程序 94

7.1.5 主存分配 97

7.2 问题陈述 97

7.2.1 部分A 97

7.2.2 部分B 97

7.3 解决问题 97

练习八 同步机制 98

8.1 介绍 98

8.1.1 阻塞任务 98

8.1.2 等待队列 99

8.1.3 使用等待队列 100

8.2 问题陈述 102

8.2.1 部分A 102

8.2.2 部分B 103

8.3 解决问题 103

练习九 调度程序 105

9.1 介绍 105

9.1.1 进程管理 105

9.1.2 进程状态 107

9.1.3 调度程序实现 108

9.1.4 公平共享调度 111

9.2 问题陈述 112

9.2.1 部分A 112

9.2.2 部分B 112

9.3 解决问题 112

9.3.1 设计解决方案 112

9.3.2 比较调度程序的性能 112

练习十 设备驱动程序 114

10.1 介绍 114

10.1.1 驱动程序组织结构 115

10.1.2 可装载内核模块驱动程序 117

10.1.3 示例:磁盘驱动程序 118

10.2 问题陈述 120

10.2.1 部分A 120

10.2.2 部分B 120

10.3 解决问题 120

练习十一 文件系统 122

11.1 介绍 122

11.1.1 虚拟文件系统 123

11.1.2 目录 127

11.1.3 示例:MS-DOS文件系统 128

11.2 问题陈述 129

11.2.1 部分A 129

11.2.2 部分B 130

11.2.3 部分C 130

11.3 解决问题 130

11.3.1 MS-DOS磁盘格式 130

11.3.2 MS-DOS FAT 132

11.3.3 使用软盘API 136

11.3.4 设计解决方案 137

练习十二 文件I/O 141

12.1 介绍 141

12.1.1 打开与关闭操作 142

12.1.2 读写操作 142

12.1.3 块分配 144

12.1.4 缓冲区管理 145

12.2 问题陈述 146

12.2.1 部分A 146

12.2.2 部分B 147

12.2.3 部分C 147

12.2.4 部分D 147

12.3 解决问题 147

12.3.1 open()函数 147

12.3.2 缓冲FAT 148

12.3.3 解决方案 148

进一步学习 151

附录A Linux Mandrake 7.0快速安装指南 152

附录B GNU通用公共许可证(版本2,1991.6) 156

参考文献 161