操作系统之I/O设备管理

news2024/9/23 0:09:51

I/O系统的组成

I/O系统的结构

微机I/O系统
  • 总线型I/O系统结构,CPU与内存之间可以直接进行信息交换,但是不能与设备直接进行信息交换,必须经过设备控制器。
主机I/O系统
  • I/O系统可能采用四级结构,包括主机、通道、控制器和设备。
  • 一个通道客户已控制多个设备控制器,一个设备控制器也可以控制多个设备。

I/O设备的分类

按传输速录分类
  • 低速设备
    • 键盘和鼠标
  • 中速设备
    • 打印机
  • 高速设备
    • 磁带机、磁盘机、光盘机
按信息交换的单位分类
  • 块设备
    • 数据的存取以数据块为单位,如磁盘
  • 字符设备
    • 传送字节流,没有使用块结构,如鼠标
按设备的共享属性分类
  • 独占设备
    • 是必须作为临界资源以互斥方式访问的设备
      • 如打印机
  • 共享设备
    • 是允许多个进程共同访问的设备
      • 如硬磁盘
  • 虚拟设备
    • 是通过某种虚拟技术把一台物理设备变成若干逻辑设备,从用户的角度看,多个用户拥有各自的设备,可以随时向设备发出访问请求并得到系统应答

设备控制器

I/O设备分为机械和电子两部分,设备控制器对应电子部分,通常是可编程的
  • 什么是设备控制器
    • 设备控制器是CPU与I/O设备之间的接口,接收I/O的命令并控制设备完成I/O工作
    • 设备控制器是一个可编址设备,连接多个设备时可有多个设备地址
  • 设备控制器的功能
    • 接收和识别命令
    • 数据交换
    • 设备状态的了解和报告
    • 地址识别
    • 数据缓冲
      • 设备控制器可以存储数据,作为CPU和I/O之间的缓冲
  • 设备控制器的组成
    • 设备控制器与处理机的接口
      • 数据线、控制器、和地址线
    • 设备控制器与设备的接口
      • 设备与设备控制器接口中的3类信号为数据、状态和控制信号
    • I/O逻辑
      • 主要有指令译码器和地址译码器两部分功能部件构成

I/O通道

I/O通道式一种特殊的处理机,它具有执行I/O指令的能力,并通过执行通道程序来控制I/O操作
引入通道能够使CPU从控制I/O的任务重解脱,使CPU与I/O并行工作,提高CPU的利用率和系统的吞吐量

I/O控制方式

轮询

早期的计算机系统,因为没有中断机制,处理器对输入/输出的控制不得不采取程序轮询的方式

中断

现代计算机系统广泛采用中断控制方式完成对I/O的控制

DMA控制方式

对于磁盘驱动器这类的设备,每次数据传输量较大,采用中断控制方式,传输一个数据块就需要进行多次中断处理
DMA控制需要特殊结构的设备控制器
  • 命令/状态寄存器CR
  • 内存地址寄存器MAR
  • 数据计数器DC
  • 数据寄存器DR

缓冲管理

缓冲的引入

在数据到达速率与数据离去速率不同的地方,都可以引入缓冲区。引入缓冲区的主要原因有
  • 处理数据流的生产者与消费者之间的速度差异
  • 协调传输数据大小不一致的设备

单缓冲

对于面向块的设备
  • 输入数据被传送进入系统缓冲区,当传送完成是,进程把该快移到用户空间,并立即请求另一块系统缓冲区。
  • 用户进程可以在下一块数据正在读入系统缓冲区时,处理用户去中的那一块数据
对于面向流的I/O
  • 键盘。打印机和传感器等都属于面向流的设备

双缓冲

当一个进程往这一个缓冲区中传送数据(或从这个缓冲区中读取数据)时,操作系统正在清空(或填充)另一个缓冲区,这种技术称为双缓冲,或缓冲交换

循环缓冲

双缓冲方案可以平滑I/O设备和进程之间的数据流,如果某个特定进程的性能是关注的焦点,常常会希望相关I/O操作能够跟得上这个进程。如果这个进程突然快速执行了大量的I/O,仅有双缓冲就不够了
  • 循环缓冲的组成
    • 多个缓冲区
      • 空缓冲区R:生产者进程下一个可用的空缓冲区
      • 已装满数据的缓冲区G:用于指示消费者进程下一个可用的装有产品的缓冲区
      • 现行工作缓冲区C:消费者进程正在使用的工作缓冲区
    • 多个指针
      • Nextg
        • 用于指示消费者进程下一个可用的装有数据的缓冲区
      • Nexti
        • 用于指示生产者进程下一个可用的空缓冲区
      • Current
        • 用于指示进程正在使用的工作缓冲区
  • 循环缓冲的使用
    • Getbuf过程
      • 消费者进程要使用缓冲区中的数据时,该过程将Nextg指向的缓冲区提供给进程使用,并吧他改成有Current指针指向的现行工作缓冲区,同时使Nextg指向下一个可用的装有数据的缓冲区G
      • 而当生产者进程要使用空缓冲区来装数据时,也通过调用Getbuf过程,把Nexti指示的空缓冲区提供给生产者进程使用,然后使Nexti指向下一个空缓冲区R
    • Releasebuf过程
      • 当进程使用完缓冲区之后,调用Releasebuf过程释放缓冲区
  • 进程同步
    • Nexti指针追上Nextg
      • 生产者进程速度大于消费者进程速度
        • 阻塞生产者进程,等待消费者进程为生产者进程释放空缓冲区R
    • Nextg指针追上Nexti
      • 消费者进程速度大于生产者进程速度
        • 阻塞消费者进程,等待生产者进程为消费者进程释放装有数据的缓冲区G
  • 缓冲池
    • 缓冲池的组成
      • 3种类型的缓冲区
        • 空缓冲区
        • 装满输入数据的缓冲区
        • 装满输出数据的缓冲区
      • 3种队列
        • 空缓冲队列emq
        • 输入队列inq
        • 输出队列outq
      • 4种工作缓冲区
        • 收容输入数据的缓冲区
        • 提取输入数据的缓冲区
        • 收容输出数据的缓冲区
        • 提取输出数据的缓冲区
    • Getbuf过程和Putbuf过程
    • 缓冲区的工作方式
      • 收容输入
        • 在进程需要收容输入数据时,需要先从空缓冲队列提取一个空缓冲区,将输入数据写入缓冲后,再把装入了输入数据的缓冲区插入到输入队列中去
          • Getbuf(emq)
          • 将输入数据写入缓冲区
          • putbuf(inq,hin)
      • 提取输入
        • 当进程需要输入数据时(如计算进程需要提取输入数据,然后对数据进行计算处理),先从输入队列提取输入缓冲区,然后从中提取输入数据,最后把缓冲区作为空缓冲区插入空缓冲队列。
          • Getbuf(inq)
          • 从缓冲区提取数据
          • putbuf(emq,sin)
      • 收容输出
        • 在进程需要收容输出数据时,要先从空缓冲队列提取一个空缓冲区,将输入数据写入缓冲后,再把装入了输出数据的缓冲区插入到输出队列中去。
          • Getbuf(emq)
          • 将输入数据写入缓冲区
          • putbuf(outq,hout)
      • 提取输出
        • 当进程需要输出数据时(如打印进程需要提取输出数据送入打印机),先从输出队列提取输出缓冲区,然后从中提取输出数据,最后把这个缓冲区插入空缓冲队列。
          • Getbuf(outq)
          • 输出数据
          • putbuf(emq,sout)

设备分配

设备分配中的数据结构

设备控制表DCT
控制器控制表COCT
通道控制表CHCT
系统设备表SDT

设备分配

设备的固有属性
  • 独占设备
  • 共享设备
  • 可虚拟设备
设备分配算法
  • 先来先服务
  • 基于优先权的分配算法
设备分配方式
  • 安全分配方式
    • 这种分配方式中,每当进程发出I/O请求后,便进入阻塞状态,直到其I/O操作完成时才被唤醒。
  • 不安全分配方式

设备独立性

设备独立性的概念
  • 为了提高操作系统的可适应性和可扩展性,在现代操作系统中都毫无例外地实现了设备独立性,也称设备无关性。
    • 逻辑设备
    • 物理设备
    • 系统必须具有将逻辑设备名称转换为物理设备名称的功能
实现设备独立性带来的好处
  • 应用程序与物理设备无关
  • 易于处理输入/输出设备的故障
  • 提高了系统的可靠性,增加了设备分配的灵活性
设备独立软件
  • 执行所有设备的共有操作
  • 向用户层软件提供统一的接口

独占设备的分配程序

分配设备
分配控制区
分配通道

SPOOLing技术

什么是SPOOLing(假脱机技术)
  • SPOOLing系统的组成
    • 输入井和输出井
    • 输入缓冲区和输出缓冲区
    • 输入进程SPi和输出进程SPo
利用SPOOLing技术实现共享打印机

I/O软件原理

设备管理软件的功能
  • 实现I/O设备的独立性
  • 错误处理
  • 异步传输
  • 缓冲管理
  • 设备的分配和释放
  • 实现I/O控制方式
中断处理程序
设备驱动程序
与硬件无关的I/O软件

磁盘管理

磁盘结构

数据的组织和格式
  • 存储面
    • 磁道
    • 扇区
磁盘的类型
  • 固定头磁盘
  • 移动头磁盘
磁盘的访问时间
  • 寻道时间
  • 旋转延迟时间
  • 传输时间

磁盘调度

先来先服务
扫描算法
循环扫描算法
NStepSCAN和FSCAN调度算法

提高磁盘I/O速度的方法

提前读
延迟写
优化物理块的分布
虚拟盘
  • 虚拟盘通常用于存放临时文件,如编译程序产生的目标程序等
磁盘高速缓存
  • 一组逻辑上属于磁盘,而物理上是驻留在内存中的盘块

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

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

相关文章

神经网络面试题目

1. 批规范化(Batch Normalization)的好处都有啥?、 A. 让每一层的输入的范围都大致固定 B. 它将权重的归一化平均值和标准差 C. 它是一种非常有效的反向传播(BP)方法 D. 这些均不是 正确答案是:A 解析: ‌‌‌‌  batch normalization 就…

TikTokDownloader 开源项目操作教程

TikTokDownloader TikTokDownloader 是一个开源的多功能视频下载工具,它专门用于从抖音和TikTok平台下载无水印的视频、图集和直播内容。这个工具支持批量下载账号作品、收藏内容,并可以采集详细数据。它提供了命令行和Web界面,具有多线程下…

图像处理基础知识点简记

简单记录一下图像处理的基础知识点 一、取样 1、释义 图像的取样就是图像在空间上的离散化处理,即使空间上连续变化的图像离散化, 决定了图像的空间分辨率。 2、过程 简单描述一下图象取样的基本过程,首先用一个网格把待处理的图像覆盖,然后把每一小格上模拟图像的各个…

re题(38)BUUCTF-[FlareOn6]Overlong

BUUCTF在线评测 (buuoj.cn) 运行一下.exe文件 查壳是32位的文件,放到ida反汇编 对unk_402008前28位进行一个操作,我们看到运行.exe文件的窗口正好是28个字符,而unk_402008中不止28个数据,所以猜测MessageBoxA(&#x…

十一、 JDK17 新特性梳理

文章目录 为什么是JDK17语法层面新特性1、文本块2 、Switch 表达式增强3、instanceof的模式匹配4、var 局部变量推导 模块化及类封装1、记录类 record2 、隐藏类 Hidden Classes3 、密封类 Sealed Classes4、模块化 Module System1 、什么是模块化2、声明一个module3 、require…

从零开始讲DDR(4)——Xilinx方案

本文依据的是xilinx的PG150文档,主要介绍的是xilinx的ultrascale系列中内存资源的使用。 一、方案概述 Xilinx UltraScale™架构中的DDR3/DDR4 SDRAM ip核旨在支持高性能的内存接口解决方案。这些ip可以用于将DDR3和DDR4 SDRAM内存类型集成到设计中,提供…

干货 | 2024数智新时代制造业数字化创新实践白皮书(免费下载)

导读:本白皮书将对制造业发展历程、现状、趋势与核心难题做深入解读,并在此基础上提出了相应的制造行业解决方案,结合业内实践成功的客户案例来详析信息化转型的有效方法,以供生产制造行业的从业者参考交流。

计算机毕业设计 基于SpringBoot框架的网上蛋糕销售系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

解决SVN蓝色问号的问题

桌面或文件夹右键,选择TortoiseSVN->Settings打开设置对话框,选择Icon Overlays->Overlay Handlers->取消钩选Unversioned。确定,重启系统即可

扫码挪车是怎么实现的呢?一篇文章带你了解一下!扫码挪车小程序基础版上线了!!!

挪车小程序系统源码的功能特点 快速定位与挪车请求:车主通过小程序可以快速定位车辆位置,并发送挪车请求。系统会自动将请求发送给附近的车主,提醒其尽快挪车。实时通信与交互:小程序支持实时通信功能,车主之间可以通…

【安当产品应用案例100集】017-助力软件服务商高效集成多因素认证

一、企业案例背景 在本案例中,某企业作为一家软件技术服务商,为包括银行、政府机构在内的多个行业提供定制化的软件服务。由于各个行业的安全需求各异,例如银行和政府机构倾向于使用UKEY进行身份验证,而其他企业则可能偏好使用数…

[Python学习日记-26] Python 中的文件操作

[Python学习日记-26] Python 中的文件操作 简介 操作模式 循环文件 其他功能 混合模式 修改文件 简介 在 Python 中的文件操作其实和我们平时使用的 Word 的操作是比较类似的,我们先说一下 Word 的操作流程,流程如下: 找到文件&#x…

Leetcode Hot 100刷题记录 -Day19(回文链表)

回文链表 问题描述: 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2&#xff…

UnLua访问C++属性、动态生成Actor

一、访问C属性、动态生成Actor 1、在C类MyBaseActor中新增蓝图可编辑属性:Name public:UPROPERTY(EditAnywhere)FString Name;2、在继承自C的蓝图子类BP_BaseActor中给Name赋值 3、在Lua中实现点击按钮动态生成Actor,并访问其Name属性 function WBP_FirstLua_C:Construct()s…

FreeRTOS下UART的封装

FreeRTOS下UART的封装_哔哩哔哩_bilibili Git使用的一个BUG: 当出现这个问题是因为git本身的安全证书路径有问题,我们需要重新指定路径 P1:UART程序层次

AIGC时代算法工程师的面试秘籍(第二十二式2024.9.2-9.15) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试经验,力求让读者在获得心仪offer的同时,增强技术基本面。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky…

【VLM小白指北 (1) 】An Introduction to Vision-Language Modeling

开一个新坑Vision-Language Modeling (VLM) ,原文76页,慢慢更,for beginners,但也不能之前啥都不会啊。 原文链接:An Introduction to Vision-Language Modeling Introduction 存在的问题:将语言与视觉相…

制造解法 Manufactured Solutions 相关的论文的阅读笔记

Verification of Euler/Navier–Stokes codes using the method of manufactured solutions https://doi.org/10.1002/fld.660 粘性项与扩散项之间的平衡 For the Navier–Stokes simulations presented herein, the absolute viscosity is chosen to be a large constant va…

java8 常用操作案例【经典版】超赞!

目录 一 案例 1.1 对象转list 1.2 过滤对象 1.3 排序 1.4 匹配 1.5 最大值最小值 1.6 拼接字符串 1.7 求和 1.8 分组 1.9 分组求和 1.10 综合案例 一 案例 1.1 对象转list /*** author admin对象转map ; mapper层实体类获取,到业务层转换为DTO,* return void…

当你在Linux系统中使用MySQL命令行工具查询数据库时,如果中文显示为问号(?)或其他乱码,简单解决办法。(2)

文章目录 1、问题出现2、解决办法 1、问题出现 2、解决办法 mysql -u [username] -p --default-character-setutf8 [database_name]rootab66508d9441:/# mysql -uroot -p123456 --default-character-setutf8 tingshu_album mysql: [Warning] Using a password on the command …