Windows I/O系统

news2024/11/13 9:37:53

硬件存储体系

寄存器

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

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.coloradmin.cn/o/2107831.html

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

相关文章

jupyter里怎么设置代理下载模型

使用如下方式: %env http_proxyhttp://10.110.146.100:7890 %env https_proxyhttp://10.110.146.100:7890

【SLAM】GNSS的定义,信号原理以及RTK在多传感器融合中的使用方法

【SLAM】GNSS的定义,信号原理以及在多传感器融合中的使用方法 1. GNSS的定义2. GNSS信号原理3. RTK - Real Time Kinematic4。 如何使用RTK做融合和优化 1. GNSS的定义 GPS(Global Positioning System)和GNSS(Global Navigation …

Ubuntu22.04安装colmap

首先上这里查看自己电脑GPU的CMAKE_CUDA_ARCHITECTURES 终端输入以下内容安装预先的前置依赖 sudo apt-get install \git cmake ninja-build build-essential \libboost-program-options-dev libboost-filesystem-dev \libboost-graph-dev libboost-system-dev libboost-tes…

【操作系统存储篇】操作系统的设备管理

目录 一、广义的IO设备 分类 按使用特性分类 按信息交换的单位分类 按设备的共享属性分类 按传输速率分类 二、IO设备的缓冲区 三、SPOOLing技术 一、广义的IO设备 输入设备:对CPU而言,凡是对CPU进行数据输入的。 输出设备:对CPU而…

深度解析:基于离线开发的数据仓库转型落地案例

在当今这个数据驱动的时代,各行各业都正经历着前所未有的变革。伴随技术的飞速发展,数据仓库作为企业数据管理与分析的核心,如何更好地发挥作用,助力企业保持业务的敏捷性与成本效益,成为大家关心的焦点问题。本文将通…

vue使用html2Canvas导出图片 input文字向上偏移

vue使用html2Canvas导出图片 input文字向上偏移 图中 用的是element的输入框 行高 32px,经常测试 你使用原生的input 还是会出现偏移。 解决方法:修改css样式 1.怎么实现导出 网上随便找很多 2.在第一步 获取你要导出的元素id 克隆后 修改他的样式或者 你直接在你需…

web渗透:SSRF漏洞

SSRF漏洞的原理 SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种安全漏洞,它允许攻击者构造请求,由服务端发起,从而访问服务端无法直接访问的内部或外部资源。这种漏洞通常发生在应用程序允许用…

v$session_longops监控 PDB clone 进度

How to Monitor PDB Clone / Move On Create Pluggable Database with COPY Clause Statement Execution (Doc ID 2866302.1)​编辑To Bottom In this Document Goal Solution References APPLIES TO: Oracle Database - Enterprise Edition - Version 19.14.1.0.0 and later…

leetcode:908. 最小差值 I(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums&#xff0c;和一个整数 k 。 在一个操作中&#xff0c;您可以选择 0 < i < nums.length 的任何索引 i 。将 nums[i] 改为 nums[i] x &#xff0c;其中 x 是一个范围为 [-k, k] 的整数。对于每个索引 i &#xff0c;最多 只能…

【赛题已出】2024数学建模国赛A-E题已发布

2024年高教社杯全国大学生数学建模各题赛题已发布&#xff01; A题 B题 C题 D题 E题

Linux开源监控工具netdata

Netdata 是一个免费、开源、实时、专业的服务器监控工具&#xff0c;它以可视化的形式实时展现监控主机的性能变化&#xff0c;提供了一个交互式 Web 界面来查看您的服务器指标。它可以帮助我们了解监控主机的系统或应用程序中正在发生的事情以及刚刚发生的事情&#xff0c;并且…

macos系统内置php文件列表 系统自带php卸载方法

在macos系统中, 自带已经安装了php, 根据不同的macos版本php的版本号可能不同, 我们可以通过 which php 命令来查看mac自带的默认php安装路径, 不过注意这个只是php的执行文件路径. 系统自带php文件列表 一下就是macos默认安装的php文件列表. macos 10.15内置PHP文件列表配置…

iOS——GCD再学习

GCD 使用GCD好处&#xff0c;具体如下&#xff1a; GCD 可用于多核的并行运算&#xff1b;GCD 会自动利用更多的 CPU 内核&#xff08;比如双核、四核&#xff09;&#xff1b;GCD 会自动管理线程的生命周期&#xff08;创建线程、调度任务、销毁线程&#xff09;&#xff1b…

面试软件测试需要掌握的技能有哪些?

一、测试用例的编写 1、在测试中最重要的文档&#xff0c;他是测试工作的核心&#xff0c;是一组在测试时输入输出的标准&#xff0c;是软件需求的具体对照。编写测试用例&#xff0c;是测试人员的基本功&#xff0c;真正能写好的人并不多。 测试用例包含的内容&#xff1a; …

windows手工杀毒-寻找可疑进程之进程模块

上篇回顾&#xff1a;windows手工杀毒-寻找可疑进程之进程启动文件-CSDN博客 上篇我们介绍了如何通过进程启动文件寻找可疑进程&#xff0c;首先我们查看文件的数字签名&#xff0c;如果签名是合法的&#xff0c;且是正规公司的证书。基本可疑排除进程是可疑进程&#…

建议收藏!分享7款AI免费写论文学术工具

在当前的学术写作领域&#xff0c;AI工具已经成为许多研究人员和学生的重要助手。这些工具不仅能够帮助用户快速生成高质量的论文初稿&#xff0c;还能在一定程度上简化学术写作流程&#xff0c;提高写作效率。以下是七款免费且功能强大的AI写论文学术工具推荐&#xff1a; 一…

如何使用树莓派构建 LoRa 网关?

顾名思义&#xff0c;远距离广域网或LoRaWAN技术广泛用于物联网&#xff08;IoT&#xff09;中的远距离、低功耗通信。 在本文中&#xff0c;我们将指导您如何将SX130x 868M LoRaWAN网关模块通过硬件附加在顶部&#xff08;HAT&#xff09;的方式连接到Raspberry Pi4。此设置创…

上手一个RGBD深度相机:从原理到实践--ROS noetic+Astra S(上):解读深度测距原理和内外参推导

前言 最近在做项目的时候&#xff0c;项目组丢给了我一个深度相机&#xff0c;今天我们来尝试上手一个实体深度相机。 本教程设计基础相机的原理&#xff0c;使用&#xff0c;标定&#xff0c;和读取。(注&#xff1a;本教程默认大家有ROS1基础&#xff0c;故不对程序进行详细…

Camelyon16数据集切块批量预处理

参考自&#xff1a; Camelyon16数据集切块预处理 区别是这里做了批量处理 数据集目录格式&#xff1a; ** main.py** # !/usr/bin/python3 # -*- coding: utf-8 -*- # Time : 2024/9/4 20:21 # Author : 猫娜Lisa # File : camelyon16_get_patch.py # Software: PyC…

Linux从0到1——基础IO(下)【磁盘/文件系统/软硬链接/动静态库】

Linux从0到1——基础IO&#xff08;下&#xff09; 0. 前言1. 磁盘1.1 物理存储结构1.2 磁盘的逻辑存储结构 2. 文件系统2.1 文件系统的管理思想2.2 详解块组2.3 文件名和inode2.4 挂载 3. 软硬链接3.1 引入3.2 软链接3.3 硬链接 4. 动静态库4.1 静态库4.2 动态库 0. 前言 前面…