操作系统之I/O控制方式

1.程序直接控制方式

(1)读操作的流程
1)CPU向I/O控制器发出读指令。I/O控制器启动,将自身状态置为忙碌态。CPU一直轮询检查I/O控制器的状态
2)I/O控制器启动CPU指定的I/O设备,并将该I/O设备的状态置为忙碌态
3)I/O设备准备好数据后将数据传给I/O控制器,并报告自身状态
4)I/O控制器将数据读入数据寄存器,并将自身状态置为完成态
5)CPU检查到I/O控制器的状态为完成态,则将I/O控制器的数据寄存器中的数据读入CPU的数据寄存器,再读入内存

(2)特点

特点描述
CPU干预频率在I/O操作之前、之后需要CPU的介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查I/O操作是否完成
数据传输单位
数据流向读操作:I/O设备->CPU->内存; 写操作:内存->CPU->I/O设备
优点实现简单,在读/写指令之后,加上实现循环检查的一系列指令即可
缺点CPU和I/O操作只能串行工作,CPU需要一直轮询检查导致CPU的利用率低

2.中断驱动方式

引入中断机制。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发送一个中断信号,CPU检测到中断信号以后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读取一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待I/O的进程的运行环境,然后继续执行

(1)读操作的流程
1)CPU向I/O控制器发出读指令。CPU将等待I/O的进程阻塞,然后切换到别的进程执行
2)I/O完成后,I/O控制器会向CPU发出一个中断信号
3)CPU检测到中断信号,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入内存
4)CPU恢复等待该I/O操作的进程的运行环境,然后继续执行

(2)特点

特点描述
CPU干预频率在I/O操作之前、之后需要CPU的介入
数据传输单位
数据流向读操作:I/O设备->CPU->内存; 写操作:内存->CPU->I/O设备
优点与程序直接控制方式相比,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询。CPU和I/O设备可并行工作,CPU利用率得到明显提升
缺点每个字在I/O设备与内存之间传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间

3.DMA方式

Direct Memory Access,直接存储器存取,主要用于块设备的I/O控制,数据传送单位是块

(1)读操作的流程
1)CPU给DMA发出读操作的指令,然后CPU切换到其他进程去执行(注:指令指明此次操作的类型,并说明要读入多少数据,数据要存放在内存的什么位置、数据在外部设备上的地址)
2)DMA完成读指令后,DMA向CPU发出中断信号

(2)特点

特点描述
CPU干预频率仅在传送一个或多个数据块的开始和结束时,才需要CPU干涉
数据传输单位一个或多个连续的块
数据流向读操作:I/O设备->内存; 写操作:内存->I/O设备
优点与程序直接控制方式相比,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询。CPU和I/O设备可并行工作,CPU利用率得到明显提升
缺点每次读写只能是一个或多个连续的块且这些块读入内存后在内存中也必须是连续的

4.通道控制方式

通道是一种硬件,可以识别并执行一系列通道指令

(1)读操作的流程
1)CPU向通道发出I/O指令(指令指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备),然后CPU切换到其他进程去执行
2)通道执行内存中的通道程序(指明了要读/写多少数据,读/写的数据应放在内存的什么位置等信息
3)通道执行完指令后,向CPU发送一个中断信号

(2)特点

特点描述
CPU干预频率极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预
数据传输单位一组块
数据流向读操作:I/O设备->内存; 写操作:内存->I/O设备
优点CPU,通道,I/O设备可并行工作,资源利用率很高
缺点实现复杂,需要专门的通道硬件支持

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

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

相关文章

Hive Windows Functions 窗口函数

Hive Windows Functions 窗口函数 在 Hive 中,窗口函数(Window Functions)用于在查询结果中执行聚合、排序和分析操作,而无需将数据分组。窗口函数允许你在查询结果中的一组行上执行计算,而不会改变原始数据的行数&am…

Vue3知识总结-1

前面学习一段时间的前端,但是没有进行过太多的练习,并且对于里面一些重要的知识点也没有去着重的记忆,所以打算在学习Vue3的时候,做一些笔记,方便后面翻看。这个笔记会对于学习一些做一些,而不是一个整体的…

前端之深拷贝

前提: 就是在实际开发中,我有一个编辑的弹窗,可以查看和编辑,因为弹窗里面是一个步骤条,点击下一步就要向对应的接口发送请求,考虑到就比如我点击下一步,此次表箱信息其实不需要修改&#xff0…

推荐 6 个超好用的 iterm2 zsh 插件

大家好啊,今天给大家分享几个我日常使用的 iterm2 插件,每一个都很有用,希望能给帮助你提高使用命令行的效率~ zsh-autosuggestions 插件地址:https://github.com/zsh-users/zsh-autosuggestions 效果展示 当你输入…

AI中转站计费平台系统源码一站式解决方案安装说明

AI中转站计费平台系统源码一站式解决方案安装说明 功能 | Features AI 联网功能 AI online searching service 多账户均衡负载 Multi-account load balancing HTTP2 Stream 实时响应功能 HTTP2 Stream real-time response function 节流和鉴权体系 Throttling and authenticati…

【17-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

开源代码分享(28)-含分布式光伏的配电网集群划分和集群电压协调控制

参考文献: [1] Chai Y , Guo L , Wang C ,et al.Network Partition and Voltage Coordination Control for Distribution Networks With High Penetration of Distributed PV Units[J].IEEE Transactions on Power Systems, 2018:3396-3407.DOI:10.1109/TPWRS.2018…

基于微信小程序的校园二手交易平台设计与实现(论文+源码)_kaic

基于微信小程序的校园二手交易平台 设计与实现 摘 要 随着绿色低碳消费和循环经济的理念越来越深入人心,大学生二手商品市场发展迅猛,而大部分二手交易平台运输方式与收售方式对于大学生用户群体并不适用,所以急需一款针对大学生二手商品交易的软件&…

搜索的未来:OpenAI 的 GPT 如何彻底改变行业

搜索的未来:OpenAI 的 GPT 如何彻底改变行业 概述 搜索引擎格局正处于一场革命的风口浪尖,而 OpenAI 的 GPT 处于这场变革的最前沿。最近出现了一种被称为“im-good-gpt-2-chatbot”的神秘聊天机器人,以及基于 ChatGPT 的搜索引擎的传言&am…

聊天打字轻松赚钱:1毛一条,值得一试!

聊天打字轻松赚钱:1毛一条,值得一试! 在如今信息爆炸的时代,人们的注意力愈发分散,但同时也催生了许多新的职业和赚钱方式。其中,聊天打字赚钱成为了越来越受人欢迎的一种方式,其简便性和高效性…

WebSocket基础知识

WebSocket是什么? WebSocket 是一种网络通信协议,它提供了全双工通信机制,允许服务器主动向客户端发送消息,而不仅限于响应客户端的请求。它使用类似于 HTTP 的握手来建立连接,然后使用单独的持久连接来进行通信。这种…

C++ primer plus习题及解析第十二章(类和动态内存分配)

题目:12.1 题: 对于下面的类声明: class Cow { private:char name[20];char* hobby;double weight; public:Cow();Cow(const char* nm, const char* ho, double wt);//有参构造Cow(const Cow& c);//拷贝构造函数~Cow();//析构函数Cow&…

Linux系统调用read、write

0 前言 《Linux系统调用》整体介绍了系统调用,本文重点分析其中read、write的实现与使用方法。 1 定义 1.1 read SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count) {struct file *file;ssize_t ret -EBADF;int fput_needed;file f…

【前端每日一题】 day3

JS的原型链如何实现继承,请写出一个例子 JavaScript中的原型链继承是通过原型(prototype)来实现的。每个对象都有一个原型(prototype),该原型又是一个对象,而这个对象又有自己的原型&#xff0c…

kubernetes删除命名空间下所有资源

kubernetes强制删除命名空间下所有资源 在 Kubernetes 中,当一个命名空间处于 Terminating 状态但不会完成删除过程时,通常是因为内部资源没有被正确清理。要强制删除这个命名空间及其所有资源,你可以采取以下步骤: 1. 确认命名空…

cPanel中如何卸载已安装的SSL证书

我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板,由于临时搭建了一个测试的个人的纯静态的网站,不想要安装SSL证书,但是据这边了解HosteaseLinux虚拟主机是只要域名解析指向主机IP,并且绑定到主机&#xff0c…

Go 使用mqtt

1、创建一个文件夹&#xff0c;并且使用go modules go mod init <module_name> 其中<module_name>是你的模块名称&#xff0c;如下 go mod init example.com/myproject 2、安装mqtt扩展 go get github.com/eclipse/paho.mqtt.golang 3、开始写主程序 package ma…

中国地面气候资料日值数据获取方式

数据简介 环境气象数据服务平台提供了全国大约2100个点位&#xff0c;2000年至2023年的逐日数据。包括气温、气压、湿度、风、降水等要素。 数据基于ECMWF reanalysis-era5-land、reanalysis-era5-single-levels 以及中国2100站点地面气候资料日值观测数据&#xff0c;使用机器…

BBS客户端服务器的编写

根据网络编程中的内容&#xff0c;我们本篇文章将讲解一个bbs通信的项目&#xff0c;首先让我们了解一下什么是bbs. 一、bbs介绍 BBS&#xff0c;即Bulletin Board System的缩写&#xff0c;中文译为“电子公告板系统”或“网络论坛”。它是一个在网络上进行信息交流和讨论的…

Java解决垂直鉴权问题(对垂直权限进行校验)

Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09; 文章目录 Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09;前言一、垂直鉴权是什么&#xff1f;二、实现过程1.新建接口权限菜单映射表2.项目初始化时加载接口菜单映射关系3.自定义过滤器拦截…