《深入解析Windows操作系统》- 读书笔记(II)

来源:互联网 发布:java io流复制文件夹 编辑:程序博客网 时间:2024/04/30 15:20

System Architecture

第二章. System Architecture

需求

1.     32位、抢先式(preemptive)、可重入(reentrant)的虚拟内存操作系统。

2.     支持多种硬件系统结构和平台。

3.     支持对称多处理器系统(symmetric multiprocessing systems),并能适应处理器的数量。

4.     成为一个分布式计算平台,网络客户或者服务器。

5.     兼容已有的16MS-DOSWindows3.1应用程序。

6.     符合政府对POSIX1003.1兼容性的要求。

7.     符合政府和业界对安全性方面的要求。

8.     支持Unicode,以适应全球市场。

设计目标

1.     扩展性(Extensibility)

2.     可移植性(Portability)

3.     可靠性和健壮性(Reliability and Robustness)

4.     兼容性(Compatibility)

5.     性能(Performance)

总体架构

用户模式:

系统支持进程 登录和会话管理进程;不是Windows服务,不通过服务控制管理器(SCM)来启动。

服务进程 – Windows服务的宿主(host);独立于用户登录。

环境子系统 展示给用户的个性化部分;Windows/POSIX/OS/2

子系统dll – 应用程序不直接调用原始的Windows系统服务,而是通过子系统dll来调用。它将一个已文档化的函数转发为内部(未文档化)Windows系统服务调用。

 

内核模式:

执行体 基本的系统服务,如内存管理,进程和线程管理,安全性,I/O,网络,跨进程通信。

内核(kernel) – 低层次的操作系统功能,如线程调度,中断,异常分发,多处理器同步;内核同时提供一组接口以实现执行体中更高层次的功能。

设备驱动程序 硬件驱动程序和文件系统和网络驱动程序;硬件驱动程序的将用户的I/O函数调用转换成特定的硬件设备I/O请求。

HAL – 将内核、设备驱动程序和执行体的其余部分与平台相关的硬件差异隔离。

窗口和图形系统 实现GUI函数,通常叫做Windows UserGDI函数。

 

 

可移植性

 

分层设计 系统有两个关键组件(内核和HAL)为不同处理器体系结构和平台提供可移植性。与体系结构相关的功能(如线程环境切换和陷阱分发)在内核中实现;在同样的体系结构中,不同系统之间的差异(如不同的主板)HAL中实现。内存管理器也有少部分代码与体系结构相关。

编程语言 主要用c编写,少部分c++。只有需要与硬件直接通信的部分(中断陷阱处理器)和性能敏感的部分(线程环境切换),用汇编编写。

关键的系统组件

 

环境子系统和子系统dll

Windows最初有三个环境子系统:OS/2POSIXWindowsWindows子系统总是运行。

Windows子系统(csrss.exe) - 就如IIS架构中的INET进程,随着其架构的演变,它所含有的功能越来越少:

n  控制台(文本)窗口

n  创建或删除进程和线程

n  16位虚拟DOS机进程的部分支持

n  其他一些函数如GetTempFile()…

内核模式设备驱动程序(Win32K.sys)

n  窗口管理器 控制窗口显示,屏幕输出,采集键盘鼠标输入等

n  图形设备接口(GDI) – 专门针对图形输出设备的函数库,包括文本图形的绘制函数。

子系统dll – Kernel32.dllAdvapi32.dllUser32.dllGdi32.dll;将文档化的Windows API

函数翻译成Ntoskrnl.exeWin32k.sys中的未文档化的内核模式系统服务调用。

Ntdll.dll

系统服务分发存根(stubs),它们会调用执行体系统服务。如NtCreateFileNtSetEvent等。

内部支持函数,共子系统,子系统dll以及其他原生映像文件使用。如映像加载器(Ldr),堆管理器,Windows子系统进程通信函数(Csr),一般的运行库函数(Rtl),以及用户模式下的APC

执行体

n  系统服务 - 用户模式调用的导出函数

n  配置管理器 负责注册表的实现和管理。

n  进程线程管理器 创建或终止进程和线程;底层支持在内核中实现。

n  安全引用监视器(SRM) – 强制在本地计算机上实现安全策略;保护操作系统的资源,执行运行时对象的保护和审计。

n  I/O管理器 实现与设备无关的I/O操作;负责将I/O操作分派到适当的设备驱动程序处理。

n  PnP管理器 支持一定的设备,确定哪些驱动程序是必须的并加载这些驱动程序。

n  电源管理器 负责协调电源事件,并且向设备驱动程序产生电源管理I/O通知。比如,当系统空闲的时候,通知CPU置于休眠状态而降低消耗。

n  高速缓存管理器 提高以文件为基础的I/O操作的性能。

n  内存管理器 实现虚拟内存。

四组支持函数:

n  对象管理器 创建管理Windows执行体对象和抽象数据类型。如进程、线程对象等。

n  LPC设施 在同一台机器上的进程间传递消息。

n  公共运行库 如字符串处理,算术操作等。

n  执行体支持函数 系统内存分配,互锁的内存访问。

内核

内核是由Ntoskrnl.exe中的一组函数(如线程调度和同步)以及对硬件系统结构的底层支持(如中断和异常)构成。它将几乎所有的策略决定留给执行体,唯一例外是线程调度和分发(内核自己实现).

内核对象 内核提供了一组定义明确的、可预知的操作系统底层原语和机制,以为执行体中高层组件提供支持。内核实现了操作系统的基本机制并且避免各种策略决定,从而将自己与执行体的高层组件隔离。

硬件支持 将执行体和设备驱动程序从Windows所支持的各种硬件体系结构抽象出来,包括中断处理、异常分发和处理器同步等方面的变化。内核通过定义一组可移植的接口,实现这些接口的大部分代码在不同的体系结构上是等同的。不同的部分在HAL中处理。

HAL

HAL提供了针对当前硬件平台的底层接口。它隐藏了与硬件相关的细节如I/O接口、中断控制器,以及多处理器通信机制。

设备驱动程序

可加载的内核模式模块(通常以.sys后缀);它们在I/O管理器和硬件之间建立连接;运行于内核模式下,位于三种执行环境之一:

n  在发起I/O功能的用户线程的环境中

n  在内核模式系统线程中

n  中断结果,不在特定的线程环境中。

设备驱动程序往往使用HAL函数来与硬件打交道,因此可以方便移植。

Windows驱动程序模型(WDM)

n  总线型驱动程序(bus driver) – 它为总线控制器、适配器、桥或任何带有子设备的设备提供服务。

n  功能型驱动程序(function driver) – 为相应的设备提供可操作的接口。

n  过滤型驱动程序(filter driver) – 为某一设备增加新的功能或者修改来自其他设备的I/O请求或应答。

对于一个设备而言,一个总线型驱动程序负责向PnP管理器报告其总线上的设备,而功能型驱动程序操纵该设备。

系统进程

Idle进程 每个CPU一个线程,占用空闲CPU时间。

System进程 系统线程只能加载运行内核模式下代码。

会话管理器(Smss.exe) – 系统启动的第一个用户模式进程。它负责启动CsrssWinlogon并等待他们启动成功。

Windows子系统(Csrss.exe) –

登录进程(Winlogon.exe) –

服务控制管理器(Services.exe)以及其创建的子服务进程(Svchost.exe) –

本地安全认证服务器(Lsass.exe) –

 

原创粉丝点击