精灵王


  • 首页

  • 文章归档

  • 所有分类

  • 关于我

  • 搜索
设计模式-行为型 设计模式-创建型 设计模式-结构型 设计 系统设计 设计模式之美 分布式 Redis 并发编程 个人成长 周志明的软件架构课 架构 单元测试 LeetCode 工具 位运算 读书笔记 操作系统 MySQL 异步编程 技术方案设计 集合 设计模式 三亚 游玩 转载 Linux 观察者模式 事件 Spring SpringCloud 实战 实战,SpringCloud 源码分析 线程池 同步 锁 线程 线程模型 动态代理 字节码 类加载 垃圾收集器 垃圾回收算法 对象创建 虚拟机内存 内存结构 Java

(九)操作系统-设备管理

发表于 2021-04-23 | 分类于 操作系统 | 0

概述

计算机外围设备

  • 存储型设备:磁带机、磁盘机等,以存储大量的信息和加快检索为目标,作为主存储器的扩充,又称为辅助存储器;
  • 输入输出型设备:显示器、打印机等,把外界信息输入计算机,把运算结果从计算机输出。

设备管理,普遍使用I/O中断、缓冲区管理、通道、设备驱动调度等多种技术,较好地克服了外设与主机速度不匹配的问题,使主机与外设并行工作,提高使用效率。

I/O功能实现技术的进展

  • 主存与外部设备之间的信息传递操作称为I/O操作;
  • 早期CPU直接控制和管理外部设备;
  • 而后在设备上添加了设备控制器或I/O模块,此时处理器开始逐渐与外部设备的有关细节相脱离;
  • 随着中断技术的出现,I/O执行模式中使用了中断技术;
  • 出现直接存储访问DMA技术,使I/O模块可以直接控制主存,在没有处理器的干预下向或者从主存移动数据块;
  • I/O模块的概念进一步发展成为专门的I/O处理器,此时CPU完全从I/O实现的细节中脱离出来。

I/O子系统的技术模式

编程I/O

  • 处理器根据用户进程中的指令,向I/O设备块发出I/O命令;
  • 在I/O操作完成前,进程执行忙等待操作;
  • 主要用于简单的微处理器中。

中断驱动I/O

  • 处理器根据用户进程中的指令,发出I/O命令启动I/O设备;
  • 进程可继续执行其他语句,也可阻塞等待I/O完成。

直接存储访问(direct memory access,DMA)

  • 一个DMA模块控制主存和I/O设备间直接进行数据交换;
  • 在整个传输过程中不需要CPU的任何干预。

直接存储访问DMA

DMA方式是一种完全由硬件执行I/O功能的方式,在高速大容量存储器和主存之间交换数据时,若采用编程I/O和中断驱动I/O方式都有弊端;

  • 在编程I/O方式下,每传送一个字节(或字)要执行若干条指令,并占用多个存储周期,每传完一个字节要判断一批数据是否已经完成,若没有则重新启动外设工作,占用很多CPU时间,使主机效率受到很大影响;
  • 在中断驱动I/O方式下,虽然可以提高主机效率,但会使主机处于频繁中断和从中断返回的过程中,从而加重与中断有关的额外负担,严重降低了CPU的性能。

DMA方式主要优点:速度快,由于CPU根本不参加传送操作,因此节省了CPU时间。

DMA方式的缺点是:硬件线路比较复杂。

I/O子系统的设计目标

I/O子系统控制主存与外围设备之间的数据传输,其设计目标主要有:

  • 有效性——I/O操作往往成为系统瓶颈,影响着系统性能和吞吐量的提高,在所
    有外设的I/O能力中,最为重要的是磁盘的I/O性能,它是分页系统和文件系统良
    好运行的基础,同时又是最重要的保障;
  • 通用性——系统中的设备种类繁多,特点和性能千差万别,要求以一致的方式来
    管理所有设备,将设备看成一致的外部接口形式,要达到通用性,应使用层次化
    和模块化的方法。

设备分类

按输入输出特性分:

  1. 输入型外围设备、输出型外围设备、存储型外围设备三类;

按输入输出信息交换的单位分:

  1. 字符设备——存储或传送不定长的数据,对字符设备不能随机访问,也不允许查找操作,如:终端、打印机、鼠标、声卡等;
  2. 块设备——存储的是定长且可随机访问的数据块,如:硬盘驱动器、软盘驱动器、CDROM驱动器等。

输入输出型设备多为字符设备,与内存进行信息交换的单位是字节;

存储型外围设备一般为块设备,一次与内存交换一个或几个块的信息;

存储型外围设备又分为:顺序存取存储设备(如磁带)和直接存取存储设备(如磁盘);

不同设备的物理特性在以下方面都有很大不同:数据传输率、数据表示方式、传输单位、出错条件等。

设备命名

主次设备号

  • 内核用设备类型描述加上两个称作主、次设备号的数字来标识设备;
  • 设备类型描述:块设备类型为bdevsw,字符设备类型为cdevsw;
  • 主设备号:标识设备的类型(如磁盘、磁带、打印机等设备类型),在特殊情况下直接标识该类型设备的设备驱动程序;
  • 次设备号:标识具体的多个同类设备中的每个设备的序号,称为设备的实例;
  • 使用dev_t变量类型来描述主次设备号。

内部号和外部号

  • 内部设备号:表示设备驱动程序,并且是设备开关表中的索引号;
  • 外部设备号:构成用户可见的设备表示,并存储在设备特殊文件的i节点中;
  • 外部设备号与内部设备号之间有映射表格。

设备文件与路径名

  • 把设备作为特殊的文件来处理;
  • 每个设备文件与特定的设备相关联,一般放在文件系统的/dev目录或其子目录下;
  • 与普通文件相比,设备文件在磁盘上没有数据块,但在文件系统中有一个永久的i节点。

磁盘调度

磁盘的硬件特性

  • 磁道、扇区
  • 磁盘系统可分为两种基本类型
    1. 固定头磁盘:盘面上的每一条磁道都有一个读写头,成本较高,使用较少;
    2. 移动头磁盘:每个盘面只有一个读/写磁头,每执行一次盘的操作都须先移动磁头,使其对准所要找的磁道,称为寻找操作;

对磁盘迭中的物理记录进行定位,需要三个参数:柱面号、磁头号、扇区号

磁盘调度算法

评价磁盘调度策略优劣的主要因素

  1. 吞吐量
  2. 平均响应时间
  3. 响应时间的可预期性(或变化幅度)

先来先服务策略(FCFS)

  • 在对盘的访问请求比较多的情况下,将降低设备服务的吞吐量和提高响应时间;
  • 但各进程得到服务的响应时间变化幅度较小,因此在访问请求不多的情况下使用。

最短查找时间优先策略(SSTF)

  • 选择请求队列中柱面号最接近于磁头当前所在的柱面的访问要求,作为下一个服务对象;
  • 可以得到比较好的吞吐量和较低的平均响应时间;
  • 但对用户服务请求的响应机会不是均等的,响应时间的变化幅度很大。

扫描策略(SCAN)

  • 选择请求队列中按磁臂前进方向最接近于磁头当前所在柱面的访问要求作为下一个服务对象;
  • 吞吐量比较大,平均响应时间较小,但两侧磁道被访问的频率仍然低于中间磁道。

循环扫描策略(C-SCAN)

对扫描策略的改进。

虚拟设备

现代操作系统都提供虚拟设备的功能来提高系统的效率。

脱机外围设备操作把独占使用的设备转化为可共享的设备,在一定程度上提高了效率,但却带来了若干新问题:

  1. 增加了外围计算机,不能充分发挥这些计算机的功效;
  2. 增加了操作员的手工操作,在主处理机与外围处理机之间要来回传递输入输出卷,这种手工操作出错机会多,效率低;
  3. 不易实现优先级调度,不同批次中的作业无法搭配运行。

假脱机技术的中心思想是通过共享设备使独占型设备变为共享的虚拟设备。

假脱机系统

操作系统将大批信息从输入设备上预先输入到输入井中暂时保存,这种方式称为“预输入”;

作业使用数据时不必再启动输入设备,而只要从输入井中读取;

同样,作业执行中不必直接启动输出设备输出数据,而只要将作业的输出数据暂时保存到输出井中,作业执行完毕后,由操作系统组织信息成批输出,这种方式称为“缓输出”。

优点:

  1. 首先,设备的利用率提高了;
  2. 其次,作业执行中不再和低速的设备联系,而直接从磁盘的输入缓冲区获得输入数据,且只要把输出信息写到磁盘的输出缓冲区就认为输出结束了,减少了作业等待输入输出数据的时间,也就缩短了它的执行时间,此外,还具有能增加多道程序的道数,增加作业调度的灵活性等优点。

与脱机外围设备操作相比,辅助存储器上的输入和输出缓冲区相当于输入磁盘和输出磁盘,预输入和缓输出程序完成了外围计算机做的工作。联机的同时外围设备操作又称作假脱机操作,采用这种技术后使得每个作业感到各自拥有独占使用的设备若干台。

精 灵 王 wechat
👆🏼欢迎扫码关注微信公众号👆🏼
  • 本文作者: 精 灵 王
  • 本文链接: https://jinglingwang.cn/archives/system09
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 设计模式-行为型 # 设计模式-创建型 # 设计模式-结构型 # 设计 # 系统设计 # 设计模式之美 # 分布式 # Redis # 并发编程 # 个人成长 # 周志明的软件架构课 # 架构 # 单元测试 # LeetCode # 工具 # 位运算 # 读书笔记 # 操作系统 # MySQL # 异步编程 # 技术方案设计 # 集合 # 设计模式 # 三亚 # 游玩 # 转载 # Linux # 观察者模式 # 事件 # Spring # SpringCloud # 实战 # 实战,SpringCloud # 源码分析 # 线程池 # 同步 # 锁 # 线程 # 线程模型 # 动态代理 # 字节码 # 类加载 # 垃圾收集器 # 垃圾回收算法 # 对象创建 # 虚拟机内存 # 内存结构 # Java
(八)操作系统-虚拟存储管理
(十)操作系统-文件系统
  • 文章目录
  • 站点概览
精 灵 王

精 灵 王

青春岁月,以此为伴

106 日志
14 分类
48 标签
RSS
Github E-mail
Creative Commons
Links
  • 添加友链说明
© 2023 精 灵 王
渝ICP备2020013371号
0%