当前位置: 首页 > news >正文

计组—— I/O系统

📕:参考王道课件


 目录

一、I/O系统的基本概念

1.什么是“I/O”?

​编辑2.主机如何和I/O设备进行交互?

3.I/O控制方式

(1)程序查询方式

(2)程序中断方式

(3)DMA控制方式

 (4)通道控制方式

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


一、I/O系统的基本概念

1.什么是“I/O”?

“I/O”就是“输入/输出”。

I/O设备就是可以将数据输入到计算机或者可以接收计算机输出数据的外部设备。

常见的外部设备:

2.主机如何和I/O设备进行交互?

主机如何和I/O设备 通过I/O接口 进行交互。

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

I/O控制器多种多样,也会制定相应的标准。

比如:用于控制USB设备的I/O接口,用于控制SATA3.0硬盘的I/O接口。

其实I/O控制器就是一块芯片,常被集成在主板上。

3.I/O控制方式

CPU控制I/O的完成有三种方式,分别为 程序查询方式 、 程序中断方式 、DMA控制方式、通道控制方式。

以 CPU控制键盘I/O的完成为例:

(1)程序查询方式

CPU不断轮询检查I/O控制器中“状态寄存器”,检测到状态为“已完成”之后,再从数据寄存器取出输入数据。

(2)程序中断方式

等待键盘I/O时,CPU可以先去执行其他程序。

键盘I/O完成后,I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据。

以上这两种,是每准备好一个字就给CPU发送一次中断请求 ,这样CPU需要花大量的时间来处理中断服务程序,导致CPU的利用率严重下降。

所以有了下面这一种 DMA控制方式,它适用于高速外设。

(3)DMA控制方式

DMA控制方式:主存与高速I/O设备之间有一条 直接数据通路(DMA总线)。

CPU向DMA接口发出“读/写”命令,并指明主存地址、磁盘地址、读写数据量等参数。

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

一整块数据,比如,1KB为一整块。

 (4)通道控制方式

通道可以识别并执行一系列通道指令 。通道指令种类、功能通常比较单一。

通道指令执行过程如上图所示。

第一步:CPU向通道发出I/O指令。

        指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备,然后CPU就可以去做其他事情了。

第二步:通道执行内存中的通道程序。

         通道执行内存中的通道程序,控制I/O设备完成一系列任务。

第三步:发送中断请求

        通道执行完规定的任务后,向CPU发出中断请求,之后CPU对中断进行处理。

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

I/O系统,一般由 I/O软件I/O硬件 两部分组成。

(1)I/O硬件

I/O硬件,包括外部设备、I/O接口、I/O总线等。

 (2)I/O软件

I/O软件,包括驱动程序、用户程序、管理程序、升级补丁等。

通常采用 I/O指令 和 通道指令实现主机和I/O设备的信息交换。

①I/O指令

I/O指令是CPU指令的一部分,分为操作码、命令码、设备码三部分。

操作码:识别 I/O指令

命令码:识别做什么操作

设备码:识别对哪个设备进行操作

⭐ I/O指令属于CPU指令,但又与普通指令格式略有不同。

②通道指令

通道指令,是通道能识别的指令。

通道程序是提前编制好放在主存中的。

在含有通道的计算机中,CPU执行I/O指令对通道发出命令,然后由通道执行一系列通道指令代替CPU对I/O设备进行管理。

⭐注意,通道指令与CPU机器指令不是一套东西。

相关文章:

计组—— I/O系统

📕:参考王道课件 目录 一、I/O系统的基本概念 1.什么是“I/O”? ​编辑2.主机如何和I/O设备进行交互? 3.I/O控制方式 (1)程序查询方式 (2)程序中断方式 (3&#x…...

基于vc6+sdk51开发简易文字识别转语音的程序

系统:window7 软件:vc6.0 目的:简易文字转语音真人发声 利用2023国庆小长假,研究如何将文言转语音,之前在网上查询相关知识,大致了解微信语音转换,翻译官之类软件的原理,但要加入神…...

DevOps:自动化部署和持续集成/持续交付(CI/CD)

DevOps:自动化部署和持续集成/持续交付(CI/CD) 在现代软件开发领域,DevOps(Development和Operations的组合)已经成为一个不可或缺的概念。它代表了一种将软件开发和运维(Operations&#xff09…...

专业图标制作软件 Image2icon 最新中文 for mac

Image2Icon是一款用于Mac操作系统的图标转换工具。它允许用户将常见的图像文件(如PNG、JPEG、GIF等)转换为图标文件(.ico格式),以便在Mac上用作应用程序、文件夹或驱动器的自定义图标。 以下是Image2Icon的一些主要功…...

数据结构:顺序表

SeqList.h #pragma once #include<stdio.h> #include<assert.h> #include<stdlib.h>typedef int SLDataType; //#define NULL 0typedef struct SeqList {SLDataType* a;int size;//顺序表中存储的有效元素的个数int capacity;//空间的大小 }SL;void SLInit(…...

僵尸进程的产生与处理

僵尸进程&#xff08;Zombie Process&#xff09;是指在操作系统中已经完成了执行&#xff0c;但其父进程尚未调用wait()或waitpid()来获取其终止状态的子进程。当一个进程结束时&#xff0c;操作系统会保留该进程的一些基本信息&#xff0c;包括进程ID&#xff08;PID&#xf…...

TouchEffects - Android View点击特效

官网 GitHub - likaiyuan559/TouchEffects: Android View点击特效TouchEffects,几行代码为所有控件添加点击效果 项目简介 Android View点击特效TouchEffects,几行代码为所有控件添加点击效果 TouchEffects能够帮助你更快速方便的增加点击时候的效果&#xff0c;TouchEffect…...

从ContinuousEventTimeTrigger/ContinuousProcessingTimeTrigger代码看如何实现一个自定义的触发器

背景 当我们想要实现提前触发计算的触发器时&#xff0c;我们可以使用ContinuousEventTimeTrigger/ContinuousProcessingTimeTrigger作为触发器达到比如几分钟触发一次计算并发送计算结果的类&#xff0c;我们本文就从代码角度解析下实现自定义触发器的一些注意事项 Continuo…...

Linux 5种网络模型

[参考]&#xff1a;《黑马程序员Redis》https://www.bilibili.com/video/BV1cr4y1671t/?p166&share_sourcecopy_web&vd_source9e65300ccca322aeb367bb1eb677b0fc [参考]&#xff1a;《操作系统》 [参考]&#xff1a;《UNIX网络编程》 为了避免用户应用导致冲突甚至内…...

10.1 调试事件读取寄存器

当读者需要获取到特定进程内的寄存器信息时&#xff0c;则需要在上述代码中进行完善&#xff0c;首先需要编写CREATE_PROCESS_DEBUG_EVENT事件&#xff0c;程序被首次加载进入内存时会被触发此事件&#xff0c;在该事件内首先我们通过lpStartAddress属性获取到当前程序的入口地…...

Linux系统常用指令篇---(一)

Linux系统常用指令篇—(一) 1.cd指令 Linux系统中&#xff0c;磁盘上的文件和目录被组成一棵目录树&#xff0c;每个节点都是目录或文件。 语法:cd 目录名 功能&#xff1a;改变工作目录。将当前工作目录改变到指定的目录下。 (简单理解为进入指定目录下) 举例: cd .. : 返…...

【初识Linux】:常见指令(1)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux的基础知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…...

STM32复习笔记(四):看门狗

目录 &#xff08;一&#xff09;简介 &#xff08;二&#xff09;IWDG IWDG的CUBEMX工程配置 IWDG相关函数&#xff08;非常少&#xff0c;所以直接贴上来&#xff09;&#xff1a; &#xff08;三&#xff09;WWDG &#xff08;一&#xff09;简介 看门狗分为独立看门…...

【C++进阶(七)】仿函数深度剖析模板进阶讲解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 模板进阶 1. 前言2. 仿函数的概念3. 仿函数的实…...

基于SSM的电动车上牌管理系统(有报告)。Javaee项目。

演示视频&#xff1a; 基于SSM的电动车上牌管理系统&#xff08;有报告&#xff09;。Javaee项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringM…...

mstsc无法保存RDP凭据, 100%生效

问题 即使如下两项都打勾&#xff0c;其还是无法保存凭据&#xff0c;特别是连接Ubuntu (freerdp server)&#xff1a; 解决方法 网上多种复杂方法&#xff0c;不生效&#xff0c;其思路是修改后台配置&#xff0c;以使mstsc跟平常一样自动记住凭据。最后&#xff0c;如下的…...

OpenGLES:绘制一个混色旋转的3D球体

效果展示 本篇博文会实现一个混色旋转的3D球体 一.球体解析 前面几篇博文讲解了如何使用OpenGLES实现不同的3D图形 本篇博文讲解怎样实现3D世界的代表图形&#xff1a;一个混色旋转的3D球体 1.1 极限正多面体 如果有学习过我前几篇3D图形绘制的博文&#xff0c;就知道要想…...

Spring AOP 基于注解源码整理

导入配置类 EnableAspectJAutoProxy 注解导入 AspectJAutoProxyRegistrarImportBeanDefinitionRegistrar#registerBeanDefinitions向容器中加入AnnotationAwareAspectJAutoProxyCreatorAnnotationAwareAspectJAutoProxyCreator#initBeanFactory初始化ReflectiveAspectJAdvisor…...

C语言 —— 函数栈帧的创建和销毁

在我们之前学习函数的时候&#xff0c;我们可能有很多困惑? 比如: 局部变量是怎么创建的?为什么局部变量的值是随机值?函数是怎么传参的?传参的顺序是怎样的?形参和实参是什么关系?函数调用是怎么做的?函数调用是结束后怎么返回的? 那么要解决这些问题, 我们就需要知道…...

Appleid苹果账号自动解锁改密(自动解锁二验改密码)

目前该项目能实现以下功能&#xff1a; 多用户使用&#xff0c;权限控制多账号管理账号分享页&#xff0c;支持设置密码、有效期、自定义HTML内容自动解锁与关闭二步验证自动/定时修改密码自动删除Apple ID中的设备代理池与Selenium集群&#xff0c;提高解锁成功率允许手动触发…...

从零开始:如何用Python训练一个AI模型(超详细教程)

引言 人工智能&#xff08;AI&#xff09;——一个熟悉又神秘的词汇。我们常听说它可以生成诗歌、编写代码、创作艺术&#xff0c;甚至回答各种问题。然而&#xff0c;当你想亲手实现一个“AI 模型”时&#xff0c;却可能感到无从下手。这篇教程正是为你准备的&#xff0c;将带…...

Original PIPE vs. Serdes PIPE: Understanding the Key Differences in PHY Interface Design

1. 从零理解PIPE接口&#xff1a;物理层设计的通用语言 第一次接触PIPE接口时&#xff0c;我完全被各种缩写搞晕了。直到在某个PCIe项目中被时序问题折磨了整整两周后&#xff0c;才真正明白这个接口的重要性。简单来说&#xff0c;PIPE&#xff08;PHY Interface for PCI Expr…...

Vivado初始化设计慢?可能是这3个隐藏设置惹的祸

Vivado初始化设计慢&#xff1f;可能是这3个隐藏设置惹的祸 当你在深夜赶项目进度&#xff0c;Vivado却卡在"Initializing Design"界面转圈超过15分钟&#xff0c;那种焦虑感堪比考试时笔没水。作为Xilinx FPGA开发的核心工具&#xff0c;Vivado的初始化速度直接影响…...

突破远程桌面限制:RDP Wrapper实现多用户并发连接的创新解决方案

突破远程桌面限制&#xff1a;RDP Wrapper实现多用户并发连接的创新解决方案 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 副标题&#xff1a;适用于Windows Vista至Windows 11全版本的远程桌面功能扩展工具 在…...

如何快速掌握Windows文件夹色彩管理:Folcolor免费工具终极指南

如何快速掌握Windows文件夹色彩管理&#xff1a;Folcolor免费工具终极指南 【免费下载链接】Folcolor Windows explorer folder coloring utility 项目地址: https://gitcode.com/gh_mirrors/fo/Folcolor 你是否曾在密密麻麻的黄色文件夹中迷失方向&#xff1f;每天花费…...

智能演示文稿生成:PPTAgent零基础落地指南与效能提升策略

智能演示文稿生成&#xff1a;PPTAgent零基础落地指南与效能提升策略 【免费下载链接】PPTAgent PPTAgent: Generating and Evaluating Presentations Beyond Text-to-Slides 项目地址: https://gitcode.com/gh_mirrors/pp/PPTAgent PPTAgent作为一款领先的自动化PPT生成…...

重新定义数据标注:Label Studio如何让AI训练效率提升300%?

重新定义数据标注&#xff1a;Label Studio如何让AI训练效率提升300%&#xff1f; 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/labe…...

OpenClaw备份方案:GLM-4.7-Flash自动化任务容灾保护

OpenClaw备份方案&#xff1a;GLM-4.7-Flash自动化任务容灾保护 1. 为什么需要备份OpenClaw自动化任务 去年冬天&#xff0c;我的硬盘突然崩溃&#xff0c;导致辛苦配置的OpenClaw自动化任务全部丢失。那一刻我才意识到&#xff0c;当AI助手成为日常工作的"数字员工&quo…...

RK3576/RK3588 Yolo11 目标检测 Demo

前言 以前的大作业&#xff0c;根据rknn_model_zoo和easy eai示例代码修改&#xff08;缝合&#xff09;&#xff0c;仅供参考 后来我试着模块化一些&#xff0c;方便看&#xff0c;但因为核心代码都是直接用的示例代码&#xff0c;所以有些模块还是耦合&#xff08;composit…...

AIGlasses_for_navigation免配置环境:预置ffmpeg+opencv+torchvision全栈

AIGlasses_for_navigation免配置环境&#xff1a;预置ffmpegopencvtorchvision全栈 1. 引言&#xff1a;让AI视觉开发变得简单 如果你曾经尝试过搭建一个完整的AI视觉处理环境&#xff0c;一定知道那是个多么痛苦的过程&#xff1a;安装CUDA、配置ffmpeg、编译OpenCV、处理各…...