Windows系统概述

    xiaoxiao2025-06-19  9

       到了我们最为熟悉的windows操作系统,因为这是一种实际应用中的操作系统,Windows并没有单纯地使用某一种的体系结构,它的设计融合了分层操作系统和客户/服务器(微内核)操作系统的的特点

    1. 系统架构,windows操作系统只有两种模式,内核模式和用户模式。用户模式的线程在一个受保护的进程地址空间中执行。不过当他们在内核模式中执行时,他们可以访问系统空间,因此系统支持的进程、服务进程、用户应用程序和环境子系统都有他们各自的私有进程空间,以下是4中基本的用户模式

    a) 系统支持进程:如登录进程和会话管理器,不是windows服务,不由服务控制器启动

    b) 服务进程,这是windows服务,如事件日志,任务调度器和假脱机服务等,windows服务的运行通常独立于用户登录,许多windows服务器应用也包含了一些通过windows服务方式来运行的组件

    c) 环境子系统,实现了操作系统环境的支持部分,这里所谓的环境指的是操作系统展现给程序员的或用户的个性化部分

    d) 用户应用程序,是win32,windows3.1,MS-DOS,POSIX或OS/2的一种

    以下是windows的核心模式组件

    e) 执行体包含了基本的操作系统服务,比如内存管理器、进程和线程管理器、安全控制、进程间的通信等

    f) 内核包含了最低级的操作系统功能,比如线程调度,中断和异常调度等分发,以及多处理器同步,提供了一组例程和基本对象,执行体的其他部分利用这些例程和对象实现更高层次的功能

    g) 硬件抽象层(HAL)将内核和设备驱动程序以及执行体同硬件分割开来,使得他们可以适应多种平台

    h) 设备驱动程序,设备驱动程序包括了文件系统和硬件设备驱动程序等,其中硬件设备驱动程序将I/O函数调用转换为对特定硬件设备的I/O请求

    i) 图像引擎,图像引擎包含了实现GUI的基本函数

    2. 关键系统组件

    a) 环境子系统和子系统动态链接库,windows有3个不同的环境子系统,POSIX,OS/2,WIN32,其中前两个已经相应的在之前的版本中被淘汰了。现在win32是一个比较特殊的子系统,没有它windows就无法正常运行,因为win32掌握着键盘鼠标和显示器这种基本的输入输出设备,即使在没有交互用户登录的服务器上这些也是必须存在的。其他的两个子系统只有在需要的时候才会被启动,而win32是始终处于运行状态的。 环境子系统的作用是将基本的执行体系统服务的某些子集提供给应用程序,用户的应用程序不能直接调用windows的系统服务,必需通过一个或多个子系统的动态链接库作为中介才能完成,比如win32子系统的动态链接库实现了win32API函数。每一个可执行镜像(.exe)都受限于唯一的子系统,进程创建时,程序镜像头的子系统类型代码会告诉windows新进程所属的子系统

    b) 执行体,windows的执行体是ntoskrnl.exe的上层(内核是其下层),执行体有如下的几种组件:

                    i.     进程和线程管理器创建及终止进程和线程,对进程和线程的基本支持在内核中实现,而执行体给这些低级对象添加了附加语义和功能

                   ii.     虚拟内存管理器实现虚拟内存,内存管理器也为告诉缓存管理器提供基本的支持

                 iii.     安全引用监视器强制在本地计算机上执行安全策略,守护着操作系统的资源,执行运行时对象的保护和审计

                   iv.     I/O管理器实现了与设备无关的I/O操作,负责将这些操作分配到驱动程序去处理

                    v.     高速缓存管理器通过将最近引用的磁盘数据驻留在主内存中以提高文件的读写性能,并通过把更新的数据发送到硬盘之前将它们在内存中保持一个短的时间来延缓磁盘的写操作以实现快速访问

    执行体还包括4类支持函数,由上面列出的执行体组件来使用,这4类支持函数负责提供以下功能

                     i.     对象管理器,它创建、管理以及删除windows的执行体对象和用于代表操作系统资源的抽象数据类型,比如进程线程各种同步对象等等

                   ii.     本地过程调用机制,这个机制允许在同一台计算机上的客户进程和服务进程之间来传递信息

                  iii.     一组公用运行库函数

                   iv.     执行体支持例程,比如系统的内存分配和互锁内存访问等

    3. 内核,内核是由ntoskrnl.exe中的一组函数和对于硬件体系结构的底层支持(比如中断和异常分发)构成的。内核始终运行在核心模式,代码短小紧凑,具有良好的可移植性,一般来说除了中断服务例程,其余的线程时不能抢先内核的,这组函数提供了一些最基本的机制,执行windows中最基本的操作,比如:

    a) 线程的安排和调度

    b) 陷阱的处理和异常调度

    c) 中断的处理和调度

    d) 多处理器的同步

    e) 供执行体使用的基本的内核

    4. 硬件抽象层,硬件抽象层是可移植性的关键部分,通过hal.dll来为硬件平台提供低级的接口,并且隐藏各种鱼硬件有关的细节

    5. 设备驱动程序是可加载的核心态模块,sys结尾,是IO系统和相关硬件的接口。Windows下的驱动程序不直接操作硬件,而是调用HAL功能作为与硬件的接口

    6. 系统支持进程

    a) Idle进程,idle进程的ID总是为0,idle以及ID为2的系统进程不是运行在真正的用户模式,因此由不同的进程观察程序(任务管理器,或冰刃)显示的名称是随程序的不同而不同的

    b) 系统进程,ID为2的进程,这是一种特殊的,只运行在核心态的系统线程的宿主,系统线程具有一般用户态线程的所有属性和描述表,不同点仅在于他们运行在核心态,执行加载于系统空间中的代码

    c) 会话管理器,就是smss,smss是第一个在系统中创建的用户进程(Linux是init进程),除了执行一些关键的系统初始化服务,还作为应用程序与调试器之间的开头和监视器

    d) 登录进程winlogon,用于处理用户登录注销等用户服务,当输入安全注意序列(SAS)的组合键(Ctrl Alt Delete)之后,用户登录请求就会通知winlogon。使用SAS的原因在于保护用户不受那些模拟登录进程的密码捕获程序的干扰,一旦用户名和密码被捕获,那么将被发送到本地安全身份验证服务器上来确认合法性,当确认相符的时候,就会生成一个userinit的进程,这个进程在注册表中查找并创建系统定义的shell然后没这个进程就会退出

    e) 本地安全身份验证服务器lsass,lsass用于接收来在winlogon的身份验证请求,当身份验证成功时,lsass生成一个包含用户安全配置文件的访问令牌,然后winlogon通过这个令牌来创建初始化外壳进程,这些进程从外壳启动,然后默认继承这个访问令牌

    f) 服务控制器services,在windows中服务既可以指服务进程也可以指设备驱动程序,这里特指用户模式进程服务。服务就像unix中的守护进程,可以配置为开机自启,而不需要交互式登录。服务程序是真正合法的win32镜像,这些镜像通过调用特殊的win32函数来与服务控制器相互使用。如注册启动关闭等

    首发于我的个人网站点击打开链接

    转载请注明原文地址: https://ju.6miu.com/read-1300115.html
    最新回复(0)