当前位置:首页 > 工业技术
嵌入式操作系统基础μC/OS-II和Linux
嵌入式操作系统基础μC/OS-II和Linux

嵌入式操作系统基础μC/OS-II和LinuxPDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:任哲,潘树林,房红征编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2006
  • ISBN:7810778978
  • 页数:422 页
图书介绍:本书以操作系统的初学者和高等院校学生为对象,在介绍操作系统级嵌入式实时系统的基本概念后,以微内核UC/OS-II为切入点,介绍嵌入式实时系统的主要组成,功能和特点。然后从主要数据结构的角度介绍源码发放的操作系统Linux。最后,简单的介绍了Linux的嵌入式版本ucLinux。另外,还用一定篇幅介绍了实时系统的基本概念和特点。
《嵌入式操作系统基础μC/OS-II和Linux》目录

第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.10 操作系统的Shell 36

1.9.4 实时操作系统 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.3 μC/OS-Ⅱ任务的存储结构 74

4.2 μ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.2 任务的切换 110

6.2.1 任务断点的保存 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.1 μC/OS-Ⅱ的中断 129

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

第8章 μ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.1 任务间的同步和事件控制块 141

9.1.1 任务间的同步 141

第9章 任务的同步与通信 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.1 创建信号量集 198

10.2 信号量集的操作 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.1 文件OS_CPU.H的编写 222

13.2 移植 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.1 Linux系统简介 240

14.1.1 Linux系统的发展 240

第14章 Linux基础知识 240

14.1.2 Linux系统的结构 241

14.1.3 Linux系统的特点 241

14.1.4 Linux内核的版本号 243

14.1.5 Linux的一些商业版 243

14.2 Linux系统的嵌入式应用 244

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

14.3.1 Linux中的C语言 247

14.3.2 Linux中的汇编语言 248

14.4 Linux的链表数据结构 249

14.4.1 Linux链表的设计思想 250

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

14.4.3 链表节点的访问 253

14.4.4 链表的其余操作的宏和函数 254

14.4.5 哈希链表 255

14.4.6 RCU(Read-Copy Update) 256

14.5 本章小结 256

第15章 Linux的进程 257

15.1 Linux的进程 257

15.1.1 Linux进程的状态 257

15.1.2 Linux用户进程的组成 258

15.1.3 Linux的进程控制块 259

15.2 Linux进程的创建 261

15.2.1 系统调用fork() 262

15.2.2 系统调用execve() 265

15.2.3 系统调用exit() 266

15.2.4 系统调用wait() 267

15.2.5 系统调用vfork() 267

15.3 Linux的进程调度 268

15.3.1 进程的运行队列 268

15.3.2 调度原则 268

15.3.3 普通进程的调度策略 269

15.3.4 实时进程的调度策略 272

15.3.5 Linux的调度时机 273

15.3.6 Linux调度的实时性 273

15.4.2 优化了的优先级计算方法 274

15.4 Linux 2.6对调度器的改进 274

15.4.1 就绪进程队列runqueue 274

15.5 本章小结 277

第16章 Linux的内存管理 278

16.1 内存管理的目标 278

16.2 虚拟内存 279

16.2.1 虚拟内存的概念 279

16.2.2 Linux的虚拟内存技术 284

16.2.3 Linux的页表结构 290

16.3 Linux虚拟内存空间的结构 291

16.3.1 Linux虚拟内存的用户空间 292

16.3.2 Linux虚拟内存的内核空间 296

16.4.1 Linux描述物理内存的数据结构 299

16.4 Linux的物理内存结构及管理 299

16.4.2 Linux进程与物理内存的关系 300

16.5 进程与虚拟内存和物理内存的关系 301

16.6 物理内存的分配与回收 301

16.6.1 物理页框的分配 302

16.6.2 物理页框的回收 303

16.6.3 守护进程 304

16.7 Linux内存管理的总貌 304

16.8 内核空间的slab分配模式 305

16.9 本章小结 308

17.1.1 文件的基本概念 309

第17章 Linux的文件系统 309

17.1 文件及文件系统 309

17.1.2 文件系统的一般结构 310

17.2 文件的存储方式 311

17.2.1 文件存储的物理结构 311

17.2.2 链接分配方式 311

17.2.3 文件的索引分配方式 313

17.2.4 空闲空间的管理 313

17.3 目录文件及其结构 314

17.3.1 一体化目录文件 314

17.3.2 分立式目录文件 315

17.4.1 常用的文件系统 316

17.4 常用的文件系统及文件系统的基本组成 316

17.4.2 文件系统基本组成与实现 317

17.5 Ext2文件系统 317

17.5.1 Ext2的索引节点 317

17.5.2 Ext2的目录及目录项 320

17.5.3 Ext2文件系统在外存上的存储结构 322

17.5.4 Ext2文件的操作函数集 325

17.6 Linux的虚拟文件系统 325

17.6.1 虚拟文件系统的基本概念 325

17.6.2 VFS的超级块 327

17.6.3 VFS的dentry结构 328

17.6.4 VFS的i节点 330

17.6.5 VFS与实际文件系统的关系 331

17.7 文件的页缓冲区 332

17.8 文件系统的注册、安装与卸载 333

17.9 Linux的proc文件系统 336

17.9.1 proc文件系统的作用 336

17.9.2 proc文件系统的安装 337

17.10 文件系统与进程的关联 337

17.10.1 进程与其打开文件的关系 337

17.10.2 进程与文件系统的关系 340

17.10.3 进程与文件系统及其所打开文件的关系 340

17.12 本章小结 341

17.11 VFS的操作界面 341

第18章 Linux的中断、时钟和系统调用 343

18.1 Linux外部中断程序的前半部分和后半部分 343

18.2 Linux的外部中断及其前半部分的执行 344

18.2.1 中断通道 344

18.2.2 中断源及中断服务例程 345

18.2.3 中断请求队列 345

18.2.4 通道的中断处理程序IRQn_interrupt 349

18.3 Linux中断后半部分的执行 352

18.3.1 历史上的bottom half 352

18.3.2 任务队列 354

18.3.3 Linux的小任务机制 356

18.3.4 软中断 359

18.4 Linux的时钟与时间系统 361

18.4.1 时钟及时钟中断 361

18.4.2 Linux的时间系统 362

18.5 Linux的系统调用 362

18.5.1 系统调用接口、系统调用例程和内核服务例程的概念 363

18.5.2 系统调用接口、系统调用例程和内核服务例程的实现 364

18.5.3 内核服务例程与系统调用接口 367

18.5.4 用户自定义系统调用例程 367

18.6 本章小结 368

第19章 Linux模块简介 370

19.1 模块的基本概念 370

19.1.1 什么是模块 370

19.1.2 模块示例 371

19.2 Linux模块的实现机制 373

19.2.1 可移出符号 373

19.2.2 模块的引用计数器 374

19.2.3 模块的结构 374

19.2.4 modutils程序 375

19.3 本章小结 375

20.1.1 设备的标识 376

20.1.2 块设备和字符设备 376

第20章 Linux的设备驱动基础 376

20.1 外部设备的基本概念 376

20.1.3 外部设备的硬件接口 377

20.1.4 外部设备与处理器的联络方式 378

20.2 设备驱动程序的基本概念 378

20.2.1 设备驱动程序的函数跳转表 378

20.2.2 设备驱动程序中的中断服务程序 379

20.2.3 Linux的设备驱动程序应是一个内核模块 379

20.3 字符设备驱动程序的注册 381

20.4 设备驱动程序对存储器的使用 382

20.5 设备文件 382

20.5.1 设备文件的基本概念 382

20.5.3 设备文件及操作接口 383

20.5.2 设备文件与设备驱动程序之间的关系 383

20.6 本章小结 384

第21章 Linux进程的同步与通信 385

21.1 管道 385

21.1.1 匿名管道 385

21.1.2 命名管道 390

21.2 信号 390

21.2.1 信号的基本概念 391

21.2.2 进程对信号的响应 391

21.2.3 信号的安装 392

21.2.4 信号的发送 393

21.3.1 System V IPC 394

21.2.5 可靠信号与不可靠信号 394

21.3 System V IPC机制 394

21.3.2 消息队列 396

21.3.3 共享内存 400

21.3.4 信号量集 402

21.4 本章小结 403

第22章 μCLinux简介 405

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

22.2 μCLinux的架构 406

22.3 μCLinux的内存管理 407

22.3.1 无MMU的内存管理 407

22.3.2 内存管理的Flat模式 407

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

22.3.4 Flat可执行文件格式 409

22.4 μCLinux的文件系统 409

22.4.1 romfs文件系统 410

22.4.2 ramfs文件系统 413

22.4.3 闪存与JFFS2文件系统 414

22.5 μCLinux的开发环境 420

22.5.1 GNU开发套件 420

22.5.2 μCLinux的打印终端 420

22.5.3 交叉编译调试工具 420

22.6 本章小结 421

参考文献 422

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