学习张帆的《windows驱动开发技术详解》,由此整理。。。


windows特性

(1)可移植性


windows操作系统为了实现在尽可能多的硬件平台上运行,引入了HAL(硬件抽象层)


(2)兼容性


为了实现windows系统不同版本之间的兼容性,保持了大多数的API统一且固定


(3)健壮性和可靠性


源自于分层的设计,配合每层的权限不同来实现。大致上分为用户模式和内核模式,用户模式具有最低的权限,对操作系统的操作仅仅限制于API的使用。(注意:权限是由CPU的特权分层来实现的,应用程序运行在Ring3层,拥有最低的权限,内核运行在Ring0层,拥有最大的权限。)API是操作系统提供给应用程序唯一的接口。当应用程序访问硬件设备是,必须向操作系统提出申请。操作系统会检查应用程序通过API提出的请求,并校验请求的参数是否合法,若非法参数,则返回一个错误码。


(4)可扩展性


可扩展性是指操作系统应该易于增加新的功能和支持新的硬件,并且对已有的代码影响最小。操作系统的结构中内核和执行体组件是分离的,内核只负责关于线程的调度工作。线程运行在自己的线程上下文中,线程上下文是指cpu寄存器的状态,例如:堆栈寄存器、指令寄存器、还包括线程ID,线程优先权、线程的本地存储等相关信息。


执行体组件是操作系统的一部分,例如:内存管理组件,进程管理组件,IO设备管理组件等这些统称为执行体组件。此组件按照模块化的方式设计,因此添加新功能和新设备时,增加新的组件即可。


(5)性能


由于分层的设计会影响系统的一些性能,在HAL层,功能调用都是通过宏来实现的。IO操作时基于异步设计的、是基于多线程多进程的操作系统。




windows系统分层