Windows I/O系统

硬件存储体系

寄存器

处理器内部定义的存储体,它们除了存储功能,往往还兼有其他的能力,比如参与运算,地址解析,指示处理器的状态,等等。寄存器是由处理器内部专门的触发器电路实现的,处理器往往只有少量的寄存器,其存储能力不超过几百字节,而且一旦系统断电,则寄存器的内容随之丢失。

L1缓存

这是靠近处理器的缓存,它存放的时处理器最近访问过的内存数据。缓存通常是由SRAM(静态随机访问寄存器)来实现,而系统的主内存则是由DRAM(动态随机访问寄存器)来实现的。从技术上来讲,SRAM比DRAM要快,但是它的集成度地,需要更多的晶体管。SRAM只要有电就能持续保持其状态,所以不需要刷新;DRAM不同,他需要定时刷新,读出来再写回去,才能保持其状态。
L1缓存工作原理时,当处理器指令访问内存时,它使用虚拟地址来引用内存单元,首先检查L1缓存中是否有该内存单元,若有则无须再访问物理内存,而是直接读或写L1缓存中的单元。如果L1缓存中没有该内存单元。那么,首先计算出对应的物理地址,然后检查L2缓存中是否有该内存单元。若L2缓存中有,则将该单元复制到L1缓存中,否则需要从物理内存中获得该内存单元。

L2缓存

L2缓存也是由SRAM来实现的,只不过更加靠近系统的主内存而不是处理器。与L1缓存不同的是,L2缓存是用物理地址来寻址的。当L1缓存需要物理内存单元时,它会检查L2缓存,并使用其中的存储单元,若有必要,则从物理内存复制到L2缓存中。在实践中增加L2华纳从对于许多软件都会有显著的性能提升。因此,处理器厂商在平衡成本开销的同时,应尽可能地加大L2缓存。

主内存

在物理上,内存是由DRAM来实现地,它比L1和L2缓存慢,但容量要大得多。一个系统中当前正在使用地数据,包括系统本身地数据,以及各个应用程序用到地数据,都存放在内存中。内存是易失的,一旦系统断电,内存也会随之丢失。

本地一级存储设备和远程存储设备

这一层的存储设备是永久存储体,系统掉电以后其数据不会丢失。操作系统或应用程序若要访问这些存储体上的代码或数据,必须通过文件系统和设备驱动程序,将代码或数据载入到内存中,然后处理器才可以访问

本地二级存储和远程二级存储

为了保障数据安全或提供更大空间的存储能力,有些系统还配备了二级永久存储设备,比如用磁带设备来备份一个系统中的数据,或者通过索引库来访问一个包含大量光碟的影像资料库。二级存储也可能是远程的,比如将数据导入到一个分布式存储系统中,或者链接一个网络文件系统。

Windows I/O硬件

Intel X86处理器除了内存地址空间以外,另外定义了一个I/O端口空间,指令in和out用于操纵端口空间中的数据单元。例如:out 21h,al,该指令将Intel X86处理器的al寄存器中的值写到中断控制器的控制寄存器中,从而达到屏蔽某些中断信号的目的。在Intel X86处理器中,in和out指令的I/O端口操作数可以是8位或16位,而I/O端口的值可以是8位,16位或32位。
设备控制器中的寄存器除了通过I/O端口来访问以外,也可以被映射到系统内存空间。这种访问方案被称为内存映射I/O。例如,APIC中断控制器中的寄存器被映射到4KB大小的APIC寄存器地址空间,而APIC寄存器地址空间又被映射到系统内存中,其基地址可以通过APIC基寄存器来设定,默认为0xfee00000。
一旦设定了内存映射I/O的地址范围以后,当处理器寻址到此地址范围时,它实际上访问的就不再是原始内存空间中的存储单元,而是设备映射的数据单元。Intel x86处理器既支持I/O端口地址空间,也支持内存映射I/O。另一个典型的内存映射I/O的例子时,视频缓冲区被映射到内存地址空间中,因而软件可以直接访问屏幕上显示的像素,在早期的IBM PC中,从640KB到1MB之间的地址专门保留给设备的数据缓冲去,其中包括单色和彩色VGA的显式缓冲区。
设备在执行任务时,如何将任务的状态反馈给处理器呢?一种做法是,设备控制器提供一个状态寄存器,因而处理器可以定期或者用忙等待的方式检查此寄存器。然而,除非要等待的时间预计不是很长,否则不应该用忙等待的做法。另一种做法是,设备用中断的方式来通知处理器。当处理器接收到中断信号是,它可以根据中断的设置或者寄存器的状态,来作相应的处理。
如果对于磁盘这样需要大量动态数据交换的设备,通常采取直接内存访问(DMA)的方案。DMA需要硬件的支持,它也是一种控制器。既可以整个系统共享一个DMA控制器,也可以让一个设备有单独的DMA控制器。DMA控制器通过系统总线来传输数据,但是它在传输数据时不占用处理器的指令周期。所以,使用DMA可以将处理器解放出来。当数据传输完成时,DMA控制器以中断的方式通知处理器。
在这里插入图片描述处理器通过DMA控制器中的寄存器对数据传输进行设置,指定所读写的数据在内存中的地址,数量,以及传输方向。如果不适用DMA控制器,那么处理器必须自己逐个字节或逐个字地在硬盘控制器和内存之间传输数据,数据地传输通过总线来完成。而使用了DMA控制器以后,DMA控制器代替处理器来做相同地事情,它逐个字节或逐个字地向硬盘控制器发送命令,同样地通过系统总线来完成数据传输。当数据传输完成以后,它中断处理器,因此,当处理器接收到中断时,就知道数据已经在内存中指定地地方,或者以及写到硬盘控制器中了。
DMA控制器接到了处理器的读取硬盘数据的命令时,会首先告诉硬盘控制器,将要读取的数据先放到硬盘控制器的缓冲区中,从硬盘到硬盘控制器之间的数据传输是通过专用接口完成的,不需要使用系统总线,此通信完全不受硬件系统其他模块的影响。当数据到达硬盘控制器的缓冲区中,并且通过了校验和验证以后,DMA传输就可以进行了,接下来的数据传输需要用到系统总线。
当DMA控制器通过总线向硬盘控制器发出读请求时,磁盘控制器既不知道也不关心此请求来自处理器还是DMA控制器,由于要写的内存地址已经在总线的地址线上了,所以,磁盘控制器从内存缓冲区中取出当前要传输的字,将它送到总线上,这样就完成了一个字的传输。
在现代计算机体系结构中,处理器通过I/O端口或者内存映射I/O的方式与硬件设备的控制器打交道,而非直接操纵硬件设备。Intel x86处理器提供了in/out指令来访问I/O端口空间,并且也支持内存映射I/O。为了在内存与设备之间传输大量数据,现代计算机往往采用DMA结构,以便处理器从数据传输任务中解脱出来。当DMA数据传输完成时,DMA控制器以中断的方式通知处理器。

Windows I/O 软件

设备的软件组件通常被称为设备驱动程序,驱动程序通常运行在处理器的特权模式下,其代码与操作系统的内核代码有同样的特权。而与设备关联的驱动程序,其最基本的功能时,将操作系统的功能请求,解释成针对该设备的请求,然后操纵设备以完成该请求,最后将结果以指定的方式返回给调用者,在此过程中有些事项是驱动程序必须要考虑的。与设备通信是同步或异步的方式,缓冲区的管理,共享和独占设备。

Windows I/O 系统结构

Windows I/O系统由五个部分组成:I/O管理器,即插即用管理器,电源管理器,WMI例程,以及设备驱动程序,其中I/O管理器是整个I/O系统的核心,它定义了一个非常通用的框架,运行各种功能的设备驱动程序容纳于其中。
在这里插入图片描述I/O管理器除了支持与设备相关的驱动程序以外,它也允许与设备无关的驱动程序加入到内核中。这一类驱动程序并不操纵任何硬件设备,它们进入到内核中以后,将变成内核的一部分,一旦经过I/O管理器的初始化,便与内核融为一体。因此,设备驱动程序也是内核扩展的一种形式。
Windows I/O系统非常依赖注册表,例如,设备与驱动程序的很多配置信息都保存在注册表中,包括与硬件有关的一些描述信息,以及驱动程序初始化所需要的信息等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年高教杯国赛(B题)数学建模竞赛解题思路|完整代码论文集合

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

基于物联网的低成本便携式传感器节点用于火灾和空气污染的检测与报警

目录 摘要 引言 材料和方法 传感器节点 IoT 微控制器 颗粒物传感器 环境和气体传感器 MQTT代理 Node-Red监控平台 系统结构 数据存储 工作描述 实验结果 讨论 结论 致谢 参考文献 这篇论文的标题是《Low-cost IoT-based Portable Sensor Node for Fire and Air…

数据要素大市场打开新局面——数字经济背景下中国特色的数据产权三权分置

前言 数字经济飞速发展的大背景下,无论是数据要素大市场还是数据资产入表的发展和落地,都需要以数据产权基本制度为保障。对数据产权给与恰当的权利定位,有助于让数据成为创造和捕获价值的新经济资源。数据的价值在于使用,而传统…

链表leetcode-1

目录 1.常用技巧 1.1引入虚拟头结点 1.2对于变量,不要太吝啬,可以多定义,方便处理 1.3快慢双指针 2.例题 2.1两数相加 2.2两两交换链表中的节点 2.3重排链表 2.4合并K个升序链表 2.5K个一组翻转链表 1.常用技巧 1.1引入虚拟头结点 可…

场景是人工智能第四要素,是垂直领域人工智能的第一要素。

"场景是人工智能的第四要素,与数据、算力、算法同等重要。"拿着技术找场景,还是拿着场景找技术?这个锤子和钉子的问题,一直困扰着各家AI大厂。从近5年的实践来看,拿着场景找技术是更为稳健的,否则…

哪款宠物空气净化器能更好的清理浮毛?希喂、352、IAM测评分享

家里这三只可爱的小猫咪,已然成为了我们生活中不可或缺的家庭成员,陪伴我们度过了说长不长说短不短的五年时光。时常庆幸自己当年选择养它们,在我失落的时候总能给我安慰,治愈我多时。 但这个温馨的背后也有一点小烦恼&#xff0…

ES6语法详解

以下是ES6常用的一些语法和特性: 声明变量的关键字变化:使用let和const、var来声明变量。 箭头函数:使用箭头(>)定义函数,简化函数的写法。 模板字符串:使用反引号(&#xff0…

【java入门】关键字、标识符与变量初识

🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…

Docker Elasticsearch安装ik分词插件教程

本章教程在通过Docker 安装Elasticsearch,并安装ik分词插件。本文的重点是安装ik分词插件。 一、安装Elasticsearch 安装教程以前写过,参考:https://blog.csdn.net/qq_19309473/article/details/140725121 安装之后,通过http://ip:9200,可以访问,就表示安装成功。 二、安装…

Linux终端简单配置(Vim、oh-my-zsh和Terminator)

文章目录 0. 概述1. 完整Vim配置2. Vim配置方案解释2.1 状态行与配色方案2.2 文件管理与缓存设置2.3 搜索与导航优化2.4 缩进与格式化设置2.5 粘贴模式快捷切换2.6 文件编码与格式2.7 性能优化 3. 安装 Oh My Zsh 及配置3.1 安装 Oh My Zsh3.2 Oh My Zsh 配置 3. Terminator终端…

vscode +STM32 VS CODE EXTENSION

stm32 vs code extersion 1.0.0版本可以直接导入cubeide的工程,之后版本不可以,所以为了省事,使用stm32 vs code extersion 1.0.0插件。 安装完stm32 vs code extersion插件,会默认把相关插件一起安装。但是需要手动安装Ninja&am…

交叉编译概念

交叉编译概念 目录 交叉编译概念1. 什么是交叉编译2. 交叉编译的作用3. 交叉编译器4. 交叉编译工具链5. 交叉编译的一般步骤6. 交叉编译实例 1. 什么是交叉编译 交叉编译是指在一个平台上编译代码,使其能够在另一个不同的平台上运行的过程。这种编译方式通常用于开…

Android12——Launcher3文件夹布局修改调整

文章声明:本文是笔者参考良心大佬作品后结合实际需求进行相应的定制,本篇主要是笔者记录一次解析bug笔记,文中可能会引用大佬文章中的部分图片在此声明,并非盈利目的,如涉嫌侵权请私信,谢谢! 大…

什么是函数调用约定?

目录 前言 一、函数调用约定的主要内容 二、常见的函数调用约定 1. __cdecl(C Declaration) 2. __stdcall(Standard Call) 3. __fastcall(Fast Call) 4. __thiscall(This Call&#xff0…

[数据集][目标检测]轮胎检测数据集VOC+YOLO格式4629张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4629 标注数量(xml文件个数):4629 标注数量(txt文件个数):4629 标注…

【SQL】删除表中重复数据的方法

很久之前我写入一张sql的数据表,它里面有很多重复的内容。然后我想只保留一条原始数据: 例如上面的时间,出现了很多重复值。 我最初用的是这种方法: SELECT * FROM table_name WHERE primary_key IN (SELECT max(primary_key)F…

仕考网:公务员笔试和面试哪个难?

公务员笔试和面试哪个难?二者之间考察的方向不同,难度也是不同的。 笔试部分因其广泛的知识点和有限的考试时间显得难度更高一些,在笔试环节中,考生需在有限的时间内应对各种问题,而且同时还要面对激烈的竞争,在众多…

栈栈栈专题

一、基础 Leetcode 3174. 清除数字 class Solution { public:string clearDigits(string s) {string st; // 用string模拟栈的行为for(auto& v: s){if(isdigit(v)) st.pop_back();else st v;}return st;} }; 二、进阶 三、邻项消除 四、合法括号字符串 五、…

50Kg大载重长航时油电混动多旋翼无人机技术详解

50Kg大载重长航时油电混动多旋翼无人机技术是一项高度复杂且前沿的研究领域,它结合了燃油发动机的高能量密度和电动机的高效性,旨在提高无人机的续航能力和载重能力。以下是对该技术的详细解析: 产品轴距:2320mm 产品尺寸&#x…

Django+Vue家居全屋定制系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者&…