您好,欢迎来到聚文网。
登录
免费注册
网站首页
|
搜索
热搜:
磁力片
|
漫画
|
购物车
0
我的订单
商品分类
首页
幼儿
文学
社科
教辅
生活
销量榜
Windows内核设计思想
字数: 992.00千字
装帧: 平装
出版社: 电子工业出版社
作者: 陈树宝 著 著作
出版日期: 2015-03-01
商品条码: 9787121253140
版次: 1
开本: 16开
页数: 615
出版年份: 2015
定价:
¥108
销售价:
登录后查看价格
¥{{selectedSku?.salePrice}}
库存:
{{selectedSku?.stock}}
库存充足
{{item.title}}:
{{its.name}}
加入购物车
立即购买
加入书单
收藏
精选
¥5.83
世界图书名著昆虫记绿野仙踪木偶奇遇记儿童书籍彩图注音版
¥5.39
正版世界名著文学小说名家名译中学生课外阅读书籍图书批发 70册
¥8.58
简笔画10000例加厚版2-6岁幼儿童涂色本涂鸦本绘画本填色书正版
¥5.83
世界文学名著全49册中小学生青少年课外书籍文学小说批发正版
¥4.95
全优冲刺100分测试卷一二三四五六年级上下册语文数学英语模拟卷
¥8.69
父与子彩图注音完整版小学生图书批发儿童课外阅读书籍正版1册
¥24.2
好玩的洞洞拉拉书0-3岁宝宝早教益智游戏书机关立体翻翻书4册
¥7.15
幼儿认字识字大王3000字幼儿园中班大班学前班宝宝早教启蒙书
¥11.55
用思维导图读懂儿童心理学培养情绪管理与性格培养故事指导书
¥19.8
少年读漫画鬼谷子全6册在漫画中学国学小学生课外阅读书籍正版
¥64
科学真好玩
¥12.7
一年级下4册·读读童谣和儿歌
¥38.4
原生态新生代(传统木版年画的当代传承国际研讨会论文集)
¥11.14
法国经典中篇小说
¥11.32
上海的狐步舞--穆时英(中国现代文学馆馆藏初版本经典)
¥21.56
猫的摇篮(精)
¥30.72
幼儿园特色课程实施方案/幼儿园生命成长启蒙教育课程丛书
¥24.94
旧时风物(精)
¥12.04
三希堂三帖/墨林珍赏
¥6.88
寒山子庞居士诗帖/墨林珍赏
¥6.88
苕溪帖/墨林珍赏
¥6.88
楷书王维诗卷/墨林珍赏
¥9.46
兰亭序/墨林珍赏
¥7.74
祭侄文稿/墨林珍赏
¥7.74
蜀素帖/墨林珍赏
¥12.04
真草千字文/墨林珍赏
¥114.4
进宴仪轨(精)/中国古代舞乐域外图书
¥24.94
舞蹈音乐的基础理论与应用
内容简介
本书主要讲述Windows内核的设计过程,从很底层的细节使用源码一步一步分析,结合Bochs和WinDbg调试器进行验证。本书提供全部源代码和能直接编译的项目工程,集理论、架构、编码、运行和调试于一体进行讲述,从多种角度呈现内核构架的基本流程。本书主要包括了Windows内核加载器(ntldr)的分析,Windows内核调试组件的设计,实现结构化异常处理的支持,并对内存管理和对象管理进行了精心讲解,同时对基于IRP请求包的I/O系统进行了论述,并且介绍了如何设计文件系统,很后简单讲解了进程和线程的一些基本知识。
作者简介
陈树宝,程序员,醉心于Windows内核技术的研究。始终坚信笨鸟先飞,凭借着一点一滴的积累,追本溯源,在操作系统设计和构架方面有所领悟。
目录
推荐序1iii
推荐序2v
序言vii
前言ix
第1章搭建开发和调试环境1
1.1编译环境1
1.2使用Bochs运行ntos.img2
1.3使用VMware运行ntos.vmdk3
1.4模拟调试运行6
1.5编程思想(等差数列求和)8
1.6函数调用约定14
1.7模块扩展约定15
1.8本章总结15
第2章Windows内核加载器(SU)16
2.1主引导记录(MBR)18
2.2系统分区(Partition1)25
2.3SU模块(startup.com)28
2.3.1原版WindowsServer2003系统NTLDRstartup.com基本分析28
2.3.2根据原理重新构建新的startup.com30
2.4检测物理内存32
2.5开启A20地址线40
2.6重新定位GDT和IDT42
2.7保护模式43
2.7.1段描述符(SegmentDescriptor)43
2.7.2特权级(privilegelevel)48
2.7.3段描述符表(segmentdescriptortable)50
2.7.4开启保护模式51
2.8加载Loader模块53
2.9转移控制权59
2.10导出函数59
2.10.1读写扇区62
2.10.2获取物理内存块63
2.10.3检测硬件64
2.11本章总结64
第3章Windows内核调试设计66
3.1初始化调试系统67
3.2初始化模拟调试74
3.3初始化内核调试76
3.3.1中断和异常向量表76
3.3.2注册异常处理例程79
3.3.3基于栈框架的异常处理程序82
3.3.4除零错误(#DE)85
3.3.5单步异常(#DB)90
3.3.6断点异常(#BP)91
3.3.7一般保护性错误(#GP)91
3.3.8页面错误(#PF)92
3.3.9调试器服务(debuggerservice)93
3.4分发异常94
3.5内核调试分发102
3.5.1打印字符串106
3.5.2加载/卸载符号109
3.5.3报告异常115
3.6内核调试引擎核心118
3.6.1获取系统版本125
3.6.2获取/设置机器信息126
3.6.3读/写虚拟内存126
3.6.4设置/恢复断点130
3.7调试通信协议136
3.7.1串行端口136
3.7.2COM寄存器138
3.7.3波特率139
3.7.4端口初始化140
3.7.5通信协议142
3.7.6读端口142
3.7.7写端口146
3.7.8调试包147
3.7.9接收调试包(KdReceivePacket)150
3.7.10发送调试包(KdSendPacket)157
3.8本章总结160
第4章Windows内核加载器(Loader)161
4.1NtProcessStartup162
4.2PcMachInit165
4.3初始化内存管理器166
4.3.1内存描述符表167
4.3.2页面查找表175
4.3.3初始化堆182
4.4分页机制195
4.4.1页帧号(PFN)195
4.4.2页目录和页表197
4.4.3开启分页机制198
4.4.4虚拟地址转译物理地址208
4.4.5修改页目录和页表位置210
4.5Loader读/写支持211
4.5.1ARC接口标准211
4.5.2虚拟磁盘驱动(RamDisk)219
4.5.3磁盘驱动(Hwdisk)220
4.5.4文件系统驱动(Ldfs)226
4.6加载器参数块232
4.7加载和启动内核233
4.7.1收集硬件信息238
4.7.2本地语言支持(NLS)239
4.7.3加载模块240
4.7.4内存描述符链表244
4.7.5处理器控制域(PCR)和任务状态段(TSS)246
4.8本章总结251
第5章结构化异常处理252
5.1异常触发254
5.2分发异常(RtlDispatchException)257
5.3异常处理(_except_handler3)262
5.4全局展开(__global_unwind2)266
5.5局部展开(__local_unwind2)272
5.6冒泡排序(BubbleSort)274
5.7本章总结275
第6章内存管理276
6.1物理内存管理概述276
6.2虚拟地址空间布局277
6.3初始化内存系统(MmArmInitSystem)278
6.4初始化机器相关(MiInitMachineDependent)296
6.5初始化非分页池(MiInitializeNonPagedPool)305
6.6初始化系统PTE(MiInitializeSystemPtes)309
6.7映射页帧数据库(MiMapPfnDatabase)310
6.8初始化颜色表(MiInitializeColorTables)313
6.9初始化页帧号数据库(MiInitializePfnDatabase)315
6.9.1从页面建立页帧号数据库(MiBuildPfnDatabaseFromPages)319
6.9.2从加载块物理内存链表建立页帧号数据库(MiBuildPfnDatabaseFromLoad-
erBlock)323
6.10初始化池(InitializePool)330
6.11分配池页面(MiAllocatePoolPages)335
6.11.1非分页池分配342
6.11.2分页池分配343
6.11.3分页池页面错误处理344
6.12释放池页(MiFreePoolPages)347
6.12.1释放分页池352
6.12.2释放非分页池353
6.13建立分页池(MiBuildPagedPool)354
6.14分配池内存(ExAllocatePoolWithTag)360
6.15释放池内存(ExFreePoolWithTag)371
6.16初始化系统空间映射(MiInitializeSystemSpaceMap)379
6.17本章总结381
第7章对象管理382
7.1对象概述382
7.1.1对象整体结构382
7.1.2对象头(objectheader)385
7.1.3对象类型(objecttype)386
7.1.4对象类型例程模板(objecttypeproceduretemplate)387
7.2分配对象内存空间(ObpAllocateObject)390
7.3释放对象内存空间(ObpDeallocateObject)397
7.4初始化对象系统(ObInitSystem)399
7.5创建句柄表(ExCreateHandleTable)406
7.6创建对象类型(ObCreateObjectType)410
7.7创建目录对象(NtCreateDirectoryObject)416
7.8创建对象(ObCreateObject)418
7.9插入对象(ObInsertObject)421
7.10查找对象名(ObpLookupObjectName)428
7.11查找目录项(ObpLookupEntryDirectory)445
7.12创建无名句柄(ObpCreateUnnamedHandle)448
7.13分配句柄表项(ExpAllocateHandleTableEntry)452
7.14解析符号链接(ObpParseSymbolicLink)465
7.15Section和Segment469
7.15.1PrototypePTE页面异常处理478
7.15.2Section映射到系统进程481
7.15.3VAD页面错误处理482
7.16本章总结483
第8章I/O系统485
8.1初始化I/O系统(IoInitSystem)486
8.2创建驱动对象(IopCreateDriver)497
8.3创建设备对象(IoCreateDevice)503
8.4分配I/O请求包(IoAllocateIrp)508
8.5传递I/O请求包(IoCallDriver)513
8.6释放I/O请求包(IoFreeIrp)514
8.7解析设备(IopParseDevice)515
8.8磁盘读/写支持525
8.9本章总结532
第9章文件系统设计533
9.1文件系统初始化(DriverEntry)533
9.2挂载卷(NtfsMountVolume)536
9.2.1识别文件系统格式540
9.2.2文件控制块(FCB)542
9.2.3上下文控制块(CCB)544
9.2.4创建流文件对象(IoCreateStreamFileObject)544
9.2.5初始化缓存映射(CcInitializeCacheMap)545
9.3打开文件(NtfsOpenFile)547
9.4读文件(NtfsReadFile)553
9.5关闭文件(NtfsCloseFile)555
9.6发起卷挂载请求561
9.7加载NTDLL564
9.7.1打开NTDLL564
9.7.2检查NTDLL映像(MmCheckSystemImage)565
9.7.3创建NTDLLSection569
9.7.4映射NTDLLSection到当前进程空间570
9.7.5获取用户进入点571
9.8本章总结573
第10章进程和线程574
10.1进程和线程初始化575
10.1.1初始化进程576
10.1.2初始化线程578
10.1.3初始化线程上下文580
10.1.4初始化进程系统(PspInitPhase0)584
10.2线程优先级(priority)590
10.3线程状态(threadstate)591
10.4线程调度(threaddispatch)593
10.5分配进程虚拟内存(NtAllocateVirtualMemory)601
10.6创建用户进程(smss.exe)608
10.7本章总结608
附录APE格式609
×
Close
添加到书单
加载中...
点此新建书单
×
Close
新建书单
标题:
简介:
蜀ICP备2024047804号
Copyright 版权所有 © jvwen.com 聚文网