欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

深入分析 Windows 操作系统说明 - CH2 系统结构 - 2.3 总体结构

最编程 2024-03-23 16:41:01
...

本节介绍windows的设计目标和包装方式,如下图windows总体结构中的关键系统组件。

4中用户模式进程:

1.固定的系统支持进程,如登陆进程,会话管理器进程。

2.服务进程,宿纳了windows服务,如进程管理器和假脱机服务。

3.用户应用程序,有6个类型:windows32位,windows64位,windows3.1 16位,ms-dos 16位,posix32位或者OS/2 32位。

4.环境子系统服务进程,实现了操作系统环境的部分支持。这里的环境是指操作系统展示给用户或者程序员的个性化部分。

windows下,用户程序不能直接访问原始的windows服务,要通过一个或者多个子系统动态链接库。

 

windows内核组件包含:

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

2.windows内核,是由一组底层的操作系统功能构成,如线程调度,终端和异常处理分发。以及处理器同步。提供了一组例程和基础对象。执行体的其他部分利用这些例程和对象实现更高层次的功能。

3.设备驱动程序,硬件设备驱动程序,也包含文件系统和网络驱动程序。其中硬件设备驱动程序将用户的I/O函数调用转化为特定的硬件设备请求。

4.硬件抽象层,指一层特殊代码,它把内核,设备驱动程序和windows执行体其他部分跟与平台相关的硬件差异隔离开来。

5.窗口和图形系统:实现了图形用户界面函数。

文件名

组件

Ntoskrnl.exe

执行体和内核

Ntkrnlpa.exe

执行体和内核,支持物理地址扩展,是的系统可寻址64GB物理内存

Hal.dll

硬件抽象层

Win32k.sys

Windows子系统的内核模式部分

Ntdll.dll

内部支持函数,以及执行体函数和系统服务分发存根(stub)

Kernerl32.dll,Advapi32.dll,User32.dll,Gdi32.dll

Windows的核心子系统DLL

2.3.1 可移植性

windows的一个设计目标是要能够运行在各种不同的硬件体系结构上。

windows2中方式支持可移植性以支持多种硬件体系结构和平台:

1.windows有一个分层设计,系统底层部分与处理器体系结构相关,或与平台相关的,这些部分被隔离到独立的模块中,所以搞成不需要考虑体系结构的区别。有2个组件为系统提供了可移植性:内核和硬件抽象层。

2.windows的绝大多数代码是由c语言编写的,少部分是使用c++编写的,只有那些需要直接与系统硬件通信的部分或者对性能极端敏感的操作系统部分,才是用汇编语言编写的。

2.3.2 对称多处理

多任务是值多个执行线程之间共享同一个处理器的操作技术。

 

能够很好的在多处理器运行是windows 的设计目标。windows是一个对称多处理(SMP)操作系统。没有主处理器,操作系统和用户线程可以被调度到任何一个处理器上运行,而且所有的处理器共享唯一的内存空间。

 

对称处理和非对称处理不同,操作系统选一个处理器运行系统内核代码。而其他处理器运行用户代码。

xp2003支持2中新的多处理器系统:超线程(hyperthreading)NUMA(非一致性的内存结构)

超线程是intel一个技术,可以一个物理处理器上有多个逻辑处理器,是的一个逻辑cpu可以在其他逻辑cpu正在忙着的时候继续运行。

 

在非一致性内存结构NUMA系统中,处理器被组织成更小的单元,成为node,每个结点都有自己的处理器和内存,并同一个一个缓存一致(cache-cohernet)的互联总线连接到更大的系统上。NUMA系统上的windows仍然作为一个smp系统运行。所有的处理器可以访问所有内存。不过本地结点比其他节点速度要快,系统想要提高性能做法是,根据现场用到的内存所在的节点,讲现场调度到同一个处理器上。

 

windows的最初设计上32位最多只支持32cpu64位支持64cpu。并没有本质的因素来限制处理器个数。注册表LocensedProcessors可以限制处理器个数。

 

考虑到性能问题内核和HAL分为2个版本,单处理器和多处理器版本。

在系统磁盘上的文件名

在发布介质上单处理器版本的名称

在发布介质上多处理器版本的名称

Ntoskrnl.exe

Ntoskrnl.exe

Ntkrnlmp.exe

Ntkrnlpa.exe

Ntkrnlpa.exe in \windows\<arch>\Driver.cab

Ntkrpamp.exe in \windows\<arch>\Driver.cab

Hal.dll

取决于系统类型

取决于系统类型

以下只针对2000系统

 

 

Win32.sys

\I386\UNIPROC\Win32k.sys

\I386\Driver.cabWin32.sys

Ntdll.dll

\I386\UNIPROC\Ntdll.dll

\I386\Ntdll.dll

Kernel32.dll

\I386\UNIPROC\Kernel32.dll

\I386\Kernel32.dll

2.3.3 可伸缩性()

多处理器系统下,管家你的问题是可伸缩性。windows有以下功能这些功能对windows作为一个多处理器起到关键性的作用:

1.能一个处理器上运行系统代码,也可以在多个处理器上运行。

2.在单个进程内执行多个线程,这些线程可以在不同的处理器上运行。

3.内核内部(如自旋锁,排队自旋锁以及压栈锁)以及设备驱动程序和服务器进程内部的细粒度同步,是的多个组件可以并行在多个处理器上运行。

4.I/O完成端口之类的编程机制,是的可以实现高效的多线程进程,并且这样的程序再多处理系统上有很好的伸缩性。

2.3.4 客户和服务器版本的区别

客户版和服务器版主要区别是有:

支持的处理器个数不同。

支持的物理内存不同。

所支持的并发网络连接数不同。

2.3.5 版本检查