日期:2014-05-16  浏览次数:20706 次

熬之滴水成石:最想深入了解的内容--windows内核机制(2)

                                                                                            54-复杂的windows系统

可以说windows是一个复杂的系统,也是许多IT人士接触最为多的一个操作系统。当然windows无论在国外还是在世界范围内都有广泛的客户群体。那么在这个操作系统中会是一个怎样的结构呢?我们知道操作系统其实可以称之为软件,但它是需要跟硬件打交道的,专门负责硬件资源的管理和分配。我们知道在操作系统中最为熟悉的原理就是IPC进程通讯了,为应用程序之间提供交互。Windows内部的结构其实可以分为两层,一层是内核模式,一层为用户模式。所以相应的应用都是在两个各自隔离的领域运行的。在winodws中,在32系统中,内核代码可以访问当前进程整个4GB的虚拟地址空间,但用户代码只能访问2GB的虚拟地址。windows的实际从一开始实际上就是围绕着支持多环境子系统的OS。这也是windows的特点之一,子系统,它与系统内核一起构建成用户应用程序的之行环境。在OS中还包括一组系统进程和服务进程,这些就为OS提供了会话管理、用户登陆、注销等服务。

好了回到windows里面去,windows的内核其实分成了三块,一块是硬件层,这一层其实就是处理所有与硬件设备相关的请求,也就是说但凡和硬件打交道的处理方式都放到了这个层面。在驾驭在硬件层之上的则是称之为内核层,这一层主要就是操作系统,我们熟悉的进程、线程管理,资源处理、同步对象等操作都是在这个层面完成的。在这之上的就是应用层了,在这个层面大多是提供应用程序。windows内核的执行体包括了一个对象管理器,用于一致的管理执行体的对象。可以这样简单的概括,内核体提供了OS的处理机制,windows的核心思想其实就是封装了一个或者多个内核对象,并且通过某种方式提供给应用程序,这种方式充分体现了分离原则,这也与windows是面向对象框架下实现的OS有关,万事万物皆对象。其实windows内核提供给我们用户是一系列的组件,这些组件提供各种功能函数使用,这些组件通常都是一些API。这些llAPI的入口都是一个叫ntdll的动态库。可以说这个DLL就是一个桥梁,让用户模式下的方法连接到了内核模式。所有的API的参数都来之调用的应用程序,可以这么说,所有的API都会检查参数的有效性,通常很多时候用的都是指针,这就必须保证了调用者需要访问指针所指向的内存。我们知道,用户模式下访问地址空间和内核模式是有些不同的。通常在32系统中,用户模式只能访问2GB以下的内存空间。然而内核模式则可以访问整个4GB的虚拟地址范围。我们可以认为2GB以下的为虚拟内存地址空间,2GB以上的为系统地址空间。曾有个高手告诉我,其实在这两者之间还有一个不能访问的区域,这块区域大约有64K大笑,它的作用其实就是用来判断是否越界的,如果有越界的行为,那么则会引起异常。以上三块组成了windows的OS的组成部分,硬件层主要是以hall.dll动态库,实际上它提供了一些例程供内核模块使用。windows会自带许多机器的HAL,但实际在安装系统时就只会安装一个,这些例程实际上就是给驱动程序调用的。说说内核,windows内核实现了抢占式线程的调度机制,按照优先顺序将线程分配到处理器上,并且允许高优先级的线程中断或抢占低优先级的线程。每个处理器上的线程实际上也是由内核来完成的,根据调度规则让处理器来处理当前的线程。windows的内核实际上就是按面向对象的思想来设计的,它管理的对象一个是分发器对象和控制对象。分发器对象实现了各种同步功能,这些对象会影响线程的调度,windows内核实现的分发器对象则包括了事件、进程等。控制器对象被用于控制内核的操作,但不影响线程的调度,它包括异步过程调用、中断对象等。最后是应用层的内核模块上层的部分,这里面大多包括进程和线程管理器、内存管理器、安全引用监视器、I/O管理器、缓存管理器、配置管理器、电源管理器等。

在winodwsOS中,设备驱动程序都是用C++语言来编写的,所以它是非常容易在Windows体系中进行移植。在设备驱动程序中有三种类型,即插即用驱动程序、内核扩展驱动程序、文件系统驱动程序。即插即用管理器是I/O系统的一部分,这也是成了面向对象编写的一种标杆。可以浅显的认知到,每个硬件设备都有一个设备驱动程序栈,其中包含一个总线驱动程序和一个功能驱动程序。I/O管理也是一个复杂的体系,可以单独的篇幅去写。

                                                                                                                                                                       (未完待续..........)