计算机组成原理学习(输入输出系统)

目录

输入输出系统(i/o系统)

一.现代计算机的结构

二.常见的(I/O设备或者是外部设备)

​ 三.主机如何与I/O设备进行交互

 四.I/O控制方式简介

五.I/O系统的基本组成


输入输出系统(i/o系统)

一.现代计算机的结构

二.常见的(I/O设备或者是外部设备)

 三.主机如何与I/O设备进行交互

I/O接口:又称I/O控制器、设备控制器,主要负责协调主机与外部设备之间的数据传输;

I/O控制器多种多样,也会指定相应的标准,如:用于控制USB设备的IO接口、用于控制SATA3.0硬盘的IO接口等(I/O控制器就是一块芯片,常被集成在主板上) 

I/O接口会进行数据的交互,信息的传输 ,需要它的中转和处理;

 四.I/O控制方式简介

在我们打程序代码时,可以看到在编译运行之后并不会直接输出,而是会等待键盘I/O完成;

cpu如何控制键盘I/O的完成呢?

 在I/O接口里面有数据寄存器(存放I/O设备输入的数据),控制寄存器(存放例如让键盘上哪个灯亮灭),状态寄存器(打印机是否就绪,或者是否没有纸了);

CPU通过控制总线发出一个读的命令,同时可以通过地址总线来指明他要控制的是哪一个设备,还可以用于指明设备读入的数据应该放在那个数据寄存器里面;

1) 程序查询方式:CPU不断轮询检I/O控制器中的“状态寄存器”后,,检测到状态为“已完成”之再从数据寄存器取出输入数据(这种方法比较笨,例如上面那个例子如果你一直没有给键盘的输入就会一直等着);

2) 程序中断方式:等待键盘/0时CPU可以先去执行其他程序,键盘I/0完成后I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据;

数据流下所示:

键盘->I/O接口的数据寄存器->数据总线->CPU某寄存器->主存 (变量i的对应位置)

两种控制方式的比较图:

思考:对于快速I/O设备,如“磁盘”,没准备好一个字就给cpu发送一次中断请求,会导致什么问题呢?

CPU会使用大量的时间来处理中断服务程序,CPU利用率严重下降。

3)DMA控制方式:主存与高速I/O设备之间有一条直接数据通路 (DMA总线)。CPU向DMA接口发出“读/写”命令,并指明主存地址、磁盘地址、读写数据量等参数。

DMA控制器自动控制磁盘与主存的数据读写,每完成一整块数据读写(如1KB为一整块) ,才向CPU发出一次中断请求;

DMA控制可以看到上图中CPU和DMA接口共享主存,所以当DMA访问主存的时候CPU就不可以访问主存了;

 DMA控制器与主存每次传送一个字。当传送完一整块的数据后猜想CPU发出中断请求;

它与程序中断方式的区别就在于可以让CPU执行程序的时间更长一些,DMA只占用一个存取周期,而程序中断方式需要占用多个存取周期,每传一个字都要发送一个中断请求。

4)通道控制方式
通道:可以理解为是“弱鸡版的CPU”通道可以识别并执行一系列通道指令,通道指令种类、功能通常比较单一;

五.I/O系统的基本组成

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

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

相关文章

一键安装下载3ds Max!别墅还是宫殿?3ds Max助你建造梦幻般的艺术建筑

不再浪费时间在网上寻找3ds Max的安装包了!因为你所需要的一切都可以在这里找到!作为一款全球领先的3D设计工具,3ds Max为创作者们带来了前所未有的便利和创作灵感。无论是建筑设计、影视特效还是游戏开发,3ds Max都能帮助你实现想…

C++——C++11(1)

时至今日,C标准已经到了C23,但是你要说哪一次提出的标准最经 典,那C11一定会被人提及,C11带来了数量可观的变化,其中包 含了约140个新特性,以及对C03标准中约600个缺陷的修正,这使得 C11更像是从…

一个神奇的Python库:Evidently,机器学习必备

Evidently 是一个面向数据科学家和机器学习工程师的开源 Python 库。它有助于评估、测试和监控从验证到生产的数据和 ML 模型。它适用于表格、文本数据和嵌入。 简介 Evidently 是一个开源的 Python 工具,旨在帮助构建对机器学习模型的监控,以确保它们的…

博客动态校验+静态校验二次开发方式

静态校验: 1:将需要静态校验的参数继承BaseReqeust类重写validate方法: 动态校验: 1:在需要校验的实现类上加: BizValidate注解 2:写一个校验类,方法命名规范为:需要校…

修改npm源码解决服务端渲染环境中localstorage报错read properties of undefined (reading getItem)

现象: 这个问题是直接指向了我使用的第三方库good-storage,这是一个对localStorage/sessionStorage做了简单封装的库,因为项目代码有一个缓存cache.ts有用到 原因分析: 从表象上看是storage对象找不到getItem方法, 但…

Android--Jetpack--数据库Room详解一

人生何须万种愁,千里云烟一笑收 一,定义 Room也是一个ORM框架,它在SQLite上提供了一个抽象层,屏蔽了部分底层的细节,使用对象对数据库进行操作,进行CRUD就像对象调用方法一样的简单。 二,角色介…

基于YOLOv8深度学习的路面标志线检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

docker容器-compose单机容器编排

目录 yaml文件使用的注意事项 yaml文件的基本数据结构 docker-compose单机容器编排 docker-compose的常用命令 安装docker-compose docker-compose部署nginx nginx文件 yml文件 docker-compose创建镜像和容器 docker-compose构建lnmp nginx文件 mysql文件 php文件…

华为组播配置案例

igmp-snooping主要用于生成二层组播表项,防止交换机全部接口都发组播报文 PC端配置: 组播源配置: R1 interface GigabitEthernet0/0/0 ip address 10.0.0.1 255.255.255.0 pim dm interface GigabitEthernet0/0/1 ip address 192.168.0…

UE5 C++(三)— 基本用法(生命周期、日志、基础变量)

文章目录 生命周期日志打印Outlog打印屏幕打印 基础变量类型FString、FName 和 FText,三者之间的区别 基础数据类型打印 忘记说了每次在Vscode修改后C脚本后,需要编译一下脚本,为了方便我是点击这里编译脚本 生命周期 Actor 生命周期官方文档…

年底总结-基于战略落地的年度经营计划

到了年底,今年不管经济如何,形势多么不好,这个月也要结束2023年了,在这个阶段最关键的是做好今年的总结以及明年的计划。 总结是为了更好地做明年的计划和形势的预判。 借用数据表作为工具,科学理性地对自身公司的经…

基于Java+Swingt学生信息管理系统

基于JavaSwing学生信息管理系统 一、系统介绍二、功能展示四、其他系统实现五、获取源码 一、系统介绍 1.用户登陆:在帮助按钮处,可以查看登陆账号及密码: 账号admin,密码123456 在未输入的情况下,会提示用户名不能为空&#xff…

广受好评的开源基础大模型最全梳理,你最钟意哪一个?

2023 年即将过去。一年以来,各式各样的大模型争相发布。当 OpenAI 和谷歌等科技巨头正在角逐时,另一方「势力」悄然崛起 —— 开源。 开源模型受到的质疑一向不少。它们是否能像专有模型一样优秀?是否能够媲美专有模型的性能? 迄…

C#实现MQTT over WebSocket

如何在网页端实现MQTT消息的发布和订阅? 实现MQTT功能,可以发布和订阅主题通过WebSocket协议将MQTT消息转发给对应的网页端 带着这个实现思路,采用C#控制台程序实现MQTT服务端功能,web端可以直接使用websocket插件与服务端双向通…

第7章 排序

前言 在这一章,我们讨论数组元素的排序问题。为简单起见,假设在我们的例子中数组只包含整数,虽然更复杂的结构显然也是可能的。对于本章的大部分内容,我们还假设整个排序工作能够在主存中完成,因此,元素的个…

计算机网络知识点

计算机网络中的OSI模型 OSI模型是指“国际标准化组织(SO)”提出的使各种计算机在世界范围内互通互联的网络标准框架简称开放系统互联参考模型 (OSI)。 七层模型:应用层、表示层、会话层、传输层、网络层(IP协议、RARP协议、ARP协议、CIDR协议&#xff0…

kafka学习笔记--Topic 数据的存储机制

本文内容来自尚硅谷B站公开教学视频,仅做个人总结、学习、复习使用,任何对此文章的引用,应当说明源出处为尚硅谷,不得用于商业用途。 如有侵权、联系速删 视频教程链接:【尚硅谷】Kafka3.x教程(从入门到调优…

docker小白第五天

docker小白第五天 docker的私有库 有些涉密的信息代码不能放在阿里云的镜像仓库,因此需要构建一个个人内网专属的私有库,将镜像或者容器代码进行推送保存。 下载镜像docker registry 执行代码docker pull registry,用于搭建私服前的准备。…

Linux系统log日志简单清理

系统空间告急 清理log日志 找出当前目录中文件最大的10个文件: cd /var/log du -s ./* | sort -nr | head 系统日志log文件: ll -h /var/log/journal 只保留100MB的日志 journalctl --vacuum-size100M 系统暴力爆破SSH日志: ll -h /var/lo…

初级数据结构(六)——堆

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;五&#xff09;——树和二叉树的概念 | NULL 下一篇-> 1、堆的特性 1.1、定义 堆结构属于完全二叉树的范畴&#xff0c;除了满足完全二叉树的限制之外&#xff0c;还满…