信息科学与技术丛书 操作系统实现之路 作者:辛庆祥 编著出版时间:2013丛编项: 信息科学与技术丛书内容简介 《信息科学与技术丛书:操作系统实现之路》以Hello China操作系统为例,详细讲解了操作系统的内核、文件系统、图形界面、设备驱动程序、SDK 和系统调用等主要功能模块的实现原理。讲解过程中不仅陈述概念,还配以详细的实现源代码对概念进行说明,达到理论联系实际的目的。书中穿插了大量的案例,读者可通过亲手操作这些案例来更加深入地理解操作系统原理。此外,《信息科学与技术丛书:操作系统实现之路》还对操作系统发展趋势和商业模式进行了探讨。《信息科学与技术丛书:操作系统实现之路》可供程序员和计算机相关专业师生阅读。目录出版说明前言第1章 操作系统概述1.1 操作系统的基本概念1.1.1 操作系统的功能1.1.2 操作系统的分类1.1.3 操作系统的发展趋势1.1.4 操作系统的基本概念1.2 嵌入式系统和嵌入式操作系统1.2.1 嵌入式系统概述1.2.2 嵌入式操作系统概述1.2.3 嵌入式操作系统的特点1.2.4 嵌入式操作系统与通用操作系统的区别1.2.5 嵌入式实时操作系统1.3 Hello China操作系统概述1.3.1 Hello China的主要功能1.3.2 Hello China的架构1.3.3 Hello China的主要特点1.3.4 Hello China的应用场景1.3.5 面向对象思想的模拟1.4 实例:一个简单的IP路由器的实现1.4.1 概述1.4.2 路由器的硬件结构1.4.3 路由器的软件功能1.4.4 各任务的实现第2章 Hello China的安装和使用2.1 Hello China安装概述2.2 Hello China在Virtual PC上的安装2.2.1 Hello China在Virtual PC上的启动过程2.2.2 Hello China在Virtual PC上的安装过程2.3 Hello China在物理计算机上的安装2.3.1 安装注意事项2.3.2 在Windows XP操作系统上的安装2.3.3 在Windows 7操作系统上的安装2.4 Hello China的卸载2.5 Hello China的使用2.6 内核的编译和生成2.6.1 Hello China内核的开发环境2.6.2 开发环境的搭建2.6.3 内核映像文件的生成第3章 Hello China的引导和初始化3.1 概述3.2 个人计算机的引导和初始化3.2.1 BIOS的引导工作3.2.2 硬盘逻辑结构及引导扇区的功能3.2.3 操作系统引导扇区的功能和局限3.2.4 预置引导法概述3.2.5 预置引导法在FAT32文件系统上的实现3.2.6 预置引导法在NTFS文件系统上的实现3.2.7 通过软盘启动Hello China3.3 嵌入式操作系统的引导和初始化3.3.1 典型嵌入式系统内存映射布局3.3.2 嵌入式系统的启动概述3.3.3 常见嵌入式操作系统的加载方式3.3.4 嵌入式系统软件的写入3.4 Hello China的初始化3.4.1 实地址模式下的初始化3.4.2 保护模式下的初始化3.4.3 操作系统核心功能的初始化3.4.4 Hello China的内存布局图3.5 Hello China的字符shell3.5.1 字符shell的概述和启动3.5.2 shell的消息处理过程3.5.3 实例:增加一个字符shell内置命令3.6 从保护模式切换回实模式3.6.1 模式切换概述3.6.2 实模式服务调用举例3.6.3 保护模式切换到实模式3.7 引导和初始化总结第4章 Hello China线程的实现4.1 进程、线程和任务4.2 Hello China的线程实现4.2.1 核心线程管理对象4.2.2 线程的状态及其切换4.2.3 核心线程对象4.2.4 线程的上下文4.2.5 线程的创建和初始化4.2.6 线程的结束4.2.7 线程的消息队列4.2.8 线程的切换-中断上下文4.2.9 线程的切换-系统调用上下文4.2.10 上下文保存和切换的底层函数4.2.11 线程的睡眠与唤醒4.2.12 核心线程实现总结第5章 内存管理机制5.1 内存管理机制概述5.2 IA32 CPU内存管理机制5.2.1 IA32 CPU内存管理机制概述5.2.2 几个重要的概念5.2.3 分段机制的应用5.2.4 分页机制的应用5.3 Power PC CPU的内存管理机制5.4 Hello China内存管理模型5.4.1 Hello China的内存管理模型5.4.2 Hello China的内存布局5.4.3 核心内存池的管理5.4.4 页框管理对象5.4.5 页面索引对象5.4.6 虚拟内存管理对象5.5 线程本地堆5.5.1 线程本地堆概述5.5.2 堆的功能需求定义5.5.3 堆的实现概要5.5.4 堆的详细实现5.6 Hello China的内存管理机制总结第6章 系统调用的原理与实现6.1 系统调用概述6.2 Hello China系统调用的实现6.3 系统调用时的参数传递第7章 线程互斥和同步机制的实现7.1 互斥和同步概述7.2 关键区段概述7.3 关键区段产生的原因7.3.1 多个线程之间的竞争7.3.2 中断服务程序与线程之间的竞争7.3.3 多个CPU之间的竞争7.4 单CPU下关键区段的实现7.5 多CPU下关键区段的实现7.5.1 多CPU环境下的实现方式7.5.2 Hello China的未来实现7.6 Power PC下关键区段的实现7.6.1 Power PC提供的互斥访问机制7.6.2 多CPU环境下的互斥机制7.7 关键区段使用注意事项7.8 Semaphore概述7.9 Semaphore对象的定义7.10 Semaphore对象的实现7.10.1 Initialize和Uninitialize的实现7.10.2 WaitForThisObject的实现7.10.3 WaitForThisObjectEx的实现7.10.4 ReleaseSemaphore的实现7.11 互斥和同步机制总结第8章 中断和定时处理机制的实现8.1 中断和异常概述8.2 硬件相关部分处理8.2.1 IA32中断处理过程8.2.2 IDT初始化8.3 硬件无关部分处理8.3.1 系统对象和中断对象8.3.2 中断调度过程8.3.3 缺省中断处理函数8.4 对外服务接口8.5 系统时钟中断8.5.1 系统时钟中断概述8.5.2 系统时钟中断的初始化8.5.3 系统时钟中断处理函数的主要工作8.5.4 时钟中断周期对系统实时性的影响分析8.6 注意事项8.7 定时器概述8.7.1 SetTimer函数的调用8.7.2 CancelTimer函数的调用8.7.3 ResetTimer函数的调用8.8 设置定时器操作8.9 定时器超时处理8.10 定时器取消处理8.11 定时器复位8.12 定时器注意事项第9章 系统总线和设备管理9.1 系统总线概述9.1.1 系统总线9.1.2 总线管理模型9.1.3 设备标识符9.2 系统资源管理9.2.1 资源描述对象9.2.2 IO端口资源管理9.3 驱动程序接口9.3.1 GetResource9.3.2 GetDevice9.3.3 CheckPortRegion9.3.4 ReservePortRegion9.3.5 ReleasePortRegion9.3.6 AppendDevice9.3.7 DeleteDevice9.4 PCI总线驱动程序概述9.4.1 PCI总线概述9.4.2 PCI设备的配置空间9.4.3 配置空间关键字段的说明9.4.4 PCI配置空间的读取与设置9.5 PCI总线驱动程序的实现9.5.1 探测PCI总线是否存在9.5.2 对普通PCI设备进行枚举9.5.3 配置PCI桥接设备第10章 设备驱动程序管理10.1 设备管理框架10.1.1 概述10.1.2 通用的操作系统设备管理机制10.1.3 设备管理框架的实现10.1.4 IO管理器10.2 设备驱动程序10.2.1 设备请求控制块10.2.2 设备驱动程序对象的定义10.2.3 设备驱动程序的物理结构10.2.4 设备驱动程序的功能函数10.2.5 DriverEntry的实现10.2.6 UnloadEntry的实现10.3 设备对象10.3.1 设备对象的定义10.3.2 设备对象的命名10.3.3 设备对象的类型10.3.4 设备对象的设备扩展10.3.5 设备的打开操作10.3.6 设备命名策略10.4 设备的中断管理10.5 设备管理实例:串口通信程序10.5.1 串行通信接口概述10.5.2 串行通信编程方式10.6 设备驱动程序管理总结第11章 图形用户界面11.1 图形用户界面概述11.2 符合VESA标准的显示卡操作方法11.2.1 判断显示卡是否支持VBE标准11.2.2 切换到0x118工作模式11.3 对显示设备的封装-Video对象11.3.1 GUI模块的分层架构11.3.2 Video对象11.3.3 通用绘制层简介11.4 鼠标指针的实现11.5 窗口消息传递机制概述11.6 Hello China的窗口机制11.6.1 父窗口要完全包含子窗口11.6.2 二层窗口剪切域11.6.3 二层窗口剪切域的实现11.7 Hello China窗口机制的实现11.7.1 窗口管理器与窗口对象11.7.2 窗口函数与窗口消息11.7.3 窗口归属线程11.7.4 窗口树11.8 用户输入处理和消息传递11.8.1 用户输入和消息传递过程简介11.8.2 设备驱动程序的工作11.8.3 设备输入管理器11.8.4 GUI原始输入线程-GUIRAWIT11.8.5 消息循环的本质11.8.6 应用线程之间的窗口消息交互11.9 Hello China的GUI Shell11.9.1 GUI Shell概述11.9.2 GUI Shell的启动和初始化11.9.3 加载一个应用程序11.9.4 GUI Shell的退出11.10 GUI模块的开发方法第12章 文件系统及其实现12.1 文件系统概述12.1.1 文件系统的基本概念12.1.2 文件系统的操作——fs程序12.2 FAT32文件系统原理12.2.1 FAT32卷的布局12.2.2 引导扇区和BPB12.2.3 文件分配表12.2.4 文件目录项12.2.5 文件的查找12.3 Hello China文件系统的实现12.3.1 IO管理器12.3.2 文件系统的加载和初始化12.3.3 存储设备驱动程序12.3.4 分区的识别和安装12.3.5 文件的打开操作12.3.6 文件的读取操作12.4 文件系统API的使用举例12.5 文件系统实现总结第13章 应用程序开发方法13.1 概述13.2 HCX文件的结构和加载过程13.2.1 HCX文件的格式13.2.2 HCX文件的生成方式13.2.3 HCX文件的加载和执行13.3 Hello China应用程序开发步骤13.3.1 建立应用程序开发环境13.3.2 启动VS 2008,建立一个新的应用程序13.3.3 在应用程序中添加源代码13.3.4 对新建的应用程序进行设置13.3.5 编写应用程序代码,并进行编译链接13.3.6 对生成的DLL进行处理,形成HCX文件13.3.7 运行生成的HCX文件13.4 应用程序开发总结第14章 开发辅助工具14.1 开发辅助工具概述14.2 PE文件格式简介14.2.1 MS-DOS头和DOS stub程序14.2.2 PE文件头14.2.3 PE文件中的节14.3 开发辅助工具的实现和使用14.3.1 process工具14.3.2 hcxbuild工具14.3.3 append工具14.3.4 vfmaker工具14.3.5 dumpf32和mkntfsbs工具附录附录A 关于操作系统开发的两篇博文A.1 操作系统开发过程应遵循的一些原则A.2 对操作系统开发的一些相关问题的思考附录B 源代码组织结构说明附录C 内核开发环境的搭建C.1 概述C.2 Microsoft Visual C++的设置C.3 操作系统开发中常用的Microsoft Visual C++特性C.4 搭建操作系统开发环境C.5 操作系统核心模块开发示例参考文献 上一篇: 信息科学与技术丛书 HTML5,CSS3,JavaScript 开发手册 下一篇: 银行业信息化丛书 商业银行私有云设计与实现 金磐石等编著