【操作系统】每日 3 题(三)

news2024/12/22 20:46:40

✍个人博客:https://blog.csdn.net/Newin2020?type=blog
📣专栏地址:https://blog.csdn.net/newin2020/category_12820365.html
📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
📝推荐参考地址:https://www.xiaolincoding.com/(这个大佬的专栏非常有用!)

7. I/O 控制方式

每种设备都有一个设备控制器,控制器相当于一个小 CPU,它可以自己处理一些事情,但有个问题是,当 CPU 给设备发送了一个指令,让设备控制器去读设备的数据,它读完的时候,要怎么通知 CPU 呢?

控制器的寄存器一般会有状态标记位,用来标识输入或输出操作是否完成。于是,我们想到第一种轮询等待的方法,让 CPU 一直查寄存器的状态,直到状态标记为完成,很明显,这种方式非常的傻瓜,它会占用 CPU 的全部时间。

那我们就想到第二种方法 —— 中断,通知操作系统数据已经准备好了。我们一般会有一个硬件的中断控制器,当设备完成任务后触发中断到中断控制器,中断控制器就通知 CPU,一个中断产生了,CPU 需要停下当前手里的事情来处理中断。

另外,中断有两种,一种软中断,例如代码调用 INT 指令触发,一种是硬件中断,就是硬件通过中断控制器触发的。

但中断的方式对于频繁读写数据的磁盘,并不友好,这样 CPU 容易经常被打断,会占用 CPU 大量的时间。对于这一类设备的问题的解决方法是使用 DMA(Direct Memory Access) 功能,它可以使得设备在 CPU 不参与的情况下,能够自行完成把设备 I/O 数据放入到内存。那要实现 DMA 功能要有「DMA 控制器」硬件的支持。

8. DMA 控制方式

在这里插入图片描述

DMA 的工作方式如下:

  • CPU 需对 DMA 控制器下发指令,告诉它想读取多少数据,读完的数据放在内存的某个地方就可以了;
  • 接下来,DMA 控制器会向磁盘控制器发出指令,通知它从磁盘读数据到其内部的缓冲区中,接着磁盘控制器将缓冲区的数据传输到内存;
  • 当磁盘控制器把数据传输到内存的操作完成后,磁盘控制器在总线上发出一个确认成功的信号到 DMA 控制器;
  • DMA 控制器收到信号后,DMA 控制器发中断通知 CPU 指令完成,CPU 就可以直接用内存里面现成的数据了;

可以看到,CPU 当要读取磁盘数据的时候,只需给 DMA 控制器发送指令,然后返回去做其他事情,当磁盘数据拷贝到内存后,DMA 控制机器通过中断的方式,告诉 CPU 数据已经准备好了,可以从内存读数据了。仅仅在传送开始和结束时需要 CPU 干预。

9. 如果磁盘中有一个文件,此时想要将它读取到内存中,如果使用的是非阻塞 I/O,那这个时候操作系统是如何读取这个文件的?

  1. 发起非阻塞读取请求:应用程序首先向操作系统发起非阻塞读取请求,请求指定了要读取的文件以及读取的字节数。应用程序不会被阻塞,可以继续执行其他任务。
  2. 操作系统启动 I/O 操作:操作系统开始执行非阻塞读取操作。它会尝试读取文件的一部分数据(通常是缓冲区大小的一部分),而不会等待数据完全就绪。如果文件中有足够的数据可供读取,操作系统将尽可能多地读取数据,然后返回已读取的字节数。
  3. 返回读取结果:操作系统将读取的数据传输到应用程序指定的缓冲区,并返回已读取的字节数。如果没有足够的数据可供读取(例如,文件尾部或者暂时没有数据可用),操作系统会返回一个指示当前没有数据可读的状态,而不会阻塞应用程序。
  4. 应用程序处理结果:应用程序收到操作系统返回的读取结果后,可以根据已读取的数据字节数和数据内容来处理数据。如果还需要继续读取文件的剩余部分,应用程序可以再次发起非阻塞读取请求,然后继续执行其他任务。
  5. 轮询或事件通知:如果应用程序希望等待更多数据就绪,它可以使用轮询或事件通知机制来检查文件是否有更多数据可读。这允许应用程序不断地检查文件的状态而不阻塞,从而实现非阻塞 I/O。

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

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

相关文章

【万兴科技-注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

duilib 进阶 之 TileListBox 列表

目录 一、TileListBox 1、样式 1)、整体列表分列设置 2)、列表项样式设置 3)、选中后出现√号,horver时 出现边框色 的实例 2、代码 1)、普通动态添加列表项 2)、列表项样式中有自定义控件时 3)、获得选中项 一、TileListBox Tile [taɪl] ,瓦片 棋子 Ti…

专线物流公共服务平台:数据驱动,标准引领,共创金融双赢新时代

专线物流公共服务平台:数据驱动,标准引领,共创金融双赢新时代 在当今这个数据驱动、标准引领、金融赋能的经济发展新时代,专线物流作为商贸流通领域的重要一环,正面临着前所未有的机遇与挑战。为应对复杂多变的市场环…

日本Harmonic行星减速机HPG系列 薄壁弹性齿轮技术实现低背隙控制

科技飞速发展,工业领域对于设备的精度和刚性要求越来越高。日本Harmonic Drive Systems 公司凭借其在精密传动领域的深厚积累与不断创新,成功开发出一款具有高精度、高刚性的伺服电机用行星减速机 ——HPG系列,为众多行业带来了全新的精密传动…

win10系统cad2007安装提示缺少net framework 3.5安装错误怎么修复

浏览器地址栏输入www.dnz9.com远程解决netframework问题 由于AutoCAD 2007是一款比较老的软件,它可能与最新的Windows操作系统存在兼容性问题。所以我们在安装的cad2007的时候会提示“未安装net缺少该组件时不能安装”。在Windows 10上安装AutoCAD 2007时遇到缺少.N…

Flash的语音ic型号有哪些?

深圳唯创知音电子有限公司在语音技术领域具有深厚的积累,其Flash语音IC产品凭借高性能和广泛的应用领域,在市场上占据了一席之地。以下是对该公司Flash语音IC产品的详细介绍: 一、产品概述 Flash语音IC是一种采用Flash存储技术的语音芯片&…

我在命令行下学日语

同一个动作重复 300 遍,肌肉就会有记忆,重复 600 遍,脊柱就会有记忆,学完五十音图不熟练,经常遗忘或者要好几秒才想得起来一个怎么办?没关系,我做了个命令行下的小游戏 KanaQuiz 来帮助你记忆&a…

【GESP】C++三级练习BCQM3091,选择题判定

GESP三级字符串string和一级知识点if-else分支语句练习,非常基础,对于我孩子来说练习重点在一级部分,字符串只是碰巧遇到了。 题目题解详见:https://www.coderli.com/gesp-3-bcqm3091/ 【GESP】C三级练习BCQM3091,选…

Vue前端开发:事件绑定方式

事件定义 在Vue中,当一个元素通过使用v-on或语法糖指令绑定某个事件后,则完成了事件被定义的过程,在这定义的过程中,指令的后面是定义事件的名称,等号的后面是事件被触发后执行的函数,当然,也可…

PHP + Windows小皮面板 + VScode 安装教程

目录 1. 小皮面板安装包 下载 2、配置MySQL 可以在cmd命令框中使用 3. VScode安装 如有错误,烦请批评指正 1. 小皮面板安装包 下载 官方地址https://old.xp.cn/download.html 下载完后,一路next,文件路径自定义 2、配置MySQL 可以在cm…

【小白学机器学习29】 概率统计与图形 ( hist, bar, pie , box ,scatter ,line)

目录 1 频度/次数 1.1 频度统计表:频度分布表 1.2 频数分布图直方图 histogram / hist 1.3 对比,柱状图 bar graph /column chart 2 饼图 pie chart 2.1饼图特点 3 南丁格尔玫瑰图 4 茎叶图 stem-and-leaf display 5 箱型图 box plot 6 …

ssm基于web的素材网的设计与实现+vue

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 摘要 I Abstract II 1绪论 1 1.1研究背景与意义 1 1.1.1研究背景 1 1.1.2研究意义 1 1.2国内外研究…

QT 跨平台优势独特,效果实例设计精彩呈现

QT 的跨平台优势确实独特而显著。它能够在不同的操作系统上实现一致的用户体验,无论是 Windows、Linux 还是 macOS。在效果实例设计中,QT 可以展现出精美的界面和流畅的交互。比如,一个基于 QT 开发的图形设计软件,在各个平台上都…

GXYCTF2019:gakki

把题目给的附件解压后给了张图片,顺带着瞟一眼属性,没有值得注意的 binwalk检测一手,看见有个rar压缩包 提取出来的压缩包是有密码的,但是题目并没有给出获取密码的途径,所以先爆破试试,用最常用的四位数爆…

从0开始搭建一个生产级SpringBoot2.0.X项目(六)RestTemplate调用第三方接口

前言 最近有个想法想整理一个内容比较完整springboot项目初始化Demo。 SpringBoot使用RestTemplate由服务端向外发起网络请求 一、将RestTemplate配置初始化为一个Bean 修改RestTemplate默认的客户端,例如将其改成HttpClient客户端 package com.murg.bootdemo.…

Cyber​​Panel filemanager/upload 远程命令执行漏洞复现

0x01 产品简介 CyberPanel是一个开源的Web控制面板,它提供了一个用户友好的界面,用于管理网站、电子邮件、数据库、FTP账户等。CyberPanel旨在简化网站管理任务,使非技术用户也能轻松管理自己的在线资源。 0x02 漏洞概述 该漏洞源于filemanager/upload接口未做身份验证和…

Qt开发————网络编程

目录 Socket套接字 IP地址 端口号 IP地址与端口号的组合 MAC地址的特征 MAC地址的作用 重要性 例子 TCP/UDP协议 TCP UDP 网络编程1.0-----网络与通信介绍_计算机网络与通信网络csdn-CSDN博客 Socket套接字 IP地址 IP地址(Internet Protocol Address&…

Spring Cloud Sleuth(Micrometer Tracing +Zipkin)

分布式链路追踪 分布式链路追踪技术要解决的问题,分布式链路追踪(Distributed Tracing),就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节…

ARM base instruction -- bic

Bitwise Bit Clear (shifted register) performs a bitwise AND of a register value and the complement of an optionally-shifted register value, and writes the result to the destination register. 位清除(移位寄存器)执行寄存器值与可选移位寄存…

【动手学运动规划】 3.3 确定性采样:基于控制空间采样

要往前走,就得先忘掉过去。 —《阿甘正传》 🏰代码及环境配置:请参考 环境配置和代码运行! 确定性采样运动规划是一种采用确定性采样策略进行运动规划的方法。它通过按照预定规则生成采样点来构建解空间,并用于后续的路径搜索或…