《深入解析Windows操作系统》之系统机制

内容总结:

在这里插入图片描述

重难点笔记:

陷阱分发:
中断和异常是导致处理器转向正常控制流之外代码的两种操作系统条件。硬件或者软件都可以检测到这两种条件。术语陷阱(trap)指的是这样一种机制,当异常或者中断发生时,处理器捕捉到一个执行线程,并且将控制权转移到操作系统中某一固定地址处。在 Windows中,处理器会将控制权转给陷阱处理器(trap handler)。所谓陷阱处理器,是指与某个特定的中断或异常相关联的函数。
激活陷阱处理器的条件:
在这里插入图片描述
中断是一个异步事件(可以在任何时候发生),并且与处理器当前正在执行的任务毫无关系。中断主要是由I/O设备、处理器时钟或者定时器产生的,并且可以被启用(打开)或者禁用(关闭)。相反地,异常是一个同步条件,它往往是一个特殊指令执行的结果。异常的例子有:内存访问违例、特定的调试器指令,以及除零错误。无论是硬件还是软件都能够产生异常和中断。

硬件中断处理
在 Windows所支持的硬件平台上,外部中断进入到中断控制器的一根线上。该控制器接着在某一根线上中断处理器。处理器一旦被中断,就会询问控制器以获得此中断请求(IRQ, interrupt request).中断控制器将该IRQ转译成一个中断号,利用该编号作为索引,在一个称为中断分发表(DT, interrupt dispatch table)的结构中找到一个DT项,并且将控制权传递给恰当的中断分发例程。在系统引导的时候, Windows会填充DT,其中包含了指向负责处理每个中断和异常的内核例程的指针Windows将硬件IRQ映射至IDT中的中断号上,同时利用DT来为异常配置陷阱处理器。

软件中断
虽然大多数中断是硬件产生的,但是,Windows内核也为了各种各样的任务而产生软件中断,这样的任务包括:
1. 激发线程分发。
2. 并非时间紧急的中断处理。
3. 处理定时器到期。
4. 在特定线程的环境中异步地执行一个过程。
5. 支持异步I/O操作

定时器处理
Windows对系统时钟进行编程,以便使机器按照最合适的间隔来激发中断,继而允许驱动程序、应用程序和管理员根据需要修改时钟间隔。
一个定时器到期,无外乎两种主要任务:
1. 定时器被看作分发器同步对象(线程正在等待此定时器,作为超时的一部分,或者直接作为一次等待)。等待测试和等待满足算法将在此定时器上运行。
2. 定时器被看作控制对象,与DPC回调例程关联在一起,当定时器到期时,此回调例程被执行。这种方法仅保留给驱动程序使用,并且对定时器的到期动作可以做到非常低的延迟。

对象管理器
Windows实现了一个对象模型,为执行体中实现的各种内部服务提供一致的、安全的访问机制, Windows的对象管理器(object manager),即执行体内部负责创建、删除、保护和跟踪对象的组件。对象管理器将那些本来有可能散落在操作系统各处的资源控制操作集中在一起。
对象管理器的设计目标如下:
1. 提供一种公共的、统一的机制来使用系统资源。
2. 将对象保护隔离到操作系统中的一个地方,从而确保统一的、一致的对象访问策略。
3. 提供一种机制来管理进程对对象的使用,从而可以对系统资源的使用加以限制。
4. 建立一套对象命名方案,它可以很方便地融合已有的对象,比如设备、文件、文件系统中的目录,或者其他独立的对象集合。
5. 支持各种操作系统环境的需求,比如一个进程能够从它的父进程继承资源(Windows和UNIX应用子系统都需要这样的能力)、创建大小写敏感的文件名称的能力(unX应用子系统需要这种能力)
6. 建立统一的规则来维护对象的保持力(也就是说,保持一个对象总是可用的,直至所有的进程都用完了这个对象为止)
7. 提供为特定的会话隔离对象的能力,以便在名字空间中允许局部( local)和全局( global)对象并存。

对象结构:
在这里插入图片描述
同步主要内容:
在这里插入图片描述
系统辅助线程有以下三种类型:
1. 延迟型辅助线程
2. 紧急型辅助线程
3. 一个超紧急型辅助线程

Wow64
Wow64(64位Windows上的in32仿真是指允许在64位 Windows上执行32位x86应用程序的软件。它的实现方式是一组用户模式DLL,外加一些来自内核的支持,此内核支持是为了创建32位版本的数据结构,比如进程环境块(PEB)和线程环境块(TEB),这些数据结构正常情况下只有64位版本。通过Get/Set ThreadConte来改变Wow64环境也是由内核实现的。下面是负责Wow64的用户模式DLL:
1. Wow64.dll:管理进程和线程的创建、钩住异常分发和 Ntoskrnl exe导出的基本系统调用。它也实现了文件系统重定向,以及注册表重定向。
2. Wow64Cpu.dll:为每个正在Wow4内部运行的线程,管理它们的32位CPU环境;针对从32位到64位或者从64位到32位的CPU模式切换,提供了与处理器体系结构相关的支持。
3. wow64win.dll:截取了win32k.sys导出的GU系统调用。
4. A64系统上的IA32Exec.bin和Woia32xdll:包含1A-32软件仿真器和它的接口库。因为 Itanium处理器不能以原生方式高效地执行x86的32位指令(性能差于30%),所以有必要通过这两个额外的组件来实现软件仿真(通过二进制翻译)

Wow64主要有以下内容:
在这里插入图片描述
加载器负责的一些主要任务如下所列:
1. 为应用程序初始化其用户模式状态比如创建初始的堆、建立起线程局部存储(TLS, thread local storage)和纤程局部存储(FLS fiber local storage)槽
2. 解析应用程序的导入表(IAT),查找所有它要求的DLL(然后递归地为每个DLL解析IAT),接着,解析DLL的导出表,确保导入的函数确实存在(特殊的前转项(forwarder entry)也可以将一个导出表项重定向到另一个DLL中)
3. 在运行时候或者根据需要加载或卸载DL,并且维护一个包含所有已被加载的模块的列表(模块数据库)
4. 使得可以支持运行时刻打补丁(称为热补丁, hotpatching)。
5. 处理清单文件( manifest file)
6. 读取任何铺垫形式的应用程序兼容性数据库,如果有必要的话,加载此铺垫(Shim)引擎DLL。
7. 启用对API集和AP重定向的支持,这是 Min Win重构工程的一个核心部分。
8. 启用基于 SwitchBranch机制的运行时刻动态兼容性缓解方案(mitigation)

知识来源:《深入解析Windows操作系统》

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深入解析Windows操作系统 第6版》是一本关于Windows操作系统的详细介绍和分析的书籍。本书旨在深入剖析Windows操作系统的各个方面,包括系统结构、内存管理、文件系统、进程与线程、设备驱动程序等。 在系统结构方面,本书详细介绍了Windows操作系统内核结构和组件,包括用户模式和内核模式的区别,用户空间和内核空间的切换过程等。读者可以通过学习了解到Windows操作系统是如何管理和调度资源的。 在内存管理方面,本书介绍了Windows操作系统的虚拟内存管理机制,包括分页和分段技术,页面置换算法等。读者可以了解到Windows操作系统是如何管理内存资源,提高系统的运行效率和稳定性。 在文件系统方面,本书深入介绍了NTFS文件系统的结构和特点,包括文件的存储和管理方式,文件的权限控制机制等。读者可以通过学习了解到Windows操作系统是如何管理和操作文件的。 在进程与线程方面,本书详细介绍了Windows操作系统的进程管理和线程调度机制,包括进程的创建和终止,线程的同步和通信等。读者可以了解到Windows操作系统是如何管理和调度多任务的。 在设备驱动程序方面,本书介绍了Windows操作系统的设备管理和驱动程序开发,包括设备的枚举和配置,驱动程序的加载和运行等。读者可以通过学习了解到Windows操作系统是如何与外部设备进行交互和通信的。 总之,《深入解析Windows操作系统 第6版》是一本详细介绍Windows操作系统各个方面的书籍,读者可以通过学习深入理解Windows操作系统的原理和机制,为开发和运维工作提供指导和参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值