图书介绍

Linux操作系统原理与应用PDF|Epub|txt|kindle电子书版本网盘下载

Linux操作系统原理与应用
  • 陈莉君,康华编著(西安邮电学院) 著
  • 出版社: 北京:清华大学出版社
  • ISBN:7302118345
  • 出版时间:2006
  • 标注页数:247页
  • 文件大小:17MB
  • 文件页数:265页
  • 主题词:Linux操作系统-高等学校-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Linux操作系统原理与应用PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

目录1

第1章 操作系统概述1

1.1 认识操作系统1

1.1.1 从使用者角度1

1.1.2 从程序开发者角度2

1.1.3 从操作系统在整个计算机系统中所处位置2

1.1.4 从操作系统设计者的角度3

1.2 操作系统的发展4

1.2.1 操作系统的演变4

1.2.2 硬件的发展轨迹5

1.2.3 软件的轨迹6

1.2.4 单内核与微内核操作系统7

1.3 开放源代码的Unix/Linux操作系统8

1.3.1 Unix的诞生和发展8

1.3.4 GNU和Linux9

1.3.3 操作系统标准POSIX9

1.3.2 Linux的诞生9

1.3.5 Linux的开发模式10

1.4 Linux内核10

1.4.1 Linux内核的位置10

1.4.2 Linux内核的作用11

1.4.3 Linux内核子系统11

1.5 Linux内核源代码13

1.5.1 多版本的内核源代码13

1.5.2 Linux内核源代码的结构13

1.5.3 Linux内核源代码分析工具14

习题115

第2章 内存寻址17

2.1 内存寻址简介17

2.1.1 Intel x86 CPU寻址方式的演变18

2.1.2 IA32寄存器简介19

2.1.3 物理地址、虚拟地址及线性地址21

2.2 分段机制22

2.2.1 地址转换及保护24

2.2.2 Linux中的段24

2.3 分页机制25

2.3.1 页与页表25

2.3.2 线性地址到物理地址的转换28

2.3.3 分页示例28

2.3.4 页面高速缓存(cache)29

2.3.5 Linux中的分页机制30

2.4 Linux中的汇编语言31

2.4.1 AT T与Intel汇编语言的比较31

2.4.2 AT T汇编语言的相关知识32

2.5 Linux系统地址映射示例33

习题235

3.1.1 程序和进程37

3.1 进程介绍37

第3章 进程37

3.1.2 进程的层次结构38

3.1.3 进程状态39

3.1.4 进程实例40

3.2 进程控制块41

3.2.1 进程状态42

3.2.2 进程标识符43

3.2.3 进程之间的亲属关系43

3.2.4 进程控制块的存放44

3.3 进程的组织方式45

3.3.1 进程链表45

3.3.2 散列表46

3.3.3 可运行队列47

3.3.4 等待队列47

3.4.1 基本原理48

3.4 进程调度48

3.4.2 时间片50

3.4.3 Linux进程调度时机50

3.4.4 进程调度的依据51

3.4.5 调度函数schedule()的实现52

3.5 进程的创建54

3.5.1 创建进程55

3.5.2 线程及其创建56

3.6 与进程相关的系统调用及其应用58

3.6.1 fork系统调用58

3.6.2 exec系统调用59

3.6.3 wait系统调用60

3.6.4 exit系统调用62

3.6.5 进程的一生63

3.7 与调度相关的系统调用及应用63

习题365

第4章 内存管理67

4.1 Linux的内存管理概述67

4.1.1 虚拟内存、内核空间和用户空间67

4.1.2 虚拟内存实现机制间的关系69

4.2 进程用户空间的管理70

4.2.1 进程用户空间的描述71

4.2.2 进程用户空间的创建74

4.2.3 虚存映射76

4.2.4 进程的虚存区示例76

4.2.5 与用户空间相关的系统调用78

4.3 请页机制79

4.3.1 缺页异常处理程序79

4.3.2 请求调页81

4.3.3 写时复制83

4.4 物理内存的分配与回收83

4.4.1 伙伴算法85

4.4.2 物理页面的分配86

4.4.3 物理页面的回收88

4.4.4 slab分配模式89

4.4.5 内核空间非连续内存区的分配93

4.5 交换机制95

4.5.1 交换的基本原理95

4.5.2 页面交换守护进程kswapd99

4.6 内存管理实例99

4.6.1 相关背景知识100

4.6.2 代码体系结构介绍100

4.6.3 实现步骤103

4.6.4 程序代码103

习题4108

5.1.1 中断向量110

5.1 中断的基本知识110

第5章 中断和异常110

5.1.2 外设可屏蔽中断111

5.1.3 异常及非屏蔽中断112

5.1.4 中断描述符表112

5.1.5 相关汇编指令113

5.2 中断描述符表的初始化114

5.2.1 IDT表项的设置114

5.2.2 对陷阱门和系统门的初始化115

5.2.3 中断门的设置116

5.3 中断处理116

5.3.1 中断和异常的硬件处理116

5.3.2 中断请求队列的建立117

5.3.3 中断处理程序的执行119

5.3.4 从中断返回121

5.4 中断的下半部处理机制121

5.4.2 小任务机制122

5.4.1 为什么把中断分为两部分来处理122

5.4.3 下半部124

5.4.4 任务队列125

5.5 中断应用——时钟中断125

5.5.1 时钟125

5.5.2 时钟运作机制126

5.5.3 Linux的时间系统127

5.5.4 时钟中断处理程序128

5.5.5 时钟中断的下半部处理129

5.5.6 定时器及其应用129

习题5132

第6章 系统调用133

6.1 系统调用与应用编程接口、系统命令、内核函数的关系133

6.1.1 系统调用与API133

6.1.3 系统调用与内核函数134

6.1.2 系统调用与系统命令134

6.2 系统调用处理程序及服务例程135

6.2.1 初始化系统调用136

6.2.2 system_call()函数136

6.2.3 参数传递137

6.2.4 跟踪系统调用的执行139

6.3 封装例程140

6.4 添加新系统调用141

6.5 实例——利用系统调用实现一个调用日志收集系统143

6.5.1 代码体系结构143

6.5.2 把代码集成到内核中146

6.5.3 实现步骤148

习题6148

第7章 内核中的同步149

7.1 临界区和竞争状态149

7.1.1 临界区举例149

7.1.2 共享队列和加锁150

7.1.3 确定保护对象151

7.1.4 死锁152

7.1.5 并发执行的原因153

7.2 内核同步方法153

7.2.1 原子操作153

7.2.2 自旋锁155

7.2.3 信号量156

7.3 并发控制实例157

7.3.1 内核任务及其并发关系158

7.3.2 实现机制158

7.3.3 关键代码解释162

7.3.4 实现步骤163

习题7164

8.1 Linux文件系统基础165

8.1.1 Linux文件结构165

第8章 文件系统165

8.1.2 Linux文件系统166

8.1.3 文件类型167

8.1.4 文件访问权限168

8.2 虚拟文件系统168

8.2.1 虚拟文件系统的引入168

8.2.2 VFS中的数据结构170

8.2.3 VFS超级块数据结构171

8.2.4 VFS的索引节点173

8.2.5 目录项对象174

8.2.6 与进程相关的文件结构176

8.2.7 主要的数据结构之间的关系179

8.3 文件系统的注册、安装与卸载180

8.3.1 文件系统的注册和注销180

8.3.2 文件系统的安装181

8.4.1 address_space对象183

8.4 页缓冲区183

8.3.3 文件系统的卸载183

8.4.2 address_space对象的操作函数表184

8.5 文件的打开与读写185

8.5.1 打开文件185

8.5.2 读写文件187

8.6 编写一个文件系统189

8.6.1 Linux文件系统的实现要素189

8.6.2 什么是romfs文件系统191

8.6.3 romfs文件系统的布局与文件结构191

8.6.4 具体实现的对象192

习题8195

第9章 设备驱动196

9.1 概述196

9.2 设备驱动程序基础198

9.2.1 I/O端口199

9.2.2 设备文件200

9.2.3 中断处理201

9.2.4 设备驱动程序框架203

9.3 字符设备驱动程序204

9.3.1 字符设备驱动程序的注册204

9.3.2 简单的字符设备驱动程序示例205

9.4 块设备驱动程序208

9.4.1 块设备驱动程序的注册209

9.4.2 块设备请求212

习题9215

附录A 内核中的链表216

A.1 链表数据结构简介216

A.2 内核链表数据结构的定义及初始化217

A.3 操作链表的接口218

A.4 遍历链表219

B.2 编写一个简单的模块221

B.1 什么是模块221

附录B 内核模块221

B.3 模块编程的基础知识222

B.4 模块的编译224

B.5 模块实用程序modutils226

附录C Linux内核编译228

C.1 内核简介228

C.2 为什么重新编译内核228

C.3 内核编译模式229

C.4 新版本内核的获取和更新229

C.5 内核编译230

C.6 修改并重启管理器232

附录D Linux编程基础(C语言环境)233

D.1 Linux编程常识233

D.1.1 相关标准(ANSIC、POSIX、SVID、XPG)233

D.1.2 函数库和系统调用234

D.1.3 在线文档(man、info、HOWTO)235

D.1.4 C语言编程风格237

D.2 Linux上的C/C++编译器和调试器238

D.2.1 运行gcc/egcs238

D.2.2 gcc/egcs的主要选项240

D.2.3 gdb简介240

D.2.4 gdb的常用命令241

D.2.5 gdb使用示例242

D.3 GNU make和makefile243

D.3.1 GNU make243

D.3.2 makefile的基本结构243

D.3.3 makefile的变量244

D.3.4 GNU make的主要预定义变量245

D.3.5 GNU make的隐含规则245

D.3.6 运行make246

参考文献247

热门推荐