• 深度探索嵌入式操作系统:从零开始设计、架构和开发
  • 深度探索嵌入式操作系统:从零开始设计、架构和开发
21年品牌 40万+商家 超1.5亿件商品

深度探索嵌入式操作系统:从零开始设计、架构和开发

有塑封,少量划线

45 4.5折 99 九品

仅1件

河南开封
认证卖家担保交易快速发货售后保障

作者彭东 著

出版社机械工业出版社

出版时间2015-10

版次1

装帧平装

上书时间2024-12-02

   商品详情   

品相描述:九品
图书标准信息
  • 作者 彭东 著
  • 出版社 机械工业出版社
  • 出版时间 2015-10
  • 版次 1
  • ISBN 9787111514879
  • 定价 99.00元
  • 装帧 平装
  • 开本 16开
  • 纸张 胶版纸
  • 页数 527页
  • 字数 451千字
  • 丛书 Linux/Unix技术丛书
【内容简介】
  《深度探索嵌入式操作系统:从零开始设计、架构和开发》将是操作系统实践领域和嵌入式操作系统领域的又一里程碑之作。
  作者是计算机领域“鬼才”,独立编写出了多进程、多线程、多CPU、支持虚拟内存的x86_64体系下的操作系统内核,一共6个测试版本,10万余行代码;在此基础之上,作者又开发出了基于ARM平台的嵌入式系统内核。这两个内核都可以完全运行于物理机上。
  本书从硬件和软件两个维度系统、深度阐述嵌入式操作系统的构成、原理和实现方法,真正可以实现教读者从零开始设计、架构和开发一个完整的、可工作的嵌入式操作系统。
  硬件部分分析了所选择的平台及其之上的组件。先宏观地分析了平台的外围组件:实时时钟、定时器、串口、中断控制器、内存芯片、flash芯片、CPU、MMU等,让读者先有个初步的印象,在写代码用到某个组件时再详述其内部编程细节。接着重点分析了CPU和MMU的细节,以及内存芯片,这三个部件是程序运行的基石,所以在写代码之前必须详细了解它们的细节。
  软件部分首先分析和讲解了操作系统内核的功能及其所包含的组件、操作系统的架构设计、构建操作系统的工具,以及C语言的调用约定、基本的数据结构和C数据结构在内存中的镜像;然后详细讲解了如何编写代码完成这些组件:初始化、内存管理、中断管理、设备管理、进程管理、文件系统、系统调用接口、应用程序库。对这些组件的功能、要求、硬件细节、数据结构和功能代码做了完整且详细的讲解。系统调用接口为了顾及读者们已有的知识体系,模拟了类UNIX调用接口,方便读者理解核心原理。
  本书始终保持这样的结构:从硬件平台到架构设计,到数据结构,最后落实到每行代码,无论是针对整个操作系统,还是操作系统中的每一个组件,每一个功能模块都保持着这样的结构,正是因为这样的结构,学完这本书我们每一个人都可以豪迈地说一句:“我是一个真正的操作系统实践者。”
【作者简介】
  彭东,中国计算机领域的“鬼才”,自幼患病,从2008年开始直到现在,始终不间断地研究和自学计算机,精通各种编程语言,精通算法与数据结构,精通编译原理,精通操作系统理论并十分了解现有的Linux和Windows操作系统,还精通X86和ARM两大硬件平台体系结构。
  先后独自从零开始开发了LMOS、LMOSEM两大操作系统内核,现在的LMOS已经是多进程、多线程、多CPU、支持虚拟内存的x86_64体系下的全64位操作系统内核,代码量已经有10万多行了,而LMOSEM则是本书中所写的基于ARM平台的嵌入式操作系统。LMOS的早期版本曾在IT168等社区发布,引起了广泛讨论,获得了极高的评价。
【目录】

刖吾
第1章操作系统的功能及为什么
需要它 1
1.1从hello world开始 1
1.2操作系统功能演进 3
1.3小结 7
第2章硬件平台 8
2.1选择平台 8
2.1.1 mini2440 8
2.1.2 mini2440平台的信息 9
2.2必须要关注的硬件 13
2.2.1原因 14
2.2.2 RTC 15
2.2.3定时器 16
2.2.4串口 17
2.2.5中断控制器 18
2.2.6 SDRAM 19
2.2.7 NOmaSh 23
2.2.8 Nandflash 24
2.3小结 26
第3章处理器 28
3.1 ARM公司与其处理器 28
3.2 ARM920T的结构与特性 29
3.2.1 ARM920T CPU结构 29
3.2.2 ARM920TCPU特性 32
3.3 ARM920T存储体系 33
3.3.1 ARM920T地址空间 33
3.3.2 ARM920T存储器格式 34
3.3.3 ARM920T存储地址对齐 -35
3.4 ARM920T状态 35
3.4.1 ARM状态 36
3.4.2 Thumb状态 36
3.5ARM920T处理器的7种工作模式 37
3.6寄存器 38
3.7异常和中断 43
3.7.1什么是异常和中断 43
3.7.2异常中断向量 46
3.8ARM920T指令集 47
3.8.1 指令及其编码格式 48
3.8.2分支跳转指令 50
3.8.3数据处理指令 53
3.8.4装载和存储指令 63
3.8.5程序状态寄存器操作指令 73
3.8.6协处理器操作指令 76
3.8.7异常中断产生指令 79
3.9 MMU 80
3.9.1 MMU概述 80
3.9.2为什么要有MMU 82
3.9.3 ARM920T CP15协处理器85
3.9.4 MMU页表
3.9.5 MMU页面访问权限的控制 98
3.9.6 MMU的快表TLB 113
3.9.7 MMU的编程接口 114
3.10 Cache115
3.10.1 ARM920T的Cache 115
3.10.2 Cache的原理116
3.10.3 Cache的类型及要注意的
问题117
3.10.4 ARM920T Cache的编程接口 l 19
3.11小结 120
第4章操作系统内核的设计与构建 122
4.1 操作系统内核的设计 122
4.1.1 内核要完成的功能 123
4.1.2内核的架构 124
4.1.3分离硬件的相关性 126
4.1.4我们的选择 127
4.2开发环境及相关工具 129
4.2.1 Linux环境 129
4.2.2文本编辑器 132
4.2.3 GCC 134
4.2.4 LD 136
4.2.5 make “l39
4.3 LMOSEM的构建系统 142
4.3.1 LMOSEM的makefile 142
4.3.2 LMOSEM的链接脚本 147
4.4开发板的安装 150
4.5小结 154
第5章语言间调用约定与基本数据
结构 156
5.1寄存器使用约定 156
5.1.1寄存器别名 157
5.1.2参数传递与返回值 157
5.2基本数据结构 159
5.2.1 C语言的基本数据结构 160
5.2.2 list h t数据结构 16l
5.2.3 spinlock_t数据结构 164
5.2.4 kwlst t数据结构 165
5.2.5 sem t数据结构 166
5.3数据结构存在于内存中的形式 l68
5.4 C与汇编的混用 170
5.5小结 174
第6章内核初始化 175
6.1开始 175
6.1.1第一行汇编代码 175
6.1.2第一个C函数 178
6.2 MMU和中断向量的初始化 181
6.2.1初始化MMU “181
6.2.2复制中断向量 -186
6.3串口初始化 190
6.3.1串口硬件 190
6.3.2 内核的printf 196
6.4机器数据结构 201
6.4.1设计数据结构 201
6.4.2确定一些重要数据结构与内核
的地址 ”203
6.5初级内存管理初始化 205
6.5.1设计一些数据结构 -205
6.5.2初始化mmapdsc_t结构数组 209
6.5.3建立起内存分配数据结构 212
6.6中断初始化 215
6.6.1设计一些数据结构 215
6.6.2初始中断源描述符 -220
6.7初始化测试 222
6.8小结 225
?第7章内存管理 226
7.1 内核功能层入口 226
7.2 内存管理组件的设计 228
7.3块级内存管理 229
7.3.1块级内存管理数据结构视图 229
7.3.2块级内存管理接口 230
7.3.3主分配函数 232
7.3.4分配时查找alcfrelst_t 234
7.3.5分配时查找和操作
mm叩dsc_t 236
7.3.6分配代码写得对吗 239
7.3.7主释放函数 240
7.3.8释放时查找alcfrelst 241
7.3.9释放时查找和操作
HHnapdscj 242
7.3.10测试块级内存管理层 246
7.4页级内存管理 -248
7.4.1 页级内存管理接口及调用
流程 248
7.4.2相关的数据结构 25 1
7.4.3页级内存管理初始化 254
7.4.4分配主函数 256
7.4.5分配时查找mplhead-t 257
7.4.6分配时新建页级内存池 258
7.4.7分配时操作mplhead_t 262
7.4.8分配代码写得对吗 263
7.4.9释放主函数 265
7.4.10释放时查找mplhead-t ”266
7.4.11释放时操作mpmeadj “268
7.4.12释放时删除页级内存池 269
7.4.13测试页级内存管理层 271
7.5字级内存管理 273
7.5.1字级内存接口及调用流程 274
7.5.2相关的数据结构 275
7.5.3分配主函数 276
^
7.5.4分配时查找mplhead』 278
7.5.5分配时新建字级内存池 279
7.5.6分配时操作mplhead_t 282
7.5.7分配代码写得对吗 283
7.5.8释放主函数 一285
7.5.9释放时查找mpmead_j 285
7.5.10释放时操作mplhead_t “287
7.5.11释放时删除字级内存池 “288
7.5.12测试字级内存管理层 289
7.6小结 292
第8章中断管理 293
8.1 中断与中断控制器 293
8.1.1什么是中断 --293
8.1.2 S3C2440A中断控制器 294
8.2 中断管理的架构与相关数据
结构 298
8.2.1 中断管理的架构 -298
8.2.2设计数据结构intfltdscj
和intserdsc-t ”298
8.3中断处理 -301
8.3.1 中断辅助例程 301
8.3.2从中断向量开始 “305
8.3.3 保存CPU上下文 306
8.3.4中断主分派例程 3 lO
8.3.5确定中断源 “314
8.3.6调用中断处理例程 317
8.4安装中断回调例程 319
8.5小结 322
第9章驱动模型 323
9.1操作系统内核如何管理设备 ”323
9.1.1分权而治 323
9.1.2设备类型 325
9.1.3驱动程序 327
?9.2相关数据结构 。328
9.2.1驱动 一329
9.2.2派发例程类型 一329
9.2.3设备ID “330
9.2.4设备 “331
9.2.5 10包 “332
9.2.6设备表 ”333
9.3驱动模型的基础设施 335
9.3.1驱动程序从哪里执行 335
9.3.2新建与注册设备 340
9.3.3注册回调函数 ”344
9.3.4发送IO包 一345
9.3.5调用驱动程序函数 346
9.3.6等待服务 ”347
9.3.7完成服务 ”350
9.3.8驱动模型辅助函数 352
9.4 systick驱动程序实例 ~356
9.4.1 systick硬件 ”356
9.4.2 systick驱动程序框架 -360
9.4.3 systick驱动程序实现 ‘362
9.4.4测试systick驱动程序 368
9.5 RTC驱动程序实例 -370
9.5.1 RTC硬件 一370
9.5.2 RTC驱动程序实现 375
9.6小结 ”385
第10章进程 386
10.1应用程序的运行 386
10.1.1程序运行需要什么资源 387
10.1.2任何时刻资源都可用吗 388
10.1.3提出多道程序模型 389
10.2相关的数据结构 390
10.2.1设计进程的数据结构 391
10.2.2调度进程表 ”392
10.3 LMOSEM内核的第一个进程 394
10.3.1进程管理组件的初始化 395
10.3.2建立空转进程 396
10.3.3空转进程运行 399
10.4新建进程 404
10.4.1分配进程描述符 404
10.4.2分配内存空间 406
10.4.3加入进程调度表 408
10.5进程调度 410
10.5.1调度算法 ”410
10.5.2处理进程时间片 411
10.5.3检查调度状态 414
10.5.4选择进程 ”415
10.5.5进程切换 一418
10.5.6进程等待与唤醒 421
10.5.7进程测试 “425
10.6小结 -428
第11章文件系统 430
11.1文件系统设计 430
11.1.1文件系统只是一个设备 430
11.1.2数据格式与存储块 432
11.1.3如何组织文件 433
11.1.4关于我们文件系统的限制 434
11.2相关的数据结构 434
11.2.1超级块 435
11.2.2位图 435
11.2.3 目录 一437
11.2.4文件管理头 “438
11.3文件系统格式化 440
11.3.1建立超级块 ”440
11.3.2建立位图 445
11.3.3建立根目录 448
11.4文件系统基础操作 452
11.4.1获取与释放根目录文件 -453
11.4.2字符串操作 455
11.4.3分解路径名 457
11.4.4检查文件是否存在 459
11.5文件操作 460
11.5.1新建文件 461
11.5.2删除文件 463
11.5.3打开文件 466
11.5.4读写文件 469
11.5.5关闭文件 472
11.5.6驱动整合 473
11.6文件系统测试 475
11.6.1格式化测试 475
11.6.2文件操作测试 479
11.7小结 482
第12章系统调用与应用程序库 483
12.1系统调用机制 483
12.1.1软中断指令 484
12.1.2传递系统调用参数 486
12.1.3 系统调用分发器 488
12.2时间管理系统调用 489
12.3进程管理系统调用 492
12.3.1进程的运行与退出 492
12.3.2获取进程的ID 494
12.4内存管理系统调用 496
12.5设备与文件系统调用 498
12.5.1设备与文件的打开 498
12.5.2设备与文件的关闭 506
12.5.3设备与文件的读写 508
12.5.4设备与文件的控制 5 12
12.6应用程序库 514
12.7测试 520
12.8小结 526
后记 528

点击展开 点击收起

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP