OSIDP-I/O管理和磁盘调度-11
I/O设备
I/O设备分类:人可读、机器可读和远程通信三类。
I/O设备之间的差别:
1.数据传送速率
2.应用领域
3.控制的复杂性
4.传送单位
5.数据表示形式
6.错误条件
I/O功能的组织
I/O的三种技术
1.程序控制I/O:处理器代表一个进程给I/O模块发送I/O命令,该进程进入忙等待,直到I/O完成才能继续执行。
2.中断驱动I/O:处理器代表一个进程给I/O模块发送I/O命令,若该命令是非阻塞的,则发送命令的进程继续执行;若是阻塞的,则 OS 将该进程阻塞,执行另外的进程。
3.直接存储器访问(DMA):处理器向DMA模块发I/O命令,DMA模块控制内存和I/O模块之间的数据交换。当I/O操作执行完成后,DMA模块向处理器发信号告知执行完成。
I/O功能的发展
1.处理器直接控制I/O设备,处理器需要知道I/O设备的细节。
2.I/O模块出现,处理器通过程序控制I/O,不需要知道I/O设备细节。
3.处理器通过中断方式控制I/O。
4.DMA模块出现,处理器通过DMA模块控制I/O,仅在I/O传输的整个过程中的前后两个时间点处理器才和DMA模块交互。
5.I/O模块有自己的处理器,专门的指令集。CPU指导I/O处理器交互。
6.I/O模块有自己的局部存储器,I/O传输过程中CPU参与度更低。
DMA的执行过程:
1.CPU向DMA通过两者之间的读写控制线发送请求读操作或者写操作信号。
2.相关的I/O设备地址通过数据线传送。
3.从内存读数据或者向内存写数据的起始地址通过数据线传送,DMA将该地址存入地址寄存器中。
4.读或者写的的数据通过数据线传送,保存在其数据寄存器中;读或者写的数据的多少(读或者写数据的以字为单位的数目)保存在其数据计数寄存器中。
5.传送完毕,DMA模块向CPU发送中断信号告知已完成数据传送任务。
DMA在计算机系统中的可能架构:
OS 设计问题
目标:效率和通用性。
I/O操作一般是计算机系统的瓶颈。
通用性分两点:1.处理器看待I/O设备的方式;2.OS 管理I/O设备和I/O操作的方式。
I/O的逻辑结构如下
逻辑I/O:将设备当作一个进程可以使用的资源,允许使用通用的读写命令操控。
设备I/O:发出请求的指令和传输的设备在此转换成适当的I/O指令序列等。
调度和控制:实际和硬件打交道的层,处理中断,执行实际操作。
通信架构:比如网络传输的实际四层架构(TCP/IP)就属于这一层。
目录管理:用标识符表示文件,同时可以使用简单的命令操控文件。
文件系统:处理文件的逻辑结构和用户的操作。
物理组织:文件的逻辑结构到物理结构的转换。
I/O 缓冲
单进程死锁:当一个进程发出一个I/O请求后,被挂起等待结果,在开始I/O操作之前被换出,该进程阻塞,等待I/O事件的发生。此时I/O操作也被阻塞,等待该进程被换入。
原文:
If a process issues an I/O command, is suspended awaiting the result, and then is swapped out prior to the beginning of the operation, the process is blocked
waiting on the I/O event, and the I/O operation is blocked waiting for the process to be swapped in.
解决办法:发出I/O请求前,参与I/O操作的内存中用户进程空间被锁定。
I/O设备
面向块:信息保存在固定大小的块中,传输以块为单位。
面向流:以字节流的方式传输数据。
缓冲:输入(I/O设备到内存的数据传送)请求发出前开始执行输入传送,在输出请求发出一段时间后开始执行输出传送的技术。
单缓冲:OS 在内存的系统区域分配一个区域,称为缓冲区。当输入时,数据先传输到该缓冲区,再从缓冲区传输到用户进程的内存区域中。输出时反过来。
双缓冲:和单缓冲相比,有两个缓冲区,可以在一个进程向缓冲区中传送数据时,OS正在填充(清空)另一个缓冲区。这种方式也称缓冲交换。
循环缓冲:和双缓冲类似,使用的缓冲区大于2个。类似于有限缓冲区的生产者消费者模型。
缓冲作用:平滑I/O需求的峰值,提高 OS 效率和单个进程性能。
磁盘调度
性能参数
寻道时间:磁头定位到磁盘需要的时间。
旋转延迟:磁头到达扇区开始位置需要的时间。
存取时间:寻道时间+旋转延迟。达到读或者写位置需要的时间。
\(传输时间=\frac{传送的字节数}{一个磁道中的字节数 \times 旋转速度}\)
磁盘调度策略:
1.FIFO:最简单,公平。适用于大部分请求访问的文件处于簇聚扇区。
2.优先级:较短的作业优先级较高,长作业优先级较低。不会优化磁盘的利用率。
3.后进先出(LIFO):提高吞吐量,缩短队列长度。
4.最短服务时间优先:选择使磁头从当前位置移动距离最短的磁盘I/O请求。
5.SCAN(电梯算法):磁头从一个方向移动,处理完遇到的请求(该方向上没有待处理的请求了)或者到达该方向的边界时,反转,继续按此方式移动。
6.C-SCAN(循环SCAN):磁头扫描固定在一个方向上。
7.N步SCAN:将磁盘请求队列分成长度为N的子队列,每次使用SCAN处理一个队列,此时新的请求加入其他队列中。
8.FSCAN:扫描开始时,所有请求处于一个队列中。当处理过程中,新请求到来,则加入另一个空队列中,直到队列处理完成。
RAID
RAID(redundant array of independent disks, RAID)称为独立磁盘冗余阵列。分为0-6共7个级别。三个特性:
1.RAID是一组物理磁盘驱动器,逻辑上视为一个。
2.数据分布在物理驱动器阵列中。
3.使用冗余磁盘保存奇偶校验信息,保证一个磁盘失效时,数据具有可恢复性。
RAID0
数据被视为保存在一个逻辑磁盘上,磁盘被划分为多个条带,一个条带可以为一个物理块、扇区或者其他某种单位。
优点:若一个I/O请求由多个逻辑上连续的条带组成,则请求可并行,减少传输时间。
RAID1
RAID1通过临时复制所有数据实现冗余。
优点:读请求可由包含被请求数据的任何一个磁盘提供服务;写请求需要对两个条带进行更新,可并行完成;从失效中恢复简单。
缺点:成本高。
RAID2
使用的条带很小,只有1个字节或者字。对每个数据磁盘中相应位计算机一个错误校正码(通常是汉明码),计算得到的码保存在多个奇偶校验磁盘对应的位中。
缺点:成本高。
优点:在可能发生许多磁盘错误的环境中是一种有效的选择。
RAID3
只需要一个冗余磁盘,为所有数据磁盘同一位置的位的集合计算一个简单的奇偶校验位。
优点:数据传送率高。
RAID4
数据条带较大。对每个数据磁盘中相应的条带计算一个逐位奇偶校验,保存在奇偶校验磁盘的相应条带中。
优点:适合需要I/O请求速度较高的进程。
缺点:不适合需要较高数据传输率的进程;写操作包含奇偶校验磁盘,该磁盘可能成为瓶颈。
RAID5
将奇偶校验条带分布到所有磁盘中,按照循环分配方式。
优点:避免单个奇偶校验磁盘存在的瓶颈问题。
RAID6
需要的磁盘数为N+2,N为数据磁盘。使用两个不同的数据校验算法:异或计算和独立数据校验算法。
优点:提高极高的数据可用性。
缺点:严重的写性能损失。
磁盘高速缓存
磁盘高速缓存是内存中为磁盘扇区设置的一个缓冲区,包含磁盘中某些扇区的副本。
命中时,两种方式:第一种,将缓冲区扇区复制到用户进程空间内存区域;第二种,将指向缓冲区的特定扇区的指针传给特定进程。
置换策略
1.最近最少使用(LRU):置换在高速缓存中未被访问的时间最长的块。
2.最长不常使用页面置换算法(least frequently used, LFU):置换缓冲区中访问次数最少的块。
3.基于频率的置换算法:将缓冲区逻辑上视为栈,将栈的区域按照离栈顶的距离划分成三部分。离栈顶最近为新区,其次为中间区,最远为老区。新块进入缓冲区时进入栈顶,访问计数为1。新区中的块被访问,计数不变,其他区访问计数随之增加。同时,被置换的块只能在老区选择,置换时选择访问计数最小的块。
OSIDP-I/O管理和磁盘调度-11的更多相关文章
- 操作系统-IO管理和磁盘调度
I/O设备 IO设备的类型 分为三类:人机交互类外部设备:打印机.显示器.鼠标.键盘等等.这类设备数据交换速度相对较慢,通常是以字节为单位进行数据交换的 存储设备:用于存储程序和数据的设备,如磁盘.磁 ...
- 操作系统精髓与设计原理(九)——I/O管理和磁盘调度
文章目录 I/O设备 I/O功能组织 直接存储器访问 操作系统设计问题 设计目标 IO功能的逻辑结构 I/O缓冲 单缓冲 双缓冲 循环缓冲 缓冲的作用 磁盘调度 磁盘性能参数 磁盘调度策略 先进先出 ...
- IO管理与磁盘调度
- 扫描算法(SCAN)——磁盘调度管理
原创 上一篇博客写了最短寻道优先算法(SSTF)——磁盘调度管理:http://www.cnblogs.com/chiweiming/p/9073312.html 此篇介绍扫描算法(SCAN)——磁盘 ...
- 最短寻道优先算法(SSTF)——磁盘调度管理
原创 最近操作系统实习,敲了实现最短寻道优先(SSTF)——磁盘调度管理的代码. 题目阐述如下: 设计五:磁盘调度管理 设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法. 设计内容: ...
- Linux进程管理 (2)CFS调度器
关键词: 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 Linux进程管理 ( ...
- Linux进程管理 (7)实时调度
关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...
- OCM_第十六天课程:Section7 —》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- 使用 PowerShell 管理 Azure 磁盘
Azure 虚拟机使用磁盘来存储 VM 操作系统.应用程序和数据. 创建 VM 时,请务必选择适用于所需工作负荷的磁盘大小和配置. 本教程介绍如何部署和管理 VM 磁盘. 学习内容: OS 磁盘和临时 ...
- uC/OS-III 时钟节拍,时间管理,时间片调度
uC/OS-III 时钟节拍,时间管理,时间片调度 时钟节拍 时钟节拍可谓是 uC/OS 操作系统的心脏,它若不跳动,整个系统都将会瘫痪. 时钟节拍就是操作系统的时基,操作系统要实现时间上的管理, ...
随机推荐
- Python发送飞书消息
#!/usr/bin/python3.8 # -*- coding:UTF-8 -*- import os, sys sys.path.append(os.path.dirname(os.path.a ...
- wait notify 实例,生产消费者模式(转)
今天发现了一段很标准的多线程代码,记得以前也写过,但是没有这个这么小巧和标准. import java.util.LinkedList; import java.util.Queue; import ...
- .Net Core WebApi 控制器自动创建文件夹上传图片
/// <summary> /// 异步图片或文件上传 /// </summary> /// <param name="formFile">&l ...
- 最简单的asp验证码
<%Public Function BornVerifyCode() Randomize '设置随机因子 BornVerifyCode=Mid((Rnd * 10 ...
- 运用python中装饰器方法来解决工作中为原有代码添加功能问题
Python 装饰器 在实际的工作中,经常碰到领导或产品经理会提出很多甚至(变态)的产品要求,作为python开发,好不容易完成领导的需求,做出一个产品,并且经过测试成功上线.突然有一天 ...
- Qt中的串口编程
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口.串行接口(Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要 ...
- mybatis核心配置文件—设置别名typeAliases
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC & ...
- vulnhub:easy_cloudantivirus靶机
kali:192.168.111.111 靶机:192.168.111.177 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...
- ariba 数据补发
*&---------------------------------------------------------------------* *& Report Z_ARBA_PZ ...
- -bash: ./mlnxofedinstall: /usr/bin/perl: bad interpreter: No such file or directory
-bash: ./mlnxofedinstall: /usr/bin/perl: bad interpreter: No such file or directory 解决办法:安装相关的环境即可 输 ...