Linux 内核完全剖析-基于0.12内核PDF电子书下载
- 电子书积分:24 积分如何计算积分?
- 作 者:赵炯编著
- 出 版 社:北京:机械工业出版社
- 出版年份:2009
- ISBN:9787111250470
- 页数:945 页
第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
- 《英汉翻译理论的多维阐释及应用剖析》常瑞娟著 2019
- 《深入理解Linux内核 第3版 影印版》Daniel P.Bovet,Marco Cesati 2019
- 《人类文明因你而辉煌:诺贝尔奖历史追踪与剖析》吴乃优编著 2019
- 《深度剖析APACHE DUBBO核心技术内幕》翟陆续(加多)著 2019
- 《2019注册电气工程师执业职格考试专业基础考点剖析与真题详解》龚静主编 2019
- 《应用型本科规划教材 外贸函电实战 情境仿真+案例剖析》李为主编 2014
- 《上市公司典型违规案例剖析》信公咨询编 2017
- 《“行动中的版画实验 历史谱系下的版画内核与衍生”第十三届全国高等院校版画年会论文集》韦嘉主编 2017
- 《海岸带经济与管理》朱坚真,王锋主编;徐小怡,刘汉威,何时都副主编;朱坚真,王锋,徐小怡,刘汉斌,何时都,毛小敏,秦运巧等编著;张登义,鹿守本顾问 2013
- 《茄果类蔬菜科学施肥》张菊平,赵要尊,熊法亭编著 2013
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《流体力学》张扬军,彭杰,诸葛伟林编著 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017
- 《新工业时代 世界级工业家张毓强和他的“新石头记”》秦朔 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《AutoCAD机械设计实例精解 2019中文版》北京兆迪科技有限公司编著 2019