1 I/O硬件组成

1.1 设备接口——控制器的作用

  • 操作系统将命令写入控制器的接口寄存器(或接口缓冲区)中,以实现输入/输出,并从接口寄存器读取状态信息或结果信息。

  • 控制器的任务:把串行的位流转换为字节块,并进行必要的错误修正。

    首先,控制器按位进行组装,然后存入控制器内部的缓冲区中形成以字节为单位的块;在对块验证检查和并证明无错误时,再将它复制到内存中。

1.2 I/O端口地址

定义:接口电路中每个寄存器具有的、唯一的地址,是个整数。

I/O指令形式与I/O地址是相互关联的,主要有两种形式:

I/O指令形式 定义 优点 缺点
I/O独立编址(I/O专用指令) 分配给系统中所有端口的地址完全独立 外设不占用内存的地址空间;易于区分是对内存操作还是I/O操作 I/O端口操作指令类型少,不灵活
内存映像编址(内存映像I/O模式) 分配给系统中所有的地址空间与内存的地址空间统一编址 凡是可对内存操作的指令都可对I/O端口操作,不需要专门的I/O指令 占用内存空间

2 I/O控制方式

I/O控制方式 定义
可编程I/O(轮询/查询) 由CPU代表进程给I/O模块发送I/O命令,进程进入忙等待状态直到操作完成
中断驱动I/O 为了减少设备驱动程序不断询问控制器状态寄存器的开销,I/O操作结束后由设备控制器主动通知设备驱动程序
DMA 直接的内存存取,由专门的控制器完成

2.1 轮询方式流程

2.2 中断驱动I/O方式流程

3 缓冲技术

为了解决CPU与I/O设备之间速度不匹配的问题。凡是数据到达和离去速度不匹配的地方均可采用缓冲技术。

3.1 缓冲技术的实现

1 分类

缓冲区分类 实现机制
硬缓冲 由硬件寄存器实现
软缓冲 在内存开辟一个空间用作缓冲区

2 缓冲区管理

分类 实现
单缓冲
双缓冲
缓冲池 统一管理多个缓冲区,采用有界缓冲区的生产者/消费者模型对缓冲池中的缓冲区进行循环使用

3 Unix的System V缓冲技术

设计理念

采用缓冲池技术:

  • 缓冲区结合提前读和延迟写技术对就有重复性及阵发性I/O进程很有帮助
  • 可以充分利用之前从磁盘读入、虽已传入用户区但仍在缓冲区的数据。

数据结构

缓冲池:由200个缓冲区组成,每个缓冲区包括两个部分:缓冲首部+缓冲数据区。

缓冲区由两种队列构成:

1、空闲缓冲区队列(av链):队列头部为bfreelist

2、设备缓冲队列(b链):链接所有分配给各类设备使用的缓冲区,按照散列的方式组织

每个缓冲区可以同时在av链和b链存在。开始时当缓冲区未被使用时在空闲av链。当开始I/O请求时,有缓冲区会被分配给I/O请求,此时这些缓冲区就会出现在设备I/O请求队列和设备b链。当I/O完成后,设备I/O请求队列中的缓冲区就会还给av链,此时缓冲区在av链和设备b链中都存在。

实现机制

当进程想从指定的盘读取数据时:

  • 系统根据盘块号从设备b链中查找,如果找到,则将该缓冲区状态标记为“忙”,并从空闲av队列中取下,再完成从缓冲区到内存用户区的数据传送;
  • 如果在设备b链中没有找到,则从空闲av链队首摘取一个缓冲区,插入设备I/O请求队列,并从原设备b链取下,插入到新的设备b链中(该新链由读入信息盘块号确定);
  • 当系统完成从缓冲区到内存用户区的数据传送后,要把缓冲区释放,链入空闲av链队尾;
  • 当数据从磁盘块读入到缓冲区并传送到内存用户区之后,该缓冲区一直保留在原设备b链中,即它的数据一直有效。若又要使用它,则从空闲av链中取下,使用完后插入到空闲av链队尾。若一直未使用则该缓冲区从空闲av链慢慢升到队首,最后被重新分配。

4 I/O性能问题

  • 减少或缓解速度差距—>缓冲技术
  • 使CPU不等待I/O—>异步I/O
  • 让CPU摆脱I/O操作—>DMA、通道

4.1 同步传输I/O流程

在I/O处理过程中,CPU处于空闲等待状态,而在处理数据的过程中,不能同时进行I/O操作。

4.2 异步传输I/O的基本思想

将访问控制分成两段进行;

发出读取指令后继续做其他操作;

当需要用读入的数据的时候,再使用wait命令等待其完成;

不引入线程切换,减少上下文开销的消耗。

【操作系统】I/O系统相关推荐

  1. Java 获取操作系统名字、系统版本、cpu信息

    Java 获取操作系统名字.系统版本.cpu信息 System.getProperty("os.name");//得到操作系统名字 System.getProperty(" ...

  2. 以下哪些不是Linux操作系统特点,Linux系统都有哪些特点?很多人不知道!

    提及Linux可能很多人都不太了解,其实Linux跟大家熟知的Windows一样,都属于操作系统,对比Windows系统,Linux更适合应用在服务器领域,为什么呢?Linux系统都有哪些特点?跟小编 ...

  3. 操作系统笔记——Linux系统实例分析、Windows系统实例分析

    文章目录 传送门 Linux进程管理 Linux进程组成 Linux进程链表 Linux进程控制 用户进程创建与撤销 0,1,2号进程 Linux进程切换 Linux进程调度 内核同步 Linux储存 ...

  4. 旧电脑 存储服务器 系统,爷爷级PC,用白菜价内存搭建内存硬盘操作系统,老系统飞起来。...

    认识众多玩家高手/拆客/DIY爱好者,查阅更多资源,一起学习技术知识 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 爷爷级PC,用白菜价内存搭建内存硬盘操作系统,老系统飞起来. 系统配置: ...

  5. 华为云服务器是什么操作系统,云服务器操作系统是什么系统

    云服务器操作系统是什么系统 内容精选 换一换 ISO是一种光盘映像文件,通过特定的压缩方式,将大量的数据文件统一为一个后缀名为iso的映像文件.ISO文件可以理解为从光盘中复制出来的数据文件,所以IS ...

  6. 操作系统19———IO系统之与设备无关的I/O软件用户层的I/O软件

    操作系统19---IO系统之与设备无关的I/O软件&用户层的I/O软件 一.目录 二.与设备无关软件的基本概念 设备独立性(设备无关性)的含义:应用程序中所用的设备,不局限于使用某个具体的物理 ...

  7. 操作系统18———IO系统之中断机构和设备驱动程序

    操作系统18---IO系统之中断机构和设备驱动程序 一.目录 文章目录 操作系统18---IO系统之中断机构和设备驱动程序 一.目录 二.中断简介 1.中断和陷入 2.中断限量表和中断优先级 3.对多 ...

  8. zabbix日志监控:操作系统、业务系统、文件大小、多行日志

    zabbix日志监控:操作系统.业务系统.文件大小.多行日志 目录 1 监控操作系统日志 2 监控业务系统日志 具体要求: 分析: 操作: 3 监控日志文件大小 (1)在被管主机当中安装agent ( ...

  9. win7和linux系统的区别,Linux操作系统 和WIN7系统 的特点

    Linux操作系统 和WIN7系统 的特点 今天下载了Linux 系统  现在用的是WIN7      想换成Linux 他门2个系统的特点 更新时间:2019-03-14 18:42 最满意答案 L ...

  10. linux操作系统原理_Linux系统从新手到运维老鸟学习指南

    Linux是在1990年底到1991年由芬兰大学的学生LinusTorvalds利用Minix操作系统作为开发平台编写了内核,目前由世界各地的爱好者共同开发和维护的与UNIX兼容的操作系统,也是自由和 ...

最新文章

  1. AI矢量绘图软件技能学习视频教程
  2. C#面向对象设计模式纵横谈——6.Prototype 原型模式(创建型模式)
  3. influxdb数据过期_Influxdb Cluster下的数据写入
  4. “劣质”的PHP代码简化
  5. 采购光纤收发器时应该注意哪些事项?
  6. 虚拟机中ubuntu可以使用显卡吗_在KVM下使用ubuntu19.10安装Anbox
  7. select, poll, epoll
  8. RabbitMQ学习之messageconver插件实现(Gson)
  9. iQOO Neo6双色官方图公布:云阶三摄 辨识度十足
  10. 如何通过 Apple Watch 解锁 Mac
  11. java quartz配置
  12. 【android】网络定位服务NetworkLocationProvider
  13. 单龙芯3A3000-7A1000PMON研究学习-(10)撸起袖子干-pmoncfg Bonito 干了什么?(这是make cfg的部分)
  14. python求积分面积的几个方法
  15. java合并果子_合并果子(经典优先队列)
  16. Linux系统学习环境搭建 - 跟小智一起学网络(3)
  17. Quorum企业以太坊搭建区块链记录系列
  18. word中如果出现某一行突然文字突然间距增大,两种解决方案
  19. 女神节送什么比较好?适合女生用的蓝牙耳机推荐
  20. 百度APP“看听模式”:“AI主播”借道信息流全面落地?

热门文章

  1. java志愿者活动招募申请报名系统springbootboot
  2. for-in 中的 index 类型
  3. Android Audio混音实践篇
  4. 扔硬币先手获胜概率问题
  5. sqlsever回滚操作_sqlserver事务与回滚
  6. sqlserver 人名_SQLserver运维必备:T-SQL语句练习
  7. 手机wps怎么改html文件后缀名,手机WPS如何制作个人简历 WPS一键修改文档重命名方法分享...
  8. 2021-2025年中国物理疗法电子病历和计费软件行业市场供需与战略研究报告
  9. csgo跑图文件_CSGO:萌新入坑如何快速优化游戏设置?这个跑图指令也是十分实用...
  10. 安装VMware Tools显示灰色正确解决办法