当前位置:首页 > 工业技术
Linux内核完全剖析
Linux内核完全剖析

Linux内核完全剖析PDF电子书下载

工业技术

  • 电子书积分:23 积分如何计算积分?
  • 作 者:赵炯编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2006
  • ISBN:7111180321
  • 页数:882 页
图书介绍:本书介绍了PC机的硬件组成结构,编制内核使用的汇编语言。
《Linux内核完全剖析》目录

1.1.1 UNIX操作系统的诞生 1

1.1.2 MINIX操作系统 1

目录 1

序 1

第1章 概述 1

1.1 Linux的诞生和发展 1

1.1.4 POSIX标准 2

1.1.3 GNU计划 2

1.1.5 Linux操作系统的诞生 3

1.1.6 Linux操作系统版本的变迁 5

1.1.8 早期Linux系统开发的主要贡献者 7

1.1.7 Linux名称的由来 7

1.2 内容综述 8

2.1 微型计算机组成原理 13

第2章 微型计算机组成结构 13

2.2.1 I/O端口和寻址 15

2.2 I/O端口寻址和访问控制方式 15

2.3.1 主存储器 17

2.3 主存储器、BIOS和CMOS存储器 17

2.2.2 接口访问控制 17

2.3.2 基本输入/输出程序BIOS 18

2.4.1 中断控制器 19

2.4 控制器和控制卡 19

2.3.3 CMOS存储器 19

2.4.4 键盘控制器 21

2.4.3 定时/计数器 21

2.4.2 DMA控制器 21

2.4.5 串行控制卡 23

2.4.6 显示控制 24

2.4.7 软盘和硬盘控制器 26

3.1 as86汇编器 28

第3章 内核编程语言和环境 28

3.1.1 as86汇编语言语法 29

3.1.2 as86汇编语言程序 30

3.1.3 as86汇编语言程序的编译和链接 32

3.2 GNU as汇编 34

3.1.4 as86和ld86使用方法和选项 34

3.2.1 编译as汇编语言程序 35

3.2.2 as汇编语法 36

3.2.3 指令语句、操作数和寻址 38

3.2.4 区与重定位 40

3.2.5 符号 42

3.2.6 as汇编命令 43

3.3.1 C程序编译和链接 45

3.3 C语言程序 45

3.2.7 编写16位代码 45

3.2.8 as汇编器命令行选项 45

3.3.2 嵌入汇编 46

3.3.4 寄存器变量 50

3.3.3 圆括号中的组合语句 50

3.3.5 内联函数 51

3.4.1 C函数调用机制 53

3.4 C与汇编程序的相互调用 53

3.4.2 在汇编程序中调用C函数 58

3.4.3 在C程序中调用汇编函数 60

3.5.1 目标文件格式 62

3.5 Linux 0.11目标文件格式 62

3.5.2 Linux 0.11中的目标文件格式 65

3.5.3 链接程序输出 67

3.5.4 链接程序预定义变量 68

3.5.5 System.map文件 70

3.6 Make程序和Makefile文件 71

4.1.1 标志寄存器 74

4.1 80x86系统寄存器和系统指令 74

第4章 80x86保护模式及其编程 74

4.1.2 内存管理寄存器 75

4.1.3 控制寄存器 76

4.1.4 系统指令 79

4.2.2 地址变换 80

4.2.1 内存寻址 80

4.2 保护模式内存管理 80

4.2.3 保护 83

4.3.1 段的定义 84

4.3 分段机制 84

4.3.2 段描述符表 86

4.3.3 段选择符 88

4.3.4 段描述符 90

4.3.5 代码和数据段描述符类型 93

4.3.6 系统描述符类型 94

4.4 分页机制 95

4.4.1 页表结构 96

4.4.3 虚拟存储 98

4.4.2 页表项格式 98

4.5.1 段级保护 99

4.5 保护 99

4.5.2 访问数据段时的特权级检查 102

4.5.3 代码段之间转移控制时的特权级检查 103

4.5.4 页级保护 108

4.5.5 组合页级和段级保护 109

4.6.2 中断源和异常源 110

4.6.1 异常和中断向量 110

4.6 中断和异常处理 110

4.6.3 异常分类 111

4.6.6 异常和中断的优先级 112

4.6.5 开启和禁止中断 112

4.6.4 程序或任务的重新执行 112

4.6.7 中断描述符表 113

4.6.8 IDT描述符 114

4.6.9 异常与中断处理 115

4.6.10 中断处理任务 117

4.6.11 错误码 118

4.7.1 任务的结构和状态 119

4.7 任务管理 119

4.7.3 任务管理数据结构 120

4.7.2 任务的执行 120

4.7.4 任务切换 123

4.7.5 任务链 125

4.7.6 任务地址空间 126

4.8.1 进入保护模式时的初始化操作 127

4.8 保护模式编程初始化 127

4.8.2 模式切换 129

4.9 一个简单的多任务内核实例 130

4.9.1 多任务程序结构和工作原理 131

4.9.2 引导启动程序boot.s 134

4.9.3 多任务内核程序head.s 135

5.1 Linux内核模式 141

第5章 Linux内核体系结构 141

5.2 Linux内核系统体系结构 142

5.3.1 物理内存 143

5.3 Linux内核对内存的管理和使用 143

5.3.2 内存地址空间概念 144

5.3.3 内存分段机制 145

5.3.4 内存分页管理 147

5.3.6 虚拟地址、线性地址和物理地址之间的关系 150

5.3.5 CPU多任务和保护方式 150

5.3.7 用户申请内存的动态分配 154

5.4.1 中断操作原理 155

5.4 Linux系统的中断机制 155

5.4.2 80x86微机的中断子系统 156

5.4.4 Linux内核的中断处理 157

5.4.3 中断向量表 157

5.5.1 系统调用接口 159

5.5 Linux的系统调用 159

5.4.5 标志寄存器的中断标志 159

5.5.2 系统调用处理过程 160

5.6.1 系统时间 161

5.6 系统时间和定时 161

5.5.3 Linux系统调用的参数传递方式 161

5.7 Linux进程控制 162

5.6.2 系统定时 162

5.7.1 任务数据结构 163

5.7.2 进程运行状态 167

5.7.3 进程初始化 168

5.7.4 创建新进程 169

5.7.5 进程调度 170

5.7.6 终止进程 171

5.8.1 初始化阶段 172

5.8 Linux系统中堆栈的使用方法 172

5.8.2 任务的堆栈 173

5.8.3 任务内核态堆栈与用户态堆栈之间的切换 175

5.10 Linux内核源代码的目录结构 176

5.9 Linux 0.11采用的文件系统 176

5.10.3 文件系统目录fs 177

5.10.2 引导启动程序目录boot 177

5.10.1 内核主目录linux 177

5.10.4 头文件主目录incllude 179

5.10.6 内核程序主目录kernel 180

5.10.5 内核初始化程序目录init 180

5.11 内核系统与应用程序的关系 183

5.10.9 编译内核工具程序目录tools 183

5.10.7 内核库函数目录lib 183

5.10.8 内存管理程序目录mm 183

5.12.1 功能描述 184

5.12 linux/Makefile文件 184

5.12.2 代码注释 185

6.1 总体功能 190

第6章 引导启动程序 190

6.2.2 代码注释 192

6.2.1 功能描述 192

6.2 botsect.s程序 192

6.2.3 其他信息 200

6.3.1 功能描述 201

6.3 setup.s程序 201

6.3.2 代码注释 203

6.3.3 其他信息 210

6.4.1 功能描述 219

6.4 head.s程序 219

6.4.2 代码注释 221

6.4.3 其他信息 228

7.1.1 功能描述 232

7.1 main.c程序 232

第7章 初始化程序 232

7.1.2 代码注释 235

7.1.3 其他信息 242

7.2 环境初始化工作 244

8.1 总体功能 246

第8章 内核代码 246

8.1.1 中断处理程序 247

8.1.3 其他通用类程序 248

8.1.2 系统调用处理相关程序 248

8.2.2 文件注释 249

8.2.1 功能简介 249

8.2 Makefile文件 249

8.3.1 功能描述 251

8.3 asm.s程序 251

8.3.2 代码注释 252

8.3.3 Intel保留中断向量的定义 256

8.4 traps.c程序 257

8.4.1 功能描述 257

8.4.2 代码注释 257

8.5 system_call.s程序 262

8.5.1 功能描述 262

8.5.2 代码注释 264

8.5.3 其他信息 272

8.6 mktime.c程序 274

8.6.1 功能描述 274

8.6.2 代码注释 274

8.6.3 闰年的计算方法 276

8.7 sched.c程序 276

8.7.1 功能描述 276

8.7.2 代码注释 278

8.7.3 其他信息 290

8.8 signal.c程序 295

8.8.1 功能描述 295

8.8.2 代码注释 301

8.8.3 进程信号说明 305

8.9 exit.c程序 306

8.9.1 功能描述 306

8.9.2 代码注释 307

8.10 fork.c程序 312

8.10.1 功能描述 312

8.10.2 代码注释 314

8.10.3 任务状态段(TSS)信息 318

8.11 sys.c程序 320

8.11.1 功能描述 320

8.11.2 代码注释 321

8.12 vsprintf.c程序 326

8.12.1 功能描述 326

8.12.2 代码注释 327

8.12.3 vsprintf()的格式字符串 332

8.13 printk.c程序 334

8.13.1 功能描述 334

8.12.4 与当前版本的区别 334

8.13.2 代码注释 335

8.14.1 功能描述 336

8.14.2 代码注释 336

8.14 panic.c程序 336

第9章 块设备驱动程序 338

9.1 总体功能 339

9.1.1 块设备请求项和请求队列 339

9.1.2 块设备操作方式 341

9.2.1 功能描述 342

9.2.2 代码注释 342

9.2 Makefile文件 342

9.3 blk.h文件 344

9.3.1 功能描述 344

9.3.2 代码注释 345

9.4 hd.c程序 348

9.4.1 功能描述 348

9.4.2 代码注释 351

9.4.3 其他信息 362

9.5.1 功能描述 371

9.5.2 代码注释 371

9.5 ll_rw_blk.c程序 371

9.6 ramdisk.c程序 376

9.6.1 功能描述 376

9.6.2 代码注释 378

9.7.1 功能描述 382

9.7.2 代码注释 382

9.7 floppy.c程序 382

9.7.3 其他信息 396

10.1 总体功能 409

10.1.1 终端驱动程序基本原理 409

第10章 字符设备驱动程序 409

10.1.2 Linux支持的终端设备类型 410

10.1.3 终端基本数据结构 412

10.1.4 规范模式和非规范模式 415

10.1.5 控制台终端和串行终端设备 416

10.2.1 功能描述 419

10.2 Makefile文件 419

10.2.2 代码注释 419

10.1.6 终端驱动程序接口 419

10.3.1 功能描述 422

10.3.2 代码注释 422

10.3 keyboard.S程序 422

10.3.3 其他信息 436

10.4.1 功能描述 440

10.4.2 代码注释 440

10.4 console.c程序 440

10.4.3 其他信息 459

10.5.1 功能描述 466

10.5.2 代码注释 466

10.5 serial.c程序 466

10.5.3 异步串行通信控制器UART 468

10.6.1 功能描述 474

10.6.2 代码注释 474

10.6 rs_io.s程序 474

10.7 tty_io.c程序 478

10.7.1 功能描述 478

10.7.2 代码注释 479

10.8 tty_ioctl.c程序 489

10.8.1 功能描述 489

10.8.2 代码注释 490

10.8.3 波特率与波特率因子 495

11.1.1 功能描述 497

11.1 Makefile文件 497

11.1.2 代码注释 497

第11章 数学协处理器 497

11.2.1 功能描述 499

11.2.2 代码注释 499

11.2 math_emulate.c程序 499

第12章 文件系统 501

12.1 总体功能 502

12.1.1 MINIX文件系统 502

12.1.2 文件类型、属性和目录项 506

12.1.3 高速缓冲区 510

12.1.4 文体系统底层函数 511

12.1.5 文件中数据的访问操作 511

12.1.6 文件和目录管理系统调用 513

12.1.7 360 KB软盘中文件系统实例分析 513

12.2.2 代码注释 517

12.2.1 功能描述 517

12.2 Makefile文件 517

12.3 buffer.c程序 519

12.3.1 功能描述 520

12.3.2 代码注释 525

12.4.1 功能描述 536

12.4 bitmap.c程序 536

12.4.2 代码注释 537

12.5.1 功能描述 542

12.5 truncte.c程序 542

12.5.2 代码注释 543

12.6.1 功能描述 544

12.6 inode.c程序 544

12.6.2 代码注释 546

12.7.1 功能描述 556

12.7 super.c程序 556

12.7.2 代码注释 557

12.8.1 功能描述 565

12.8 namei.c程序 565

12.8.2 代码注释 566

12.9.2 代码注释 588

12.9.1 功能描述 588

12.9 file_table.c程序 588

12.10.1 功能描述 589

12.10 block_dev.c程序 589

12.10.2 代码注释 590

12.11.2 代码注释 592

12.11.1 功能描述 592

12.11 file_dev.c程序 592

12.12.1 功能描述 595

12.12 pipe.c程序 595

12.12.2 代码注释 596

12.13.2 代码注释 599

12.13.1 功能描述 599

12.13 char_dev.c程序 599

12.14.2 代码注释 602

12.14.1 功能描述 602

12.14 read_write.c程序 602

12.14.3 用户程序读写操作过程 605

12.15.2 代码注释 608

12.15.1 功能描述 608

12.15 open.c程序 608

12.16.1 功能描述 614

12.16 exec.c程序 614

12.16.2 代码注释 617

12.17.2 代码注释 629

12.17.1 功能描述 629

12.17 stat.c程序 629

12.18.1 功能描述 631

12.18 fcntl.c程序 631

12.18.2 代码注释 632

12.19.2 代码注释 634

12.19.1 功能描述 634

12.19 ioctl.c程序 634

13.1.1 内存分页管理机制 636

13.1 总体功能 636

第13章 内存管理 636

13.1.2 Linux中物理内存的管理和分配 639

13.1.5 写时复制(copy on write)机制 640

13.1.4 页面出错异常处理 640

13.1.3 Linux内核对线性地址空间的使用分配 640

13.1.6 需求加载(Load on demand)机制 641

13.2.2 代码注释 642

13.2.1 功能描述 642

13.2 Makefile文件 642

13.3.1 功能描述 643

13.3 memory.c程序 643

13.3.2 代码注释 645

13.4.1 功能描述 661

13.4 page.s程序 661

13.4.2 代码注释 662

13.4.3 页出错异常处理 663

14.1 include/目录下的文件 664

第14章 头文件 664

14.2.1 功能描述 666

14.2 a.out.h文件 666

14.2.2 代码注释 667

14.2.3 a.out执行文件格式 672

14.3.2 代码注释 676

14.3.1 功能描述 676

14.3 const.h文件 676

14.4.2 代码注释 677

14.4.1 功能描述 677

14.4 ctype.h文件 677

14.5.2 代码注释 678

14.5.1 功能描述 678

14.5 errno.h文件 678

14.6.2 代码注释 680

14.6.1 功能描述 680

14.6 fcntl.h文件 680

14.7.2 文件注释 682

14.7.1 功能描述 682

14.7 signal.h文件 682

14.8.2 代码注释 684

14.8.1 功能描述 684

14.8 stdarg.h文件 684

14.9.1 功能描述 685

14.9 stddef.h文件 685

14.9.2 代码注释 686

14.10.2 代码注释 687

14.10.1 功能描述 687

14.10 string.h文件 687

14.11.1 功能描述 696

14.11 termios.h文件 696

14.11.2 代码注释 697

14.11.3 控制字符TIME、MIN 702

14.12.1 功能描述 703

14.12 time.h文件 703

14.12.2 代码注释 704

14.13.2 代码注释 705

14.13.1 功能描述 705

14.13 unistd.h文件 705

14.16.1 功能描述 711

14.16 io.h文件 711

14.14 utime.h文件 711

14.14.1 功能描述 711

14.14.2 代码注释 711

14.15 include/asm/目录下的文件 711

14.17.1 功能描述 712

14.17 memory.h文件 712

14.16.2 代码注释 712

14.18.2 代码注释 713

14.18.1 功能描述 713

14.17.2 代码注释 713

14.18 segment.h文件 713

14.19.1 功能描述 715

14.19 system.h文件 715

14.19.2 代码注释 717

14.20 include/linux/目录下的文件 719

14.21.2 代码注释 720

14.21.1 功能描述 720

14.21 config.h文件 720

14.22.1 功能描述 722

14.22 fdreg.h头文件 722

14.22.2 文件注释 723

14.23.2 代码注释 725

14.23.1 功能描述 725

14.23 fs.h文件 725

14.24.2 代码注释 730

14.24.1 功能描述 730

14.24 hdreg.h文件 730

14.24.3 硬盘分区表 732

14.26.2 代码注释 733

14.26.1 功能描述 733

14.25 head.h文件 733

14.25.1 功能描述 733

14.25.2 代码注释 733

14.26 kernel.h文件 733

14.27.2 代码注释 734

14.27.1 功能描述 734

14.27 mm.h文件 734

14.28.1 功能描述 735

14.28 sched.h文件 735

14.28.2 代码注释 736

14.29.2 代码注释 742

14.29.1 功能描述 742

14.29 sys.h文件 742

14.30.2 代码注释 744

14.30.1 功能描述 744

14.30 tty.h文件 744

14.31 include/sys/目录中的文件 746

14.32.2 代码注释 747

14.32.1 功能描述 747

14.32 stat.h文件 747

14.33.1 功能描述 748

14.33 times.h文件 748

14.34.2 代码注释 749

14.34.1 功能描述 749

14.33.2 代码注释 749

14.34 types.h文件 749

14.35.2 代码注释 750

14.35.1 功能描述 750

14.35 utsname.h文件 750

14.36.2 代码注释 751

14.36.1 功能描述 751

14.36 wait.h文件 751

第15章 库文件 753

15.1.2 代码注释 754

15.1.1 功能描述 754

15.1 Makefile文件 754

15.2.3 相关信息 756

15.2.2 代码注释 756

15.2 _exit.c程序 756

15.2.1 功能描述 756

15.4.2 代码注释 757

15.4.1 功能描述 757

15.3 close.c程序 757

15.3.1 功能描述 757

15.3.2 代码注释 757

15.4 ctype.c程序 757

15.5.2 代码注释 758

15.5.1 功能描述 758

15.5 dup.c程序 758

15.7.2 代码注释 759

15.7.1 功能描述 759

15.6 errno.c程序 759

15.6.1 功能描述 759

15.6.2 代码注释 759

15.7 execve.c程序 759

15.8.1 功能描述 760

15.8 malloc.c程序 760

15.8.2 代码注释 762

15.9 open.c程序 768

15.9.1 功能描述 768

15.9.2 代码注释 769

15.10 setsid.c程序 769

15.10.1 功能描述 769

15.10.2 代码注释 770

15.11 string.c程序 770

15.11.1 功能描述 770

15.11.2 代码注释 770

15.12 wait.c程序 771

15.12.1 功能描述 771

15.12.2 代码注释 771

15.13 write.c程序 772

15.13.1 功能描述 772

15.13.2 代码注释 772

16.1 build.c程序 773

16.1.1 功能概述 773

第16章 建造工具 773

16.1.2 代码注释 774

16.2 MINIX可执行文件头部数据结构 778

第17章 实验环境设置与使用方法 780

17.1 Bochs仿真软件系统 781

17.1.1 设置Bochs系统 781

17.1.2 配置文件*.bxrc 782

17.2 在Bochs中运行Linux 0.1x系统 785

17.2.1 软件包中文件说明 785

17.2.2 运行Linux 0.1x系统 787

17.3 访问磁盘映像文件中的信息 791

17.3.1 使用WinImage工具软件 791

17.3.2 利用现有Linux系统 792

17.4 编译运行简单内核示例程序 793

17.5 利用Bochs调试内核 795

17.5.1 运行Bochs调试程序 796

17.5.2 定位内核中的变量或数据结构 801

17.6 创建磁盘映像文件 802

17.6.1 利用Bochs软件自带的Image生成工具 803

17.6.2 在Linux系统下使用dd命令创建Image文件 804

17.6.3 利用WinImage创建DOS格式的软盘Image文件 804

17.7 制作根文件系统 805

17.7.1 根文件系统和根文件设备 805

17.7.2 创建文件系统 806

17.7.3 Linux-0.11的Bochs配置文件 808

17.7.4 在hdc.img上建立根文件系统 810

17.7.5 使用硬盘Image上的根文件系统 811

17.8 在Linux 0.11系统中编译0.11内核 812

17.9 在Redhat Linux 9系统中编译Linux 0.11内核 813

17.9.1 修改makefile文件 814

17.9.2 修改汇编程序中的注释 814

17.9.5 C程序变量在汇编语句中的引用表示 815

17.9.4 修改嵌入宏汇编程序 815

17.9.6 保护模式下调试显示函数 815

17.9.3 内存位置对齐语句align值的修改 815

17.10 内核引导启动+根文件系统组成的集成盘 816

17.10.1 集成盘制作原理 817

17.10.2 集成盘的制作过程 818

17.10.3 运行集成盘系统 821

17.11 从硬盘启动:利用shoelace引导软件 821

17.11.2 设置过程 822

17.11.3 问题和解决方法 822

17.11.1 shoelace程序设置路径 822

17.12 利用GDB和Bochs调试内核源代码 824

17.12.1 编译带gdbstub的Bochs系统 824

17.12.2 编译带调试信息的Linux 0.11内核 825

17.12.3 调试方法和步骤 826

附录 830

附录A 内核数据结构 830

附录B ASCII码表 838

附录C 常用C0、C1控制字符表 840

附录D 常用转义序列和控制序列 841

附录E 第1套键盘扫描码集 843

索引 845

参考文献 881

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