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

I/O外设管理(第七章)

I/O系统的功能、模型与接口

基本功能

隐藏I/O设备细节

保证设备无关性

提高处理机和I/O设备的利用率

对I/O设备进行控制

确保对设备的正确共享

处理错误

层次结构与模型

用户层软件

与设备无关的I/O软件

设备驱动程序

中断处理程序

I/O系统的接口

块设备接口

流设备接口

网络通信接口

I/O系统

I/O硬件

分类

信息交换单位:字符设备、块设备

设备使用特性:存储设备、I/O设备

传输速率:低速设备、中速设备、高速设备

设备共享属性:独占设备、共享设备、虚拟设备

设备控制器

功能:与设备通信、控制设备操作、处理设备数据、协调设备

组成:指令寄存器、指令编码器、定时与控制电路、程序计数器、标志寄存器、堆栈和堆栈指针、寄存器组

通道

通过执行通道程序,管理I/O操作的控制器

CPU与外设的并行工作

价格昂贵 瓶颈问题

I/O软件

I/O控制方式

程序控制方式——CPU直接管理I/O操作

中断控制方式——外部设备可以通过触发中断来通知CPU数据的可用性

直接存储器访问DMA方式——允许外部设备之间访问系统内存,不需要经过CPU

通道控制方式——专用硬件设备,独立执行I/O操作,不需要CPU直接干预

设备无关性

设备分配:

数据结构——系统设备表、设备控制表、控制器控制表和通道控制表(通道控制表 一对多 控制器控制表)

设备分配算法——先来先服务、优先级

用户层软件

系统调用与库函数:

系统调用执行时涉及内核态和用户态之间的切换

库函数执行时不涉及内核态和用户态之间的切换

SPOOLing系统:

组成:输入井和输出井(磁盘中)、输入缓冲区和输出缓冲区(内存中)、输入进程和输出进程

特点:提高I/O速度,将独占设备改造为共享设备,实现虚拟设备功能

应用:假脱机打印技术——磁盘缓冲区、打印缓冲区、假脱机管理进程和假脱机打印进程

※需要外存的支持;需要多道程序设计技术的支持;可以让多个作业共享一台独占设备;但是设备与输入/输出井之间数据传送是由系统实现的

缓冲区管理

※引入缓冲的原因

缓冲:使用专用的硬件缓冲器或在内存中划出一个区域用来暂时存放输入输出数据的器件

协调速度相差很大的设备之间的数据传送,减少对CPU的中断频率,放宽对中断响应时间的限制,提高CPU和I/O设备之间的并行性;缓和处理器和内存之间访问速度不匹配的矛盾

高速缓存

主存和CPU之间,临时存储区域,快速访问

缓冲区

单缓冲

双缓冲——两个缓冲区(写入+读取)

循环缓冲——固定大小的缓冲区

缓冲池——集中管理的内存区域

磁盘

外部设备

磁盘地址

柱面号、盘面号、扇区号

磁盘类型

固定头磁盘

移动头磁盘

磁盘访问时间T

磁盘访问时间=寻道时间+旋转延迟+传输时间

磁盘调度算法

先来先服务FCFS

最短寻道时间优先SSTF

电梯算法/扫描算法SCAN

循环扫描算法CSCAN

※磁臂黏着

概念:系统总是访问磁盘的某个磁道二不响应其他磁道的访问需求;有一个或几个进程对某一磁道有着较高的访问频率,反复对一个磁道进行I/O请求

先来先服务不会产生该现象

磁盘管理

磁盘初始化

引导块

坏块

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

磁盘高速缓存

提前读、延迟写、优化物理块分布、虚拟盘

廉价磁盘冗余阵列

※设备独立性

可以使用文件名访问物理设备

用户程序使用逻辑设备与物理设备之间的映射关系

用户程序中使用的是逻辑设备名

访问设备的驱动程序与具体设备无关,更换设备时应用程序无需修改

http://www.xdnf.cn/news/9147.html

相关文章:

  • 本周 edu教育邮箱注册可行方案
  • Python函数异常处理底层实现原理
  • 机器学习-朴素贝叶斯分类
  • Partial Overwrite绕过PIE保护-[HNCTF 2022 WEEK2]ret2text
  • 将docker数据目录迁移到 home目录下
  • 军事大模型及其应用分析
  • 电脑清理重复文件秒扫 + 相似媒体去重 找出空文件夹 / 损坏文件 批量清理
  • 从比分滚动到数据革命:体育数据如何重构我们的观赛体验?
  • 【运维】Zerotier删除节点后的恢复操作指南
  • ASP.NET Core OData 实践——Lesson2增删改查Entity和EntitySet(C#)
  • 三大数据库【字符串连接】与【数据类型转换】对比:Oracle vs MySQL vs SQL Server
  • H310昂达等主板无法开机自启的原因
  • AI时代新词-数字孪生(Digital Twin)
  • 【C++ STL string :深入浅出 从入门到实战】
  • Android设计模式学习总结目录
  • PyTorch入门教程:下载、安装、配置、参数简介、DataLoader(数据迭代器)参数解析与用法合集
  • 能说一下JVM的内存区域吗
  • [De1CTF 2019]SSRF Me
  • OpenSSL 签名格式全攻略:深入解析与应用要点
  • Node.js全局函数详解:定时器与即时回调
  • SCADA|KingSCADA信创4.0-Win10安装过程
  • 全能邮箱全能邮箱:实现邮件管理的自动化!
  • 5月26日复盘-自注意力机制
  • NSSCTF-[安洵杯 2018]boooooom
  • BugKu Web之get
  • Linux之软件包管理器(CentOS系统) —— yum
  • 虚拟机配置桥接,远程工具直接访问
  • Vue3监听对象数组属性变化方法
  • 认知无线电系统中采用能量检测频谱感知
  • Java 树形结构,根据名称搜索