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.rhkb.cn/news/420762.html

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

相关文章

Java代码审计篇 | ofcms系统审计思路讲解 - 篇3 | 文件上传漏洞审计

文章目录 0. 前言1. 文件上传代码审计【有1处】1.1 可疑点1【无漏洞】1.1.1 直接搜索upload关键字1.1.2 选择第一个,点进去分析一下1.1.3 分析this.getFile()方法1.1.4 分析new MultipartRequest(request, uploadPath)1.1.5 分析isSafeFile()方法1.1.6 分析request.…

关于支付宝小程序多规格选项的时候点击不起反应的原因分析及修改方法

解决方案: watch的时候,对于对象的赋值,最好用深拷贝,即如下图: watch:{ row: function (nv, ov) {var that this;that.indata.row JSON.parse(JSON.stringify(nv));//如果是对象,请用深入的for (va…

《OpenCV计算机视觉》—— 图像边缘检测

文章目录 一、图像边缘检测概述二、常见的图像边缘检测算法(简单介绍)1.sobel算子2.Scharr算子3.Laplacian算子4.Canny算子 三、代码实现 一、图像边缘检测概述 图像边缘检测是一种重要的图像处理技术,用于定位二维或三维图像中对象的边缘。…

一款企业网盘,支持多种文件存储方式如FTP,SFTP,MINIIO等以及跨平台管理(附源码)

前言 随着数字化转型的推进,企业越来越依赖于云端技术来存储、管理和共享重要的业务文件。传统的本地存储处理方案虽然可靠,但在灵活性、可访问性和协作方面显得力不从心。尤其在远程工作变得日益普遍的今天,如何高-效地管理分散团队之间的文…

Java学习Day40:大战亢金龙!(spring框架之AOP)

AOP(面向切面变成):不改变原有代码的情况下,对代码进行功能添加 1.一些概念 抽取出的方法:通知 原始方法:成为连接点(可以是程序执行中的任意位置),对应原始的一个个方…

NVDLA专题14:Runtime environment-用户模式驱动

运行时环境(runtime environment)包括在兼容的NVDLA硬件上运行编译神经网络的软件。 它由两部分组成: 用户模式驱动(User Mode Driver, UMD): 这是应用程序的主接口,正如Compile library中所详述的,对神经…

网络药理学:1、文章基本思路、推荐参考文献、推荐视频

文章基本思路 选择一味中药或者中药复方(常见的都是选择一味中药,如:大黄、银柴胡等),同时选择一个要研究的疾病(如食管癌等)获得中药的主要化学成分或者说活性成分(有时候也以化合…

第146天:内网安全-Web权限维持各语言内存马Servlet-api类Spring类Agent类

目录 前置知识及资源 案例一: 权限维持-Web-内存马-PHP 案例二: 权限维持-Web-内存马-Python 案例三: 权限维持-Web-内存马-JAVA 案例四: 权限维持-Web-内存马-哥斯拉&冰蝎 哥斯拉 ​编辑 冰蝎 前置知识及资源 什么是…

程序员如何写笔记并整理资料?

整理笔记 word。没错,我也看了网上一大堆软件,还有git管理等等。个人认为如果笔记只是记录个人的经验积累,一个word就够了,那些notepad,laTex个人觉得不够简练。word。 1.word可以插入任何文件附件(目前最大的word 20…

C++笔记---list

1. list的介绍 list其实就是就是我们所熟知的链表(双向循环带头结点),但其是作为STL中的一个类模板而存在。 也就是说,list是可以用来存储任意类型数据的顺序表,既可以是内置类型,也可以是自定义类型&…

六西格玛绿带培训多少钱

在探讨“六西格玛绿带培训多少钱”这一主题时,我们不得不深入了解六西格玛方法论在企业质量管理中的重要作用,以及绿带培训作为这一方法论推广和应用的关键环节。六西格玛,作为一种以数据驱动的管理哲学和方法论,旨在通过减少缺陷…

深入理解Java中的clone对象

目录 1. 为什么要使用clone 2. new和clone的区别 3. 复制对象和复制引用的区别 4.浅克隆和深克隆 5. 注意事项 1. 为什么要使用clone 在实际编程过程中,我们常常遇到这种情况:有一个对象 A,需要一个和 A 完全相同新对象 B,并…

ModuleNotFoundError: No module named ‘keras.layers.core‘怎么解决

问题 ModuleNotFoundError: No module named keras.layers.core,如图所示: 如何解决 将from keras.layers.core import Dense,Activation改为from tensorflow.keras.layers import Dense,Activation,如图所示: 顺利运行&#xf…

IOS Siri和快捷指令打开app

使用场景 需要Siri打开应用或者在自定义快捷指令打开应用,并携带内容进入应用。 1.创建Intents文件 1.1 依次点开File->New->File 1.2 搜索intent关键字找到 SiriKit Intent Definition File文件 1.3 找到刚才创建的Intent文件,点击然后New Inte…

【JS逆向学习】快乐学堂登陆接口(自定义DES加密、ddddocr验证码识别)

逆向目标 网址:https://www.91118.com/Passport/Account/Login接口:https://www.91118.com/passport/Account/LoginPost参数: passr 逆向过程 输入手机号、密码、验证码 点击登陆,多试几次,然后观察并比较不通请求…

MMO 地图传送,UI系统框架设计

地图传送 创建传送点 建碰撞器触发 //位置归零 建一个传送门cube放到要传送的位置(这个teleporter1是传出的区域 这是从另一张地图传入时的传送门 创建一个脚本TeleporterObject给每个传送cube都绑上脚本 通过脚本,让传送门在编辑器下面还能绘制出来 …

GIT | git提交注释自动添加信息头

GIT | git提交注释自动添加信息头 时间:2024年9月6日10:20:11 文章目录 GIT | git提交注释自动添加信息头1.操作2.commit-msg文件 1.操作 2.commit-msg文件 #!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit&q…

基于SpringBoot+Vue+MySQL的流浪猫狗宠物救助救援网站管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今社会,随着宠物数量的激增及人们关爱动物意识的提升,流浪猫狗问题日益严峻。为解决这一问题,构建一套高效、便捷的流浪猫狗宠物救助救援网站管理系统显得尤为重要。本系统基于SpringBoot…

CSP-CCF★★★201812-2小明放学★★★

目录 一、问题描述 二、解答 (1)注意: (2)80分版: (3)100分版: 三、总结 一、问题描述 二、解答 (1)注意: 题目的n小于等于10的…

m3u8网页视频文件爬取与视频合成

文章目录 m3u8网页视频文件爬取与视频合成下载m3u8文件下载m3u8文件列表所对应的ts文件下载ffmpeg m3u8网页视频文件爬取与视频合成 我们经常在网络上找到的自己想要的视频素材却无法下载,并且打开控制台一看视频是通过分割成一份份的.ts文件发送过来的。 下载m3u8…