《深入解析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操作系统》

cpu工作流程(寄存器、缓存cache、内存)-csdn博客
在开发过程中,系统性能是开发人员必须要考虑的一个问题。 cpu访问快慢的速度:寄存器>缓存>内存>硬盘>其他 金字塔存储体系:寄存器 寄存器(Register)是中央处理器内用来暂存指令、数据和地址的电脑存储器。寄存器的存贮容量有限,读写速度非常快。在计算机体系结构里,寄存器存储在已知时间点所作计算的中间结果,通过快速地访问数据来加速计算机程序的运行。 寄存器位于存储器层次结构的最顶端,也是CPU可以读写的最快的存储器。寄存器通常都是以他们可以保存的比特数量来计量,举例来说,一个
小米系列机型--miui14关闭广告 推送广告 开屏广告 通用其他miui版本
小米,红米手机,相信很多朋友都在用,里面烦人的广告让人无法忍受,但又不得不面对,今天介绍下如何彻底关闭这些,让人心情愉悦,让系统运行更流畅!小米,红米手机,相信很多朋友都在用,里面烦人的广告让人无法忍受,但又不得不面对,今天介绍下如何彻底关闭这些,让人心情愉悦,让系统运行更流畅!返回浏览器首页,打开【我的下载】/右上角三点点/设置/信息流设置,关闭资源和热榜的推荐。打开手机【设置】,下面放大镜框就是点击搜索栏,输入系统广告,搜索,关闭系统工具广告。把这些完全关闭了,然后再看看,你的系统如何啦?
相关资讯
“几本系统流小说”所谓系统在手天下我有!可惜作者是天外天小说论坛小说论坛
所谓系统正在手,全国我无,开启系统,获得破案经验学问,然后起头揭开一个又一个案件,让常人无处可逃。 复纯的说,故事讲述配角更生回到被害的一个月以前,晓得将来本人和本人爷爷......