【操作系统学习笔记】文件管理1.3
【操作系统学习笔记】文件管理1.3
参考书籍: 王道考研
视频地址: Bilibili
I/O 控制方式
- 程序直接控制方式
- 中断驱动方式
- DMA 方式
- 通道控制方式
程序直接控制方式
关键词: 轮询
- 完成一次读/写操作的流程
- CPU 向控制器发出读指令。于是设备启动,并且状态寄存器设为1
- 轮询检查控制器的状态
- 输入设备准备好数据后将数据传给控制器,并报告自身状态
- 控制器将输入的数据放到数据寄存器中,并将状态改为0
- CPU 发现设备已就绪,即可将数据寄存器中的内容读入 CPU 的寄存器中,再把 CPU 寄存器中的内容放入内存
- 若还要继续读入数据,则 CPU 继续发出读指令
- CPU 干预的频率: 很频繁,I/O 操作开始之前、完成之后需要 CPU 介入,并且在等待 I/O 完成的过程中 CPU 需要不断的轮询检查
- 数据传送的单位: 每次读/写一个字
- 数据的流向
- 读操作: I/O 设备 -> CPU -> 内存
- 写操作: 内存 -> CPU -> I/O 设备
- 每个读/写都需要 CPU 的帮助
- 主要优缺点
- 实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可
- CPU 和 I/O 设备只能串行工作,CPU 需要一直轮询检查,长期处于忙停状态,利用率低
中断驱动方式
关键词: 中断
引入中断机制。由于 I/O 设备速度很慢,因此在 CPU 发出读/写命令后,可将等待 I/O 的进程阻塞,先切换到别的进程执行。当 I/O 完成后,控制器会向 CPU 发出一个中断信号,CPU 检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU 从 I/O 控制器读一个字的数据传送到 CPU 寄存器,再写入主存。接着,CPU 恢复等待 I/O 的进程的运行环境,然后继续执行
- CPU 会在每个指令周期的末尾检查中断
- 中断处理过程中需要保存、恢复进程的运行环境,这个过程是需要一定时间开销的。可见,如果中断发生的频率太高,也会降低系统性能
- 完成一次读/写操作的流程
- CPU 干预的频率: 每次 I/O 操作开始之前、完成之后需要 CPU 介入。等待 I/O 完成的过程中 CPU 可以切换到别的进程执行
- 数据传送的单位: 每次读/写一个字
- 数据的流向
- 读操作: I/O 设备 -> CPU -> 内存
- 写操作: 内存 -> CPU -> I/O 设备
- 主要优缺点
- 与"程序直接控制方式"相比,再"中断驱动方式"中,I/O 控制器会通过中断信号主动报告 I/O 已完成,CPU 不再需要不停的轮询;CPU 和 I/O 设备可以并行工作,CPU 利用率得到明显提升
- 每个字在 I/O 设备与内存之间的传输,都需要经过 CPU。而频繁的中断处理会消耗较多的 CPU 时间
DMA 方式
与中断驱动方式相比,DMA方式直接进行存储器存取。主要用于块设备的 I/O 控制
- 数据的传送单位是块。不再是一个字的传送
- 数据的流向是从设备直接放入内存,或者从内存直接到数据,不再需要 CPU 作为中介
- 仅在传送一个或多个数据块的开始和结束时,才需要 CPU 干预
DMA 控制器是一种特殊的 I/O 控制器。也由主机-控制器接口、I/O 控制逻辑、块设备-控制器接口。在主机-控制器接口中由DR(数据寄存器:暂存从设备到内存、或从内存到设备的数据)、MAR(内存地址寄存器:在输入时,MAR 表示数据应放到内存中的什么位置;输出时 MAR 表示要输出的数据放在内存中的什么位置)、DC(数据计数器:表示剩余要读/写的字节数)、CR(命令/状态寄存器:用于存放 CPU 发来的 I/O 命令,或设备的状态信息)等。DMA 控制器不是每次直接读一整块,也是一个字一个字来读取写入 DR
- 完成一次读/写操作的流程
- CPU 干预的频率: 仅在传送一个或多个数据块的开始和结束时才需要 CPU 干预
- 数据传送的单位: 每次读/写一个或多个块(每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)
- 数据的流向
- 读操作: I/O 设备 -> 内存
- 写操作: 内存 -> I/O 设备
- 主要优缺点
- 数据传输以块为单位,CPU 介入频率进一步降低。数据的传输不再需要先经过 CPU 再写入内存,数据传输效率进一步增加。CPU 和 I/O 设备的并行性得到提升
- CPU 每发出一条 I/O 指令,只能读/写一个或多个连续的数据块
通道控制方式
通道: 一种硬件,可以理解为弱化版 CPU 。通道可以识别并执行一系列通道指令
- 完成一次读/写的流程
- CPU 向通道发出 I/O 指令。指明通道程序在内存中的位置,并指明要操作的是哪个 I/O 设备。之后 CPU 就切换到其他进程执行了
- 通道执行内存中的通道程序(其中指明了要读入/写出多少数据,读/写的数据应放在内存的什么位置等信息)
- 通道执行完规定的任务后,向 CPU 发出中断信号,之后 CPU 对中断进行处理
- CPU 干预的频率: 极低,通道会根据 CPU 的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求 CPU 干预
- 数据传送的单位是一组块
- 数据的流向
- 读操作: I/O -> CPU
- 写操作: CPU -> I/O
- 主要优缺点
- CPU、通道、I/O 设备可并行工作,资源利用率高
- 实现复杂,需要专门的通道硬件支持
相关文章:
【操作系统学习笔记】文件管理1.3
【操作系统学习笔记】文件管理1.3 参考书籍: 王道考研 视频地址: Bilibili I/O 控制方式 程序直接控制方式中断驱动方式DMA 方式通道控制方式 程序直接控制方式 关键词: 轮询 完成一次读/写操作的流程 CPU 向控制器发出读指令。于是设备启动,并且状态寄存器设…...
基于springboot+vue的酒店管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...
Linux 相关命令
文章目录 目录相关操作vim 编辑器命令行模式插入模式底行模式 目录相关操作 查看当前目录下的文件 ls创建目录 mkdir 目录名进入文件,首先确认位于文件的目录 vi 文件名 vim 编辑器 命令行模式 控制光标的移动,字符或行的删除,移动复制某区域…...
阿里云搭建私有docker仓库(学习)
搭建私有云仓库 首先登录后直接在页面搜索栏中搜索“容器镜像服务” 进入后直接选择个人版(可以免费使用) 选择镜像仓库后创建一个镜像仓库 在创建仓库之前我们先创建一个命名空间 然后可以再创建我们的仓库,可以与我们的github账号进行关联…...
MySQL数据库基本操作(一)
数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库?* 用于存储和管理数据的仓库。 3. 数据库的特点:1. 持久化存储数据的。其实数据库就是一个文件系统2. 方便存储和管理数据3. 使用了统一的方式操作数…...
【暗月安全】2021年渗透测试全套培训视频
参与培训需要遵守国家法律法规,相关知识只做技术研究,请勿用于违法用途,造成任何后果自负与本人无关。 中华人民共和国网络安全法(2017 年 6 月 1 日起施行) 第二十二条 任何个人和组织不得从事入侵他人网络、干扰他…...
HTML极速入门
HTML基础 什么是HTML HTML(Hyper Text Markup Language),超文本标记语言. 超文本:比文本更强大.通过链接和交互式方式来组织和呈现信息的文本形式.不仅仅有文本,还可能包括图片,音频,或者自己经审阅过它的学者所加的评注,补充或脚注等. 标记语言:由标签构成的语言 HTML的标…...
Django框架——请求与响应
上篇文章我们学习了Django框架——配置文件和视图函数,这篇文章我们学习Django框架——请求与响应。 客户端和服务端的请求与响应过程:客户端访问某个网站并发出URL请求,服务器接受到请求后,根据请求内容来返回响应,如…...
rearrangement-challenge-2022环境使用学习(一)
搭建了rearrangement-challenge-2022的环境: https://github.com/facebookresearch/habitat-challenge/tree/rearrangement-challenge-2022 habitat最大的缺点是对不同的版本非常的敏感。本文只是针对rearrangement-challenge-2022的学习。 文档一开始会很不完善&a…...
[Uniapp]携带参数跳转界面(两种方法)
一、方法1:路由携参 假设现在有两个界面:界面A和界面B。并要由界面A跳转到界面B,则我们可以使用 uni.navigateTo({}) 跳转界面时,将参数附加在URL后,…...
Scrapy与分布式开发(2.1.2):python常用网络请求库httpx
Python httpx 模块详细讲解 一、引言 httpx 是一个用于发送 HTTP 请求的 Python 库,它提供了简单易用的 API,支持同步和异步请求,并且具有出色的性能和灵活性。httpx 是 requests 的一个现代替代品,它使用 httpcore 作为底层传输…...
07. Nginx进阶-Nginx负载均衡
简介 负载均衡 什么是负载均衡? 负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。 Nginx负载均衡 什么是Nginx负载均衡? Nginx负载均衡可以大…...
windows/linux下其他位置调用指定nodejs脚本报错Error: Cannot find module ‘esm’
问题: 有一个nodejs脚本名为html2word,同目录下还有它对应的package.json,正常在html2word所在目录下执行脚本没问题,但是在其他目录执行时报错:Error: Cannot find module ‘esm’ 原因: 在其他位置执行node脚本时…...
2024-03-05 linux 分区老显示满,Use 100%,原因是SquashFS 是一种只读文件系统,它在创建时就已经被填满,所有空间都被使用。
一、这两天一直纠结一个问题,无论怎么修改,linux 分区老显示满,Use 100%,全部沾满。如下图的oem分区。 二、导致出现上面的原因是:SquashFS文件系统里的空间利用率总是显示为100%。 三、SDK里面也说明SquashFS文件系统…...
蓝桥杯倒计时 41天 - KMP 算法
KMP算法 KMP算法是一种字符串匹配算法,用于匹配模式串P在文本串S中出现的所有位置。 例如S“ababac,P“aba”,那么出现的所有位置是13。 在初学KMP时,我们只需要记住和学会使用模板即可,对其原理只需简单理解ÿ…...
《汇编语言》- 读书笔记 - 第13章-int 指令
《汇编语言》- 读书笔记 - 第13章-int 指令 13.1 int 指令13.2 编写供应用程序调用的中断例程中断例程:求一 word 型数据的平方主程序中断处理程序执行效果 中断例程:将一个全是字母,以0结尾的字符串,转化为大写主程序中断处理程序…...
深入了解 Golang 条件语句:if、else、else if 和嵌套 if 的实用示例
条件语句 用于根据不同的条件执行不同的操作。Go中的条件可以是真或假。Go支持数学中常见的比较运算符: 小于 < 小于等于 < 大于 > 大于等于 > 等于 不等于 ! 此外,Go还支持常见的逻辑运算符: 逻辑与 && 逻辑或…...
大数据和机器学习在气象预报中的应用-张平文院士
报告链接:张平文院士 -- 大数据和机器学习在气象预报中的应用_哔哩哔哩_bilibili...
C#高级:Winform桌面开发中DataGridView的详解
一、每条数据增加一个按钮,点击输出对应实体 请先确保正确添加实体的名称和文本: private void button6_Click(object sender, EventArgs e) {//SQL查询到数据,存于list中List<InforMessage> list bll.QueryInforMessage();//含有字段…...
java八股文复习-----2024/03/05----基础---反射,动态代理。序列化
来源一 大彬八股文 来源二 2023 20W字八股文 2024秋招八股文 1.Java创建对象有几种方式? Java创建对象有以下几种方式: 用new语句创建对象。使用反射,使用Class.newInstance()创建对象。调用对象的clone()方法。运用反序列化手段&#x…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
