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

Linux 内核完全剖析-基于0.12内核PDF电子书下载

工业技术

  • 电子书积分:24 积分如何计算积分?
  • 作 者:赵炯编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2009
  • ISBN:9787111250470
  • 页数:945 页
图书介绍:本书对早期LINUX操作系统内核全部代码进行了深入的剖析。
《Linux 内核完全剖析-基于0.12内核》目录

第1章 概述 1

1.1 Linux的诞生和发展 1

UNIX操作系统的诞生 1

MINIX操作系统 1

GNU计划 2

POSIX标准 2

Linux操作系统的诞生 3

Linux操作系统版本的变迁 4

Linux名称的由来 6

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

1.2内容综述 8

1.3本章小结 12

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

2.1微型计算机组成原理 13

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

I/O端口和寻址 15

接口访问控制 17

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

主存储器 17

基本输入/输出程序BIOS 18

CMOS存储器 19

2.4控制器和控制卡 19

中断控制器 19

DMA控制器 20

定时/计数器 21

键盘控制器 21

串行控制卡 22

显示控制 24

软盘和硬盘控制器 25

2.5本章小结 28

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

3.1 as86汇编器 29

as86汇编语言语法 30

as86汇编语言程序 31

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

as86和ld86使用方法和选项 34

3.2 GNU as汇编 35

编译as汇编语言程序 36

as汇编语法 37

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

区与重定位 41

符号 43

as汇编命令 44

编写16位代码 46

AS汇编器命令行选项 46

3.3 C语言程序 46

C程序编译和链接 46

嵌入汇编 47

圆括号中的组合语句 51

寄存器变量 52

内联函数 52

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

C函数调用机制 54

在汇编程序中调用C函数 59

在C程序中调用汇编函数 61

3.5 Linux 0.12目标文件格式 63

目标文件格式 63

Linux 0.12中的目标文件格式 66

链接程序输出 68

链接程序预定义变量 69

System.map文件 70

3.6 Make程序和Makefile文件 72

Makefile文件内容 72

Makefile文件中的规则 73

Makefile文件示例 73

make处理Makefile文件的方式 75

Makefile中的变量 76

让make自动推断命令 76

隐含规则中的自动变量 77

3.7本章小结 78

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

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

标志寄存器 79

内存管理寄存器 80

控制寄存器 81

系统指令 84

4.2保护模式内存管理 85

内存寻址 85

地址变换 86

保护 88

4.3分段机制 89

段的定义 89

段描述符表 91

段选择符 93

段描述符 95

代码和数据段描述符类型 98

系统描述符类型 99

4.4分页机制 100

页表结构 102

页表项格式 103

虚拟存储 104

4.5保护 104

段级保护 105

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

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

页级保护 113

组合页级和段级保护 115

4.6中断和异常处理 115

异常和中断向量 115

中断源和异常源 116

异常分类 117

程序或任务的重新执行 117

开启和禁止中断 118

异常和中断的优先级 118

中断描述符表 119

IDT描述符 119

异常与中断处理 120

中断处理任务 123

错误码 123

4.7任务管理 124

任务的结构和状态 125

任务的执行 126

任务管理数据结构 126

任务切换 129

任务链 131

任务地址空间 132

4.8保护模式编程初始化 133

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

模式切换 135

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

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

引导启动程序boot.s 140

多任务内核程序head.s 142

第5章 Linux内核体系结构 147

5.1 Linux内核模式 147

5.2 Linux内核系统体系结构 148

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

物理内存 150

内存地址空间概念 150

内存分段机制 151

内存分页管理 154

CPU多任务和保护方式 157

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

用户申请内存的动态分配 161

5.4中断机制 162

中断操作原理 162

80x86微机的中断子系统 163

中断向量表 164

Linux内核的中断处理 164

标志寄存器的中断标志 166

5.5 Linux的系统调用 166

系统调用接口 166

系统调用处理过程 167

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

5.6系统时间和定时 168

系统时间 168

系统定时 169

5.7 Linux进程控制 170

任务数据结构 170

进程运行状态 175

进程初始化 176

创建新进程 177

进程调度 178

终止进程 179

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

初始化阶段 180

任务的堆栈 181

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

5.9 Linux 0.12采用的文件系统 184

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

内核主目录linux 185

引导启动程序目录boot 185

文件系统目录fs 186

头文件主目录include 187

内核初始化程序目录init 188

内核程序主目录kernel 188

内核库函数目录lib 191

内存管理程序目录mm 191

编译内核工具程序目录tools 192

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

5.12 linux/Makefile文件 192

功能描述 193

代码注释 194

5.13本章小结 198

第6章 引导启动程序 199

6.1总体功能 199

6.2 bootsect.S程序 201

功能描述 201

代码注释 202

其他信息 213

6.3 setup.S程序 214

功能描述 214

代码注释 216

其他信息 232

6.4 head.s程序 242

功能描述 242

代码注释 243

其他信息 251

6.5本章小结 253

第7章 初始化程序 255

7.1 main.c程序 255

功能描述 255

代码注释 258

其他信息 265

7.2环境初始化工作 268

7.3本章小结 269

第8章 内核代码 271

8.1总体功能 271

中断处理程序 271

系统调用处理相关程序 272

其他通用类程序 273

8.2 asm.s程序 273

功能描述 273

代码注释 275

Intel保留中断向量的定义 279

8.3 traps.c程序 279

功能描述 279

代码注释 279

8.4 sys call.s程序 284

功能描述 284

代码注释 286

其他信息 294

8.5 mktime.c程序 296

功能描述 296

代码注释 297

闰年的计算方法 298

8.6 sched.c程序 298

功能描述 298

代码注释 300

其他信息 312

8.7 signal.c程序 317

功能描述 317

代码注释 325

进程信号说明 331

8.8 exit.c程序 332

功能描述 332

代码注释 333

8.9 fork.c程序 345

功能描述 345

代码注释 346

任务状态段信息 351

8.10 sys.c程序 352

功能描述 352

代码注释 353

8.11 vsprintf.c程序 366

功能描述 366

代码注释 367

vsprintf()的格式字符串 372

与当前版本的区别 374

8.12 printk.c程序 374

功能描述 374

代码注释 375

8.13 panic.c程序 375

功能描述 375

代码注释 376

8.14本章小结 376

第9章 块设备驱动程序 377

9.1总体功能 378

块设备请求项和请求队列 378

块设备访问调度处理 380

块设备操作方式 380

9.2 blk.h文件 381

功能描述 381

代码注释 382

9.3 hd.c程序 386

功能描述 386

代码注释 388

其他信息 400

9.4 ll_rw_blk.c程序 409

功能描述 409

代码注释 409

9.5 ramdisk.c程序 415

功能描述 415

代码注释 417

9.6 floppy.c程序 421

功能描述 421

代码注释 422

其他信息 435

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

10.1总体功能 449

终端驱动程序基本原理 449

Linux支持的终端设备类型 450

终端基本数据结构 451

规范模式和非规范模式 455

控制台终端和串行终端设备 456

终端驱动程序接口 459

10.2 keyboard.S程序 459

功能描述 459

代码注释 459

其他信息 473

10.3 console.c程序 477

功能描述 477

代码注释 477

其他信息 503

10.4 serial.c程序 510

功能描述 510

代码注释 510

异步串行通信控制器UART 512

10.5 rs_io.s程序 517

功能描述 517

代码注释 518

10.6 tty_io.c程序 522

功能描述 522

代码注释 523

控制字符VTIME、 VMIN 536

10.7 tty_ioctl.c程序 536

功能描述 536

代码注释 537

波特率与波特率因子 543

第11章 数学协处理器 545

11.1总体功能描述 545

浮点数据类型 546

数学协处理器功能和结构 550

11.2 math_emulate.c程序 553

功能描述 553

代码注释 555

11.3 error.c程序 565

功能描述 565

代码注释 566

11.4 ea.c程序 566

功能描述 566

代码注释 567

11.5 convert.c程序 570

功能描述 570

代码注释 570

11.6 add.c程序 574

功能描述 574

代码注释 575

11.7 compare.c程序 577

功能描述 577

代码注释 577

11.8 get_put.c程序 579

功能描述 579

代码注释 579

11.9 mul.c程序 585

功能描述 585

代码注释 585

11.10 div.c程序 586

功能描述 586

代码注释 587

第12章 文件系统 589

12.1总体功能 589

MINIX文件系统 590

文件类型、属性和目录项 594

高速缓冲区 598

文件系统底层函数 599

文件中数据的访问操作 599

文件和目录管理系统调用 601

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

12.2 buffer.c程序 605

功能描述 605

代码注释 611

12.3 bitmap.c程序 621

功能描述 622

代码注释 622

12.4 truncate.c程序 627

功能描述 627

代码注释 627

12.5 inode.c程序 630

功能描述 630

代码注释 632

12.6 super.c程序 641

功能描述 641

代码注释 642

12.7 namei.c程序 650

功能描述 650

代码注释 651

12.8 file_table.c程序 675

功能描述 675

代码注释 675

12.9 block_dev.c程序 676

功能描述 676

代码注释 677

12.10 file_dev.c程序 680

功能描述 680

代码注释 680

12.11 pipe.c程序 682

功能描述 682

代码注释 683

12.12 char_dev.c程序 687

功能描述 687

代码注释 687

12.13 read_write.c程序 690

功能描述 690

代码注释 690

用户程序读写操作过程 693

12.14 open.c程序 695

功能描述 696

代码注释 696

12.15 exec.c程序 703

功能描述 703

代码注释 706

其他信息 718

12.16 stat.c程序 722

功能描述 722

代码注释 722

12.17 fcntl.c程序 724

功能描述 724

代码注释 725

12.18 ioctl.c程序 727

功能描述 727

代码注释 728

12.19 select.c程序 729

功能描述 729

代码注释 733

第13章 内存管理 741

13.1总体功能 741

内存分页管理机制 741

Linux中物理内存的管理和分配 744

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

页面出错异常处理 745

写时复制机制 746

需求加载机制 746

13.2 memory.c程序 747

功能描述 747

代码注释 749

13.3 page.s程序 765

功能描述 765

代码注释 765

页出错异常处理 766

13.4 swap.c程序 767

功能描述 767

代码注释 767

第14章 头文件 775

14.1 include/目录下的文件 775

14.2 a.out.h文件 776

功能描述 776

代码注释 777

a.out执行文件格式 783

14.3 const.h文件 786

功能描述 786

代码注释 786

14.4 ctype.h文件 787

功能描述 787

代码注释 787

14.5 errno.h文件 788

功能描述 788

代码注释 789

14.6 fcntl.h文件 790

功能描述 790

代码注释 790

14.7 signal.h文件 792

功能描述 792

文件注释 792

14.8 stdarg.h文件 795

功能描述 795

代码注释 795

14.9 stddef.h文件 796

功能描述 796

代码注释 796

14.10 string.h文件 797

功能描述 797

代码注释 797

14.11 termios.h文件 806

功能描述 806

代码注释 807

控制字符TIME和MIN 812

14.12 time.h文件 813

功能描述 813

代码注释 813

14.13 unistd.h文件 815

功能描述 815

代码注释 815

14.14 utime.h文件 821

功能描述 821

代码注释 821

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

14.16 io.h文件 821

功能描述 821

代码注释 822

14.17 memory.h文件 822

功能描述 822

代码注释 822

14.18 segment.h文件 823

功能描述 823

代码注释 823

14.19 system.h文件 825

功能描述 825

代码注释 827

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

14.21 config.h文件 829

功能描述 829

代码注释 829

14.22 fdreg.h头文件 831

功能描述 831

文件注释 832

14.23 fs.h文件 834

功能描述 834

代码注释 834

14.24 hdreg.h文件 839

功能描述 839

代码注释 840

硬盘分区表 841

14.25 head.h文件 842

功能描述 842

代码注释 842

14.26 kernel.h文件 843

功能描述 843

代码注释 843

14.27 mm.h文件 844

功能描述 844

代码注释 844

14.28 sched.h文件 845

功能描述 845

代码注释 846

14.29 sys.h文件 853

功能描述 853

代码注释 854

14.30 tty.h文件 856

功能描述 856

代码注释 856

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

14.32 param.h文件 859

功能描述 859

代码注释 859

14.33 resource.h文件 859

功能描述 859

代码注释 860

14.34 stat.h文件 862

功能描述 862

代码注释 862

14.35 time.h文件 863

功能描述 863

代码注释 863

14.36 times.h文件 865

功能描述 865

代码注释 865

14.37 types.h文件 865

功能描述 865

代码注释 865

14.38 utsname.h文件 866

功能描述 866

代码注释 867

14.39 wait.h文件 867

功能描述 867

代码注释 867

第15章 库文件 869

15.1 exit.c程序 869

功能描述 869

代码注释 870

相关信息 870

15.2 close.c程序 870

功能描述 870

代码注释 870

15.3 ctype.c程序 871

功能描述 871

代码注释 871

15.4 dup.c程序 872

功能描述 872

代码注释 872

15.5 errno.c程序 872

功能描述 872

代码注释 872

15.6 execve.c程序 873

功能描述 873

代码注释 873

15.7 malloc.c程序 873

功能描述 873

代码注释 875

15.8 open.c程序 882

功能描述 882

代码注释 882

15.9 setsid.c程序 883

功能描述 883

代码注释 883

15.10 string.c程序 884

功能描述 884

代码注释 884

15.11 wait.c程序 884

功能描述 884

代码注释 885

15.12 write.c程序 885

功能描述 885

代码注释 885

第16章 建造工具 887

16.1 build.c程序 887

功能描述 887

代码注释 888

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

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

17.1 Bochs仿真软件系统 895

设置Bochs系统 896

配置文件*.bxrc 897

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

软件包中文件说明 900

安装Bochs模拟系统 902

运行Linux 0.1x系统 902

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

使用WinImage工具软件 904

利用现有Linux系统 905

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

17.5利用Bochs调试内核 908

运行Bochs调试程序 908

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

17.6创建磁盘映像文件 915

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

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

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

17.7制作根文件系统 918

根文件系统和根文件设备 918

创建文件系统 919

Linux-0.12的Bochs配置文件 921

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

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

17.8在Linux 0.12系统中编译0.12内核 925

17.9在Fedora系统中编译Linux 0.1 x内核 926

修改Makefile文件 926

修改汇编程序中的注释 927

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

修改嵌入宏汇编程序 927

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

保护模式下调试显示函数 928

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

集成盘制作原理 929

集成盘的制作过程 931

运行集成盘系统 933

17.11利用GDB和Bochs调试内核源代码 933

编译带gdbstub的Bochs系统 933

编译带调试信息的Linux 0.1 x内核 934

调试方法和步骤 935

附录 939

附录A ASCII码表 939

附录B 常用C0、 C1控制字符表 940

附录C 常用转义序列和控制序列 941

附录D 第1套键盘扫描码集 943

参考文献 944

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