由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
醉染图书操作系统设计 XINU方法 原书第2版9787111621911
¥ ×1
出版者的话
译者序
前言
关于作者
章引言和概述1
1.1操作系统1
1.2本书的研究方法2
1.3分层设计2
1.4Xinu操作系统4
1.5操作系统的界定4
1.6从外部看操作系统5
1.7章节概要6
1.8观点6
1.9总结7
练习7
第2章并发执行与操作系统服务8
2.1引言8
2.2多活动的编程模型8
.操作系统服务9
2.4并发处理的概念和术语9
2.5串行程序和并发程序的区别11
2.6多个进程共享同一段代码12
2.7进程退出与进程终止14
2.8共享内存、竞争条件和同步14
2.9信号量与互斥18
2.10Xinu中的类型命名方法19
2.11使用kputc和kprintf进行操作系统的调试20
2.12观点20
2.13总结21
练习21
第3章硬件与运行时环境概述22
3.1引言22
3.2开发平台的物理和逻辑架构22
3.3指令集
3.4通用寄存器
3.5I/O总线和存-取范例24
3.6DMA机制25
3.7总线地址空间25
3.8总线启动和配置26
3.9函数调用约定和运行时栈26
3.10中断和中断处理28
3.11中断向量29
3.12异常向量和异常处理29
3.13时钟硬件29
3.14串行通信30
3.15轮询与中断驱动I/O30
3.16存储布局30
3.17内存保护31
3.18硬件细节和片上系统体系结构31
3.19观点31
3.20硬件参考资料32
练习32
第4章链表与队列操作33
4.1引言33
4.2进程链表的统一数据结构33
4.3简洁的链表数据结构34
4.4队列数据结构的实现35
4.5内联队列操作函数36
4.6获取链表中进程的基础函数37
4.7FIFO队列操作38
4.8优先级队列的操作40
4.9链表初始化42
4.10观点43
4.11总结43
练习43
第5章调度和上下文切换45
5.1引言45
5.2进程表45
5.3进程状态47
5.4就绪和当前状态48
5.5调度策略48
5.6调度的实现49
5.7推迟重新调度52
5.8上下文切换的实现52
5.9内存中保存的状态52
5.10上下文切换操作53
5.11重新启动进程执行的地址56
5.12并发执行和空进程57
5.13使进程就绪和调度常量57
5.14进程调度算法58
5.15观点58
5.16总结59
练习59
第6章更多进程管理60
6.1引言60
6.2进程挂起和恢复60
6.3自我挂起和信息隐藏60
6.4系统调用61
6.5禁止和恢复中断62
6.6系统调用模板63
6.7系统调用返回值SYSERR和OK63
6.8挂起的实现64
6.9挂起当前进程65
6.10suspend函数的返回值65
6.11进程终止和进程退出66
6.12进程创建68
6.13进程管理函数72
6.14总结74
练习74
第7章协调并发进程76
7.1引言76
7.2进程同步的必要76
7.3信号量的概念77
7.4避免忙等待77
7.5信号量策略和进程选择77
7.6等待状态78
7.7信号量数据结构79
7.8系统调用wait79
7.9系统调用signal80
7.10静态和动态信号量分配81
7.11动态信号量的实现示例82
7.12信号量删除83
7.13信号量重置84
7.14并行处理器(多核)之间的协调85
7.15观点86
7.16总结86
练习87
第8章消息传递88
8.1引言88
8.2两种类型的消息传递服务88
8.3消息使用资源的限制89
8.4消息传递函数和状态转换89
8.5send的实现90
8.6receive的实现91
8.7非阻塞消息接收的实现92
8.8观点92
8.9总结92
练习93
第9章基本内存管理94
9.1引言94
9.2内存的类型94
9.3重量级进程的定义95
9.4示例系统的内存管理95
9.5程序段和内存区域95
9.6动态内存分配96
9.7底层内存管理器的设计97
9.8分配策略和内存持久97
9.9追踪空闲内存98
9.10底层内存管理的实现98
9.11使用空闲内存的数据结构定义99
9.12分配堆存储100
9.13分配栈存储102
9.14堆和栈存储的释放103
9.15观点105
9.16总结106
练习106
0章不错内存管理和虚拟内存107
10.1引言107
10.2分区空间分配107
10.3缓冲池108
10.4分配缓冲区108
10.5将缓冲区返还给缓冲池110
10.6创建缓冲池111
10.7初始化缓冲池表112
10.8虚拟内存和内存复用113
10.9实地址空间和虚地址空间113
10.10支持按需分页的硬件114
10.11使用页表的地址转换114
10.12页表项中的元数据115
10.13按需分页以及设计上的问题116
10.14页面替换和全局时钟算法116
10.15观点117
10.16总结117
练习118
1章高层消息传递119
11.1引言119
11.2进程间通信端口119
11.3端口实现119
11.4端口表初始化120
11.5端口创建121
11.6向端口发送消息122
11.7从端口接收消息124
11.8端口的删除和重置125
11.9观点128
11.10总结128
练习128
2章中断处理130
12.1引言130
12.2中断的优点130
1.中断处理130
12.4中断向量131
12.5中断和异常集成131
12.6使用代码的ARM异常向量132
12.7设备中断向量号的分配135
12.8中断分派136
12.9中断的软件结构137
12.10禁止中断139
12.11中断代码调用函数的限制140
12.12中断过程中重新调度的必要140
12.13中断过程中的重新调度140
12.14观点141
12.15总结142
练习142
3章实时时钟管理143
13.1引言143
13.2定时事件143
13.3实时时钟和计时器硬件143
13.4实时时钟中断处理144
13.5与抢占145
13.6抢占的实现145
13.7使用增量链表对延迟进行有效管理146
13.8增量链表的实现147
13.9将进程转入睡眠148
13.10定时消息接收150
13.11唤醒睡眠进程154
13.12时钟中断处理154
13.13时钟初始化156
13.14观点159
13.15总结159
练习159
4章设备无关的I/O161
14.1引言161
14.2I/O和设备驱动的概念结构161
14.3接口抽象和驱动抽象162
14.4I/O接口示例163
14.5打开-读-写-关闭范例163
14.6绑定I/O操作和设备名164
14.7Xinu中的设备名164
14.8设备转换表概念165
14.9设备的多个副本和共享驱动166
14.10高层I/O操作的实现168
14.11高层I/O函数169
14.12打开、关闭和引用172
14.13devtab中的空条目和错误条目174
14.14I/O系统的初始化174
14.15观点178
14.16总结179
练习179
5章设备驱动示例180
15.1引言180
15.2使用UART硬件进行串行通信180
15.3tty抽象180
15.4tty设备驱动的组织结构181
15.5请求队列和缓冲区182
15.6上半部和下半部的同步183
15.7UART硬件FIFO与驱动设计184
15.8控制块的概念184
15.9tty控制块和数据声明184
15.10次设备号186
15.11上半部tty字符输入(ttygetc)187
15.12上半部tty读取函数(ttyread)188
15.13上半部tty字符输出(ttyputc)189
15.14开始输出(ttykickout)190
15.15上半部tty多字符输出(ttywrite)191
15.16下半部tty驱动函数(ttanler)192
15.17输出中断处理(ttanle_out)194
15.18tty输入处理(ttanle_in)196
15.19tty控制块初始化(ttyinit)202
15.20设备驱动控制(ttycontrol)204
15.21观点205
15.22总结205
练习206
6章DMA设备和驱动(以太网)207
16.1引言207
16.2直接内存访问和缓冲区207
16.3多个缓冲区和缓冲区环207
16.4使用DMA的以太网驱动示例208
16.5设备的硬件定义和常量209
16.6环和内存缓冲区211
16.7以太网控制块的定义213
16.8设备和驱动初始化215
16.9从以太网设备读取数据包221
16.10向以太网设备写入数据包2
16.11以太网设备的中断处理225
16.12以太网控制函数228
16.13观点229
16.14总结229
练习229
7章互联网协议栈0
17.1引言0
17.2所需的功能0
17.3同步会话、超时和网络处理进程1
17.4设计的影响2
17.5ARP函数2
17.6网络数据包的定义241
17.7网络输入进程242
17.8IP的相关定义245
17.9IP函数246
17.10UDP表的定义255
17.11UDP函数256
17.12互联网控制报文协议267
17.13动态主机配置协议268
17.14观点275
17.15总结275
练习275
8章远程磁盘驱动277
18.1引言277
18.2磁盘抽象277
18.3磁盘驱动支持的操作277
18.4块传输和高层I/O函数277
18.5远程磁盘范例278
18.6高速缓存的重要概念278
18.7磁盘操作的语义279
18.8驱动数据结构的定义280
18.9驱动初始化(rdsinit)284
18.10上半部打开函数(rdsopen)287
18.11远程通信函数(rdscomm)289
18.12上半部写函数(rdswrite)291
18.13上半部读函数(rdsread)293
18.14刷新挂起的请求296
18.15上半部控制函数(rdscontrol)297
18.16分配磁盘缓冲区(rdsbufalloc)299
18.17上半部关闭函数(rdsclose)300
18.18下半部通信进程(rdsprocess)302
18.19观点306
18.20总结306
练习306
9章文件系统308
19.1什么是文件系统308
19.2文件操作的示例集308
19.3本地文件系统的设计309
19.4Xinu文件系统的数据结构309
19.5索引管理器的实现310
19.6清空索引块(lfibclear)314
19.7获取索引块(lfibget)315
19.8存储索引块(lfibput)315
19.9从空闲链表中分配索引块(lfiballoc)316
19.10从空闲链表中分配数据块(lfdballoc)317
19.11使用设备无关的I/O函数进行文件操作319
19.12文件系统的设备配置和函数名称320
19.13本地文件系统打开函数(lfsopen)320
19.14关闭文件伪设备(lflclose)326
19.15刷新磁盘中的数据(lfflush)328
19.16文件的批量传输函数(lflwrite、lflread)328
19.17在文件中查找新位置(lflseek)330
19.18从文件中提取一字节(letc)331
19.19改变文件中的一字节(lflputc)332
19.20载入索引块和数据块(lfsetup)334
19.21主文件系统设备的初始化(lfsinit)337
19.22伪设备的初始化(lflinit)338
19.文件截断(lftruncate)339
19.24初始文件系统的创建(lfscreate)341
19.25观点343
19.26总结343
练习343
第20章远程文件机制345
20.1引言345
20.2远程文件访问345
20.3远程文件语义345
20.4远程文件设计和消息346
20.5远程文件服务器通信(rfscomm)352
20.6发送基本消息(rfsndmsg)354
20.7网络字节序355
20.8使用设备范例的远程文件系统355
20.9打开远程文件(rfsopen)356
20.10检查文件模式(rfsgetmode)359
20.11关闭远程文件(rflclose)360
20.12读远程文件(rflread)361
20.13写远程文件(rflwrite)363
20.14远程文件的定位(rflseek)365
20.15远程文件单字符I/O(retc、rflputc)366
20.16远程文件系统控制函数(rfscontrol)367
20.17初始化远程文件系统(rfsinit、rflinit)370
20.18观点372
20.19总结372
练习372
2章句法名字空间374
21.1引言374
21.2透明与名字空间抽象374
21.3多种命名方案375
21.4命名系统设计的方案376
21.5基于句法的名字空间376
21.6模式和替换376
21.7前缀模式377
21.8名字空间的实现377
21.9名字空间的数据结构和常量377
21.10增加名字空间前缀表的映378
21.11使用前缀表进行名字映379
21.12打开命名文件383
21.13名字空间初始化383
21.14对前缀表中的项进行排序386
21.15选择逻辑名字空间386
21.16默认层次和缀387
21.17额外的对象操作函数387
21.18名字空间方法的优点和限制388
21.19广义模式388
21.20观点389
21.21总结389
练习390
第22章系统初始化391
22.1引言391
22.2引导程序:从零开始391
2.一个通过网络启动的例子392
22.4操作系统初始化392
22.5Xinu初始化393
22.6Xinu系统启动395
22.7从程序转化为进程399
22.8观点399
22.9总结399
练习400
第章子系统初始化和内存标记401
.1引言401
.2自初始化模块401
.并发系统中的自初始化模块402
.4重新启动后的自初始化403
.5使用登录号初始化404
.广义内存标记方案405
.内存标记系统的数据声明406
.标记的实现407
.观点408
.10总结408
练习408
第24章异常处理409
24.1引言409
24.2术语:故障、检测、陷阱和异常409
24.3向量异常和可屏蔽中断 409
24.4异常的类型410
24.5处理异常410
24.6异常向量初始化411
24.7面对灾难时的panic411
24.8panic函数的实现411
24.9观点412
24.10总结412
练习412
第25章系统配置413
25.1引言413
25.2多重配置的需求413
25.3Xinu系统配置414
25.4Xinu配置文件的内容414
25.5计算次设备号416
25.6配置Xinu系统的步骤417
25.7观点417
25.8总结417
练习417
第26章一个用户接口例子:Xinu shell419
26.1引言419
26.2什么是用户接口419
26.3命令和设计原则419
26.4一个简化shell的设计决策420
26.5shell的组织和操作420
26.6词法符号的定义421
26.7命令行语法的定义421
26.8Xinu shell的实现422
26.9符号的存储424
26.10词法分析器代码424
26.11命令解释器的核心428
26.12命令名查询和内部处理434
26.13传递给命令的参数435
26.14向外部命令传递参数435
26.15I/O重定向438
26.16命令函数(sleep)的例子439
26.17观点440
26.18总结441
练习441
附录1操作系统移植443
附录2Xinu设计注解450
索引454
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格