当前位置:首页 > 工业技术
嵌入式操作系统基础μC/OSII和Linux  第2版
嵌入式操作系统基础μC/OSII和Linux  第2版

嵌入式操作系统基础μC/OSII和Linux 第2版PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:任哲,樊生文编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2011
  • ISBN:9787512405493
  • 页数:530 页
图书介绍:本书为《嵌入式操作系统基础μC/OS-II和Linux》的第2版,本书继承了第1版的写作风格,仍以操作系统的初学者和高等学校学生为对象,首先介绍了便于学习和理解的微内核μC/OS-II,从而使读者快速了解嵌入式实时操作系统的主要组成
《嵌入式操作系统基础μC/OSII和Linux 第2版》目录

第1章 操作系统的基本概念 1

1.1 计算机操作系统 1

1.1.1 什么是计算机操作系统 1

1.1.2 操作系统的功能 2

1.1.3 操作系统的服务和用户接口 7

1.2 操作系统的内核是由中断驱动的 9

1.2.1 中断和中断处理 9

1.2.2 系统时钟的实现 11

1.3 进程和线程的基本概念 11

1.3.1 进程的概念 11

1.3.2 进程的结构 13

1.3.3 线程的概念 15

1.4 进程管理 16

1.4.1 进程(线程)调度 17

1.4.2 进程(线程)的同步与通信 20

1.4.3 进程的其他管理 22

1.5 存储管理 22

1.5.1 计算机存储器的层次 22

1.5.2 存储空间的段页式分区 23

1.5.3 虚拟存储器的概念 25

1.6 I/O与设备管理 26

1.6.1 I/O设备及其抽象 26

1.6.2 操作系统的设备无关性 27

1.6.3 操作系统对设备的管理 28

1.7 文件管理 29

1.7.1 文件、文件结构和文件系统 30

1.7.2 文件的管理 31

1.8 宏内核与微内核 32

1.8.1 内核 32

1.8.2 简述宏内核与微内核 33

1.9 操作系统的分类 35

1.9.1 单用户操作系统 35

1.9.2 批处理操作系统 35

1.9.3 分时操作系统 35

1.9.4 实时操作系统 36

1.10 操作系统的Shell 36

1.11 操作系统的引导和装入 37

1.12 本章小结 38

第2章 实时操作系统的基本概念 40

2.1 实时系统及其特点 40

2.1.1 什么是实时系统 40

2.1.2 实时系统的特点 42

2.2 计算机实时操作系统 43

2.2.1 实时操作系统 43

2.2.2 关于内核的可剥夺性 46

2.2.3 实时调度 47

2.2.4 实时进程的可调度性 50

2.2.5 实时系统的时钟 51

2.2.6 实时系统的存储管理 52

2.2.7 实时系统与普通系统的比较 53

2.3 本章小结 53

第3章 嵌入式系统和嵌入式实时操作系统 54

3.1 嵌入式系统的基本概念 54

3.1.1 什么是嵌入式系统 54

3.1.2 嵌入式系统的发展历程 56

3.1.3 嵌入式系统的特点 58

3.2 嵌入式实时操作系统 59

3.2.1 什么是嵌入式实时操作系统 59

3.2.2 微内核 60

3.2.3 嵌入式实时操作系统的可裁剪性及其实现 62

3.3 常见的嵌入式实时操作系统简介 63

3.3.1 常见的源码开放的嵌入式操作系统 63

3.3.2 常见的商业嵌入式操作系统 65

3.4 本章小结 67

第4章 嵌入式实时操作系统μC/OS-Ⅱ及其任务 68

4.1 μC/OS-Ⅱ概述 68

4.1.1 μC/OS-Ⅱ的特点 68

4.1.2 μC/OS-Ⅱ的文件结构 70

4.1.3 μC/OS-Ⅱ可裁剪性的实现 73

4.2 μC/OS-Ⅱ的任务 74

4.3 μC/OS-Ⅱ任务的存储结构 74

4.4 μC/OS-Ⅱ任务的状态 76

4.5 μC/OS-Ⅱ任务的优先级别 77

4.6 任务控制块 78

4.6.1 任务控制块的结构 78

4.6.2 任务控制块链表 79

4.7 任务堆栈 82

4.7.1 任务堆栈的创建 82

4.7.2 任务堆栈的初始化 85

4.8 系统任务 85

4.8.1 空闲任务 85

4.8.2 统计任务 86

4.9 临界区 87

4.10 本章小结 87

第5章 μC/OS-Ⅱ的任务管理 88

5.1 就绪任务的管理 88

5.1.1 就绪任务表的结构 88

5.1.2 就绪任务表的操作 90

5.2 任务的创建 93

5.2.1 用函数OSTaskCreate()创建任务 93

5.2.2 用函数OSTaskCreateExt()创建任务 96

5.2.3 创建任务的一般方法 97

5.3 任务的挂起和恢复 100

5.3.1 挂起任务 101

5.3.2 恢复任务 102

5.4 其他任务管理函数 103

5.4.1 任务优先级别的修改 103

5.4.2 任务的删除 103

5.4.3 查询任务的信息 106

5.5 本章小结 106

第6章 μC/OS-Ⅱ的任务调度 107

6.1 调度器OSSched()的任务调度部分 107

6.2 调度器OSSched()的任务切换部分 109

6.2.1 任务断点的保存 110

6.2.2 任务的切换 110

6.3 调度的时机 113

6.4 本章小结 113

第7章 μC/OS-Ⅱ的初始化和启动 114

7.1 μC/OS-Ⅱ的初始化 114

7.1.1 μC/OS-Ⅱ需要初始化的数据结构及全局变量 114

7.1.2 μC/OS-Ⅱ的初始化 115

7.2 μC/OS-Ⅱ的启动 117

7.3 一个示例 120

7.4 本章小结 128

第8章 μC/OS-Ⅱ的中断与时钟 129

8.1 μC/OS-Ⅱ的中断 129

8.1.1 μC/OS-Ⅱ的中断过程 129

8.1.2 中断级任务切换函数 133

8.1.3 临界段的处理 133

8.2 μC/OS-Ⅱ的时钟 135

8.3 μC/OS-Ⅱ的时间管理 137

8.3.1 任务的延时 137

8.3.2 取消任务的延时 138

8.3.3 获取和设置系统时间 140

8.4 本章小结 140

第9章 任务的同步与通信 141

9.1 任务间的同步和事件控制块 141

9.1.1 任务间的同步 141

9.1.2 事件 142

9.1.3 事件控制块 155

9.1.4 事件控制块的基本操作函数 156

9.1.5 空事件控制块链表 158

9.2 信号量及其操作 159

9.2.1 信号量 159

9.2.2 信号量的操作 160

9.3 任务优先级反转和互斥型信号量 167

9.3.1 任务优先级的反转现象 168

9.3.2 互斥型信号量 173

9.4 消息邮箱及其操作 176

9.4.1 消息邮箱 176

9.4.2 消息邮箱的操作 177

9.5 消息队列及其操作 182

9.5.1 消息队列 182

9.5.2 消息队列的操作 186

9.6 本章小结 192

第10章 信号量集 193

10.1 信号量集的结构 193

10.1.1 信号量集的标志组 193

10.1.2 等待任务链表 194

10.1.3 对等待任务链表的操作 196

10.2 信号量集的操作 198

10.2.1 创建信号量集 198

10.2.2 请求信号量集 200

10.2.3 向信号量集发送信号 200

10.2.4 查询信号量集的状态 201

10.2.5 删除信号量集 201

10.3 本章小结 201

第11章 μC/OS-Ⅱ的内存管理 202

11.1 内存控制块 202

11.1.1 内存的划分 202

11.1.2 内存控制块OS_MEM的结构 203

11.1.3 空内存控制块链表 204

11.2 内存的管理 204

11.2.1 创建内存分区 205

11.2.2 请求获得一个内存块 207

11.2.3 释放一个内存块 209

11.2.4 查询一个内存分区的状态 210

11.3 本章小结 210

第12章 关于μC/OS-Ⅱ的其他问题 211

12.1 关于μC/OS-Ⅱ的几个问题 211

12.1.1 μC/OS-Ⅱ只是一个微内核 211

12.1.2 关于μC/OS-Ⅱ的Shell 211

12.2 μC/OS-Ⅱ在PC机上的测试台 212

12.3 μC/OS-Ⅱ在PC机上的移植 213

12.3.1 任务切换函数OSCtxSw() 213

12.3.2 任务切换宏OS_TASK_SW() 214

12.3.3 中断级任务切换函数OSIntCtxSw() 215

12.3.4 PC机中DOS的系统时钟 217

12.3.5 PC机中μC/OS-Ⅱ的系统时钟 217

12.3.6 μC/OS-Ⅱ系统时钟中断服务程序 218

12.3.7 在任务中安装μC/OS-Ⅱ系统时钟的中断向量 219

12.3.8 在任务中由μC/OS-Ⅱ返回DOS环境 219

12.4 本章小结 220

第13章 基于ARM的μC/OS-Ⅱ 221

13.1 移植规划 221

13.1.1 编译器的选择 221

13.1.2 ARM7工作模式的选择 221

13.2 移植 222

13.2.1 文件OS_CPU.H的编写 222

13.2.2 文件OS_CPU_C.C的编写 224

13.2.3 文件OS_CPU_A.S的编写 230

13.2.4 关于中断及时钟节拍 233

13.3 移植μC/OS-Ⅱ到LPC2000 235

13.3.1 挂接SWI软件中断 236

13.3.2 中断及时钟节拍中断 236

13.3.3 一个基于μC/OS-Ⅱ和ARM的应用程序实例 237

13.4 本章小结 239

第14章 Linux基础知识 240

14.1 Linux系统简介 240

14.1.1 Linux系统的结构及特点 241

14.1.2 Linux内核版本 243

14.2 Linux系统的嵌入式应用 243

14.3 Linux中的C语言和汇编语言 247

14.3.1 Linux中的C语言 247

14.3.2 Linux中的汇编语言 248

14.4 Linux中的链表 249

14.4.1 Linux链表的设计思想 249

14.4.2 链表头的创建及链表节点的插入 251

14.4.3 链表节点的访问 252

14.4.4 链表的其余操作 254

14.4.5 哈希链表 255

14.5 Linux模块 256

14.5.1 模块的基本框架代码 256

14.5.2 模块的辅助框架代码 260

14.5.3 Linux模块的实现机制及其管理 262

14.5.4 模块的内核描述 265

14.6 本章小结 268

第15章 Linux的内存管理 269

15.1 内存管理的目标 269

15.2 虚拟内存 269

15.2.1 虚拟内存的概念 270

15.2.2 Linux的虚拟内存技术 275

15.2.3 Linux的页表结构 280

15.3 Linux物理内存的管理 282

15.3.1 Linux物理页框的描述 282

15.3.2 物理页框的分配与回收 283

15.4 Linux虚拟内存空间描述 285

15.4.1 虚拟内存区的描述 285

15.4.2 程序与虚拟内存和物理内存的关系 289

15.5 Linux的内核空间 290

15.5.1 内核空间与用户空间的关系 290

15.5.2 内核空间的总体布局 291

15.5.3 内核空间的高端内存 293

15.5.4 内核内存分配修饰符gfp 295

15.5.5 内核常用内存分配及地址映射函数 297

15.6 内核空间的slab分配模式 303

15.7 Linux内存管理的总貌 306

15.8 本章小结 307

第16章 Linux进程及其管理 308

16.1 Linux进程 308

16.1.1 进程及其私有内存空间 308

16.1.2 Linux进程的状态 311

16.1.3 Linux的进程控制块 312

16.2 Linux进程的创建 314

16.2.1 子进程的创建 315

16.2.2 与进程相关的系统调用 320

16.2.3 内核中的进程与线程 327

16.3 Linux进程调度 329

16.3.1 Linux进程的时间片与权重参数 330

16.3.2 调度策略 331

16.3.3 普通进程调度策略 331

16.3.4 实时进程调度策略 333

16.3.5 Linux调度时机 334

16.4 Linux 2.6对调度器的改进 335

16.4.1 就绪进程队列runqueue 335

16.4.2 优先级的计算方法 339

16.5 本章小结 341

第17章 中断/异常和系统调用 342

17.1 处理器的硬件中断机制 342

17.1.1 中断及中断向量表 342

17.1.2 异常 344

17.1.3 陷阱 345

17.1.4 中断处理过程 345

17.2 Linux的两级中断 346

17.3 Linux硬中断结构 347

17.3.1 中断通道 347

17.3.2 中断请求队列 348

17.3.3 通道的中断处理程序IRQn_interrupt 351

17.4 Linux软中断结构 355

17.4.1 以前的bottom half 355

17.4.2 任务队列 357

17.4.3 Linux的软中断及小任务机制 359

17.4.4 Linux系统中的中断实例——系统时钟 364

17.4.5 Linux系统中的软中断实例——软件定时器 367

17.5 系统调用 368

17.5.1 系统调用、封装例程和内核服务例程 368

17.5.2 Linux的系统调用 369

17.6 本章小结 374

第18章 Linux文件系统 376

18.1 文件与文件系统 376

18.1.1 文件的基本概念 376

18.1.2 用户对文件的主要操作 379

18.2 文件的存储 380

18.2.1 文件的简单存储方式 380

18.2.2 存储块的组织方式 381

18.2.3 空闲块的记录 383

18.3 文件目录 384

18.3.1 一体化目录 384

18.3.2 分立式目录 384

18.3.3 硬连接与符号连接 385

18.3.4 目录树及根目录 386

18.3.5 磁盘文件系统 387

18.4 Ext2文件系统 388

18.4.1 Ext2的索引节点 388

18.4.2 Ext2的目录文件及目录项 390

18.4.3 Ext2在磁盘上的存储结构 392

18.4.4 Ext2文件的用户操作函数集 395

18.5 其他常用文件系统 395

18.5.1 一般文件系统 395

18.5.2 基于日志的文件系统 396

18.6 操作系统的文件管理系统 397

18.6.1 文件管理系统与磁盘文件系统的关系 397

18.6.2 文件缓冲区 399

18.6.3 文件系统的层次结构 399

18.6.4 虚拟文件系统 400

18.7 Linux的虚拟文件系统 400

18.7.1 VFS的原理 401

18.7.2 VFS的超级块 402

18.7.3 VFS的dentry结构 405

18.7.4 VFS的i节点 406

18.7.5 文件缓冲区 409

18.8 Linux的Proc文件系统简介 412

18.9 操作系统对文件系统的管理 413

18.10 文件与进程的关联 415

18.10.1 进程与其打开文件的关系 415

18.10.2 系统打开和关闭文件表 419

18.11 根据文件路径查找索引节点 419

18.12 进程创建时文件的复制和共享 422

18.13 本章小结 422

第19章 Linux进程通信 424

19.1 基本概念 424

19.2 System V IPC机制简介 426

19.3 共享内存 428

19.3.1 共享内存原理与shm系统 429

19.3.2 Linux共享内存结构 430

19.3.3 共享内存的使用 431

19.4 消息队列 438

19.4.1 消息的结构 439

19.4.2 消息队列的结构 440

19.4.3 消息队列的创建与打开 443

19.4.4 消息队列的读/写 443

19.5 管道 446

19.5.1 匿名管道 446

19.5.2 命名管道 451

19.6 Linux的信号 452

19.6.1 基本概念 452

19.6.2 信号的发送 454

19.6.3 信号的安装 454

19.6.4 进程的信号向量表 457

19.6.5 进程响应信号的时机 458

19.6.6 信号的生命期及可靠性 459

19.7 本章小结 461

第20章 Linux的同步控制 462

20.1 概述 462

20.1.1 竞争、临界区与互斥 463

20.1.2 信号量与P、V操作 464

20.1.3 临界段代码格式 465

20.1.4 用信号量实现同步 466

20.2 Linux信号量集 467

20.2.1 信号量集的结构 467

20.2.2 信号量集的操作 470

20.2.3 进程控制块中关于信号量集的域 479

20.3 本章小结 480

第21章 Linux设备驱动 481

21.1 概述 481

21.1.1 设备分类 481

21.1.2 外部设备控制器 483

21.1.3 总线 485

21.1.4 外部设备与处理器的交互方式 486

21.1.5 设备管理任务 487

21.2 设备驱动程序 488

21.2.1 设备驱动程序框架 489

21.2.2 缓冲区及设备驱动程序的特点 490

21.3 设备驱动程序及其内核接口 491

21.3.1 设备标识 491

21.3.2 字符设备和块设备 491

21.3.3 系统调用入口点 492

21.4 设备管理 492

21.4.1 设备控制块 492

21.4.2 设备文件 494

21.5 Linux设备驱动程序 496

21.5.1 Linux设备驱动程序框架 496

21.5.2 驱动程序函数跳转表 497

21.5.3 Linux设备文件与设备驱动之间的关系 497

21.6 Linux字符设备驱动程序 499

21.6.1 Linux设备驱动程序函数集 499

21.6.2 Linux的设备号 503

21.6.3 Linux字符设备驱动程序设计及示例 503

21.7 本章小结 512

第22章 μCLinux简介 513

22.1 Linux在嵌入式应用中的局限 513

22.2 μCLinux的架构 514

22.3 μCLinux的内存管理 515

22.3.1 无MMU的内存管理 515

22.3.2 内存管理的Flat模式 515

22.3.3 内存管理模块的启动与初始化 516

22.3.4 Flat可执行文件格式 517

22.4 μCLinux的文件系统 517

22.4.1 romfs文件系统 518

22.4.2 ramfs文件系统 521

22.4.3 闪存与JFFS2文件系统 522

22.5 μCLinux的开发环境 528

22.6 本章小结 529

参考文献 530

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