分享
 
 
 

深入分析Linux内核源代码

  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  參考價格: 点此进入淘宝搜索页搜索
  分類: 图书,计算机/网络,操作系统/系统开发,LINUX ,

作者: 陈莉君编著

出 版 社: 人民邮电出版社

出版时间: 2002-8-1字数: 831千版次: 1页数: 531印刷时间: 2002/08/01开本:印次:纸张: 胶版纸I S B N : 9787115105257包装: 平装内容简介

自由软件Linux 操作系统源代码的开放,为我们掌握操作系统核心技术提供了良好的条件。本书共分13章,对Linux 内核2.4版的源代码进行了较全面的分析,既包括对中断机制、进程调度、内存管理、进程间通信、虚拟文件系统、设备驱动程序及网络子系统的分析,也包括对Linux 整体结构的把握、Linux的启动过程的分析及Linux独具特色的模块机制的分析与应用等。其中重点剖析了Linux内核中最基础的部分:进程管理、内存管理及文件管理。

本书对于那些准备进入Linux 操作系统内部,阅读Linux 内核源代码以及在内核级进行程序开发的读者具有非常高的参考价值。同时,操作系统实现者、系统程序员、Linux应用开发人员、嵌入式系统开发人员、系统管理员、在校的大学生和研究生及对Linux感兴趣的用户均可在阅读本书中受益。

目录

第一章 走进Linux1

1.1 GNU与Linux的成长1

1.2 Linux的开发模式和运作机制2

1.3 走进Linux内核4

1.3.1 Linux内核的特征4

1.3.2 Linux内核版本的变化5

1.4 分析Linux内核的意义7

1.4.1 开发适合自己的操作系统8

1.4.2 开发高水平软件9

1.4.3 有助于计算机科学的教学和科研9

1.5 Linux内核结构9

1.5.1 Linux内核在整个操作系统中的位置10

1.5.2 Linux内核的作用11

1.5.3 Linux内核的抽象结构11

1.6 Linux内核源代码12

1.6.1 多版本的内核源代码13

1.6.2 Linux内核源代码的结构13

1.6.3 从何处开始阅读源代码14

1.7 Linux内核源代码分析工具16

1.7.1 Linux超文本交叉代码检索工具16

1.7.2 Windows平台下的源代码阅读工具(Source Insight)17

第二章 Linux运行的硬件基础19

2.1 i386的寄存器19

2.1.1 通用寄存器19

2.1.2 段寄存器20

2.1.3 状态和控制寄存器20

2.1.4 系统地址寄存器23

2.1.5 调试寄存器和测试寄存器24

2.2 内存地址25

2.3 段机制和描述符26

2.3.1 段机制26

2.3.2 描述符的概念27

2.3.3 系统段描述符29

2.3.4 描述符表30

2.3.5 选择符与描述符表寄存器30

2.3.6 描述符投影寄存器32

2.3.7 Linux中的段32

2.4 分页机制34

2.4.1 分页机构36

2.4.2 页面高速缓存39

2.5 Linux中的分页机制40

2.5.1 与页相关的数据结构及宏的定义41

2.5.2 对页目录及页表的处理42

2.6 Linux中的汇编语言44

2.6.1 AT&T与Intel汇编语言的比较44

2.6.2 AT&T汇编语言的相关知识46

2.6.3 gcc嵌入式汇编49

2.6.4 Intel386汇编指令摘要52

第三章 中断机制55

3.1 中断基本知识55

3.1.1 中断向量55

3.1.2 外设可屏蔽中断56

3.1.3 异常及非屏蔽中断57

3.1.4 中断描述符表59

3.1.5 相关汇编指令60

3.2 中断描述符表的初始化61

3.2.1 外部中断向量的设置61

3.2.2 中断描述符表IDT的预初始化63

3.2.3 中断向量表的最终初始化65

3.3 异常处理68

3.3.1 在内核栈中保存寄存器的值68

3.3.2 中断请求队列的初始化70

3.3.3 中断请求队列的数据结构70

3.4 中断处理77

3.4.1 中断和异常处理的硬件处理。77

3.4.2 Linux对中断的处理78

3.4.3 与堆栈有关的常量、数据结构及宏79

3.4.4 中断处理程序的执行81

3.4.5 从中断返回85

3.5 中断的后半部分处理机制86

3.5.1 为什么把中断分为两部分来处理86

3.5.2 实现机制87

3.5.3 数据结构的定义89

3.5.4 软中断、bh及tasklet的初始化91

3.5.5 后半部分的执行92

3.5.6 把bh移植到tasklet96

第四章 进程描述97

4.1 进程和程序(Process and Program)97

4.2 Linux中的进程概述99

4.3 task_struct结构描述100

4.4 task_struct结构在内存中的存放107

4.4.1 进程内核栈107

4.4.2 当前进程(current宏)108

4.5 进程组织方式109

4.5.1 哈希表109

4.5.2 双向循环链表110

4.5.3 运行队列111

4.5.4 进程的运行队列链表111

4.5.5 等待队列112

4.6 内核线程115

4.7 进程的权能116

4.8 内核同步117

4.8.1 信号量118

4.8.2 原子操作118

4.8.3 自旋锁、读写自旋锁和大读者自旋锁119

第五章 进程调度与切换123

5.1 Linux时间系统123

5.1.1 时钟硬件123

5.1.2 时钟运作机制124

5.1.3 Linux时间基准125

5.1.4 Linux的时间系统126

5.2 时钟中断126

5.2.1 时钟中断的产生126

5.2.2 Linux实现时钟中断的全过程127

5.3 Linux的调度程序-Schedule( )131

5.3.1 基本原理132

5.3.2 Linux进程调度时机133

5.3.3 进程调度的依据135

5.3.4 进程可运行程度的衡量136

5.3.5 进程调度的实现137

5.4 进程切换139

5.4.1 硬件支持139

5.4.2 进程切换142

第六章 Linux内存管理147

6.1 Linux的内存管理概述147

6.1.1 Linux虚拟内存的实现结构148

6.1.2 内核空间和用户空间149

6.1.3 虚拟内存实现机制间的关系151

6.2 Linux 内存管理的初始化152

6.2.1 启用分页机制152

6.2.2 物理内存的探测157

6.2.3 物理内存的描述163

6.2.4 页面管理机制的初步建立166

6.2.5 页表的建立173

6.2.6 内存管理区177

6.3 内存的分配和回收185

6.3.1 伙伴算法186

6.3.2 物理页面的分配和释放187

6.3.3 Slab分配机制194

6.3.4 内核空间非连续内存区的管理201

6.4 地址映射机制204

6.4.1 描述虚拟空间的数据结构205

6.4.2 进程的虚拟空间209

6.4.3 内存映射212

6.5 请页机制218

6.5.1 页故障的产生218

6.5.2 页错误的定位219

6.5.3 进程地址空间中的缺页异常处理220

6.5.4 请求调页221

6.5.5 写时复制223

6.5.6 对本节的几点说明225

6.6 交换机制225

6.6.1 交换的基本原理225

6.6.2 页面交换守护进程kswapd229

6.6.3 交换空间的数据结构233

6.6.4 交换空间的应用234

6.7 缓存和刷新机制236

6.7.1 Linux使用的缓存236

6.7.2 缓冲区高速缓存237

6.7.3 翻译后援存储器(TLB)240

6.7.4 刷新机制242

6.8 进程的创建和执行245

6.8.1 进程的创建245

6.8.2 程序执行252

6.8.3 执行函数255

第七章 进程间通信263

7.1 管道263

7.1.1 Linux管道的实现机制264

7.1.2 管道的应用265

7.1.3 命名管道CFIFOC267

7.2 信号(signal)267

7.2.1 信号种类268

7.2.2 信号掩码270

7.2.3 系统调用271

7.2.4 典型系统调用的实现272

7.2.5 进程与信号的关系274

7.2.6 信号举例275

7.3 System V 的IPC机制276

7.3.1 信号量276

7.3.2 消息队列282

7.3.3 共享内存285

第八章 虚拟文件系统289

8.1 概述289

8.2 VFS中的数据结构292

8.2.1 超级块292

8.2.2 VFS的索引节点295

8.2.3 目录项对象297

8.2.4 与进程相关的文件结构298

8.2.5 主要数据结构间的关系302

8.2.6 有关操作的数据结构302

8.3 高速缓存308

8.3.1 块高速缓存308

8.3.2 索引节点高速缓存312

8.3.3 目录高速缓存315

8.4 文件系统的注册、安装与卸载316

8.4.1 文件系统的注册316

8.4.2 文件系统的安装319

8.4.3 文件系统的卸载326

8.5 限额机制326

8.6 具体文件系统举例328

8.6.1 管道文件系统pipefs329

8.6.2 磁盘文件系统BFS332

8.7 文件系统的系统调用333

8.7.1 open 系统调用333

8.7.2 read系统调用335

8.7.3 fcntl 系统调用336

8.8 Linux 2.4文件系统的移植问题337

第九章 Ext2文件系统343

9.1 基本概念343

9.2 Ext2的磁盘布局和数据结构345

9.2.1 Ext2的磁盘布局345

9.2.2 Ext2的超级块346

9.2.3 Ext2的索引节点349

9.2.4 组描述符352

9.2.5 位图353

9.2.6 索引节点表及实例分析353

9.2.7 Ext2的目录项及文件的定位358

9.3 文件的访问权限和安全361

9.4 链接文件363

9.5 分配策略366

9.5.1 数据块寻址367

9.5.2 文件的洞368

9.5.3 分配一个数据块369

第十章 模块机制373

10.1 概述373

10.1.1 什么是模块373

10.1.2 为什么要使用模块?374

10.1.3 Linux 内核模块的优缺点374

10.2 实现机制375

10.2.1 数据结构375

10.2.2 实现机制的分析379

10.3 模块的装入和卸载385

10.3.1 实现机制385

10.3.2 如何插入和卸载模块386

10.4 内核版本387

10.4.1 内核版本与模块版本的兼容性387

10.4.2 从版本2.0到2.2内核API的变化388

10.4.3 把内核2.2移植到内核2.4392

10.5 编写内核模块400

10.5.1 简单内核模块的编写401

10.5.2 内核模块的Makefiles文件401

10.5.3 内核模块的多个文件402

第十一章 设备驱动程序405

11.1 概述405

11.1.1 I/O软件405

11.1.2 设备驱动程序407

11.2 设备驱动基础409

11.2.1 I/O端口409

11.2.2 I/O接口及设备控制器410

11.2.3 设备文件411

11.2.4 VFS对设备文件的处理413

11.2.5 中断处理413

11.2.6 驱动DMA工作416

11.2.7 I/O空间的映射417

11.2.8 设备驱动程序框架419

11.3 块设备驱动程序420

11.3.1 块设备驱动程序的注册420

11.3.2 块设备基于缓冲区的数据交换422

11.3.3 块设备驱动程序的几个函数428

11.3.4 RAM 盘驱动程序的实现432

11.3.5 硬盘驱动程序的实现433

11.4 字符设备驱动程序437

11.4.1 简单字符设备驱动程序437

11.4.2 字符设备驱动程序的注册438

11.4.3 一个字符设备驱动程序的实例440

11.4.4 驱动程序的编译与装载445

第十二章 网络447

12.1 概述447

12.2 网络协议448

12.2.1 网络参考模型448

12.2.2 TCP/IP 协议工作原理及数据流449

12.2.3 Internet 协议449

12.2.4 TCP协议450

12.3 套接字(socket)452

12.3.1 套接字在网络中的地位和作用452

12.3.2 套接字接口的种类453

12.3.3 套接字的工作原理454

12.3.4 socket 的通信过程456

12.3.5 socket为用户提供的系统调用460

12.4 套接字缓冲区(sk_buff)461

12.4.1 套接字缓冲区的特点461

12.4.2 套接字缓冲区操作基本原理461

12.4.3 sk_buff数据结构的核心内容463

12.4.4 套接字缓冲区提供的函数465

12.4.5 套接字缓冲区的上层支持例程467

12.5 网络设备接口468

12.5.1 基本结构468

12.5.2 命名规则469

12.5.3 设备注册469

12.5.4 网络设备数据结构470

12.5.5 支持函数473

第十三章 Linux启动系统477

13.1 初始化流程477

13.1.1 系统加电或复位478

13.1.2 BIOS启动478

13.1.3 Boot Loader479

13.1.4 操作系统的初始化479

13.2 初始化的任务479

13.2.1 处理器对初始化的影响479

13.2.2 其他硬件设备对处理器的影响480

13.3 Linux的Boot Loader480

13.3.1 软盘的结构480

13.3.2 硬盘的结构481

13.3.3 Boot Loader481

13.3.4 LILO482

13.3.5 LILO的运行分析485

13.4 进入操作系统487

13.4.1 Setup.S487

13.4.2 Head.S488

13.5 main.c中的初始化491

13.6 建立init进程495

13.6.1 init进程的建立495

13.6.2 启动所需的Shell脚本文件497

附录A Linux内核API501

附录B 在线文档529

参考文献531

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
>>返回首頁<<
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有