清华大学《操作系统》(二十三):I/O子系统

常见设备接口类型:

1、字符设备:键盘鼠标、串口

      a.以字节为单位顺序访问

      b.I/O命令通常使用文件访问接口和语义

2、块设备:磁盘、磁带、光驱

      a.均匀的数据块访问

      b.I/O命令通常使用文件系统接口,也可以使用内存映射访问

3、网络设备:以太网、无线、蓝牙

      a.格式化的报文交换

      b.I/O网络报文,通过网络接口支持多种网络协议。

同步与异步I/O:

1、阻塞I/O:发出请求后等待数据读出或写入完毕

2、非阻塞I/O:发出请求后不等待立即返回,返回值为成功传输的字节数

3、异步I/O:读数据时,使用指针标记好用户缓冲区,立即返回,稍后内核将填充缓冲区并通知用户;写数据内核写入完毕后通知用户

I/O结构

北桥连高速设备,南桥连IO设备。

I/O数据传输

CPU与设备控制器的数据传输:

1、程序控制I/O:

      a. 通过CPU的in/out或者load/store传输所有数据

      b. 特点是硬件简答,编程容易,但是小伙CPU时间,适用于简单的小型的设备I/O

2、直接内存访问(DMA)

      a. 设备控制器可直接访问系统总线

      b. 控制器直接与内存湘湖传输数据

      c. 特点是设备传输数据不影响CPU,只需要CPU参与设置,适用于高吞吐量的I/O。

I/O设备通知操作系统的机制:

1、CPU主动轮询:

     a. I/O设备在特定状态寄存器中放置状态和错误信息

     b. 操作系统定期检测状态寄存器

     c. 特点是简单,I/O操作频繁或不可预测时开销较大,并且延时较大

2、设备中断

     a. CPU在I/O之前设置任务参数

     b. CPU在发出I/O请求之后继续执行其他任务

     c. I/O设备处理I/O请求

     d. I/O设备处理完成时,触发CPU中断请求

     e. CPU接收中断,分发到相应中断处理例程

     f. 特点是处理不可预测事件事件效果好,但是中断较多时开销较高

     g. 实际操作系统中一些高带宽设备可能结合了轮询和设备中断,第一次传入数据包之前采用中断,轮询后面的数据包知道硬件缓存为空。

磁盘调度

           通过优化磁盘访问请求顺序来提高磁盘访问性能。

1、寻道时间是磁盘访问最耗时的部分

2、同时会有多个在同一磁盘上的I/O请求

3、随机处理磁盘访问请求的性能表现很差

调度算法:

1、FIFO:按顺序处理请求,公平对待所有进程,在有很多进程的情况下,接近随机调度的性能

2、SSTF(最短服务时间优先):选择离磁臂当前位置最近的请求执行

3、扫描算法:磁臂在一个方向上移动,访问所有未完成的请求,直到磁臂到达该方向上最后的磁道,也称电梯算法

4、循环扫描算法:限制为仅在一个方向上扫描,当最后一个磁道也被访问过了后,磁臂返回到磁盘的另外一端再次进行

5、C-LOOK算法:磁臂先到达该方向上最后一个请求的位置,然后立即反转

6、N步扫描算法:一侧请求过多时,磁头会有粘着现象,后面磁道无法响应,将磁盘请求队列分成长度为N的子队列,按FIFO算法依次处理所有队列,扫描算法处理每个队列

7、双队列扫描算法:只有两个队列,交替使用扫描算法处理两个队列,新生成的I/O请求放入另一个队列中。

磁盘缓存

概念:

缓存是数据传输双方访问速度差异较大时引入的速度匹配中间层。

磁盘缓存是磁盘扇区在内存中的缓存区。类似于虚拟内存管理,只是方向相反。但是磁盘的访问频率是远低于虚拟存储中的内存访问频率,因此次磁盘缓存调度算法会比虚拟存储复杂。

单缓存与双缓存:

单缓存只有一个缓存区,任意时刻只有一端可以对缓存区进行操作,速度受到限制;双缓存包含两个缓存区,设备与用户进程可以分别操作一个缓冲区,当一个缓冲区1写完并且缓冲区2读完了,可以将两个缓冲区交换,继续操作。

访问频率置换算法:

在一段密集磁盘访问之后, LFU算法的引用计数会增加到很大,之后的变化无法反应当前的引用情况。因此该算法考虑磁盘访问的密集特征,对密集引用不计数,在短周期内使用LRU算法,在长周期中使用LFU算法。

        具体实现过程为,维护一个特殊栈(LRU的要求),栈中缓存块被访问时移到栈顶。与LRU不同是栈被分为三个区域:新区域、中间区域和旧区域。如果该块在新区域中,引用计数不变,否则,引用计数加1,在旧区域中找计数最小的块置换出去。这样就将LRU与LFU结合在一起,并且避免了密集访问的影响。

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

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

相关文章

百度地图 Android SDK - 个性化地图

什么是百度个性化地图Android SDK? 百度个性化地图Android SDK是一套基于Android 2.2及以上版本号设备的应用程序接口,您能够通过该套接口实现主要的地图功能,而且能够定制地图样式,实现个性化地图。 该接口提供下面功能&#xff…

mysql读写分离_MySQL基于amoeba读写分离实验

主从复制只是一个同步数据的方式读写分离:只在主的上面写,只在从的上面读读写分离方案:【1】基于程序代码内部 (生产环境中应用最广泛,性能最好,需要开发人员来实现)【2】基于中间代理层的实现amoeda 是阿里巴巴使用的…

Django models模型

Django models模型 一. 所谓Django models模型,是指的对数据库的抽象模型,models在英文中的意思是模型,模板的意思,在这里的意思是通过models,将数据库的借口抽象成python自己的一个类。然后在python Django框架其他代…

Python内存管理以及垃圾回收机制

垃圾回收:用通俗点的语言解释就是内存管理和垃圾回收的过程. 大管家refchain 在Python的C源码中有一个名为refchain的环状双向链表,这个链表就比较厉害了,因为Python程序中一旦创建对象都会把这个对象添加到refchain这个链表中。也就是说他…

【Ext.Net学习笔记】01:在ASP.NET WebForm中使用Ext.Net

Ext.NET是基于跨浏览器的ExtJS库和.NET Framework的一套支持ASP.NET AJAX的开源Web控件,包含有丰富的Ajax运用,其前身是Coolite。 下载地址:http://www.ext.net/download/ 示例地址:http://examples.ext.net/ 1.首先下载Ext.Net,地…

面试之操作系统

基本特征 1. 并发 并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。操作系统通过引入进程和线程,使得程序能够并发运行。 2. 共享 共享是指…

mysql新增列并同时增加数据_图解MySQL | [原理解析] MySQL 为表添加列 是怎么quot;立刻quot;完成的...

在上一期图解 图解MySQL | MySQL DDL为什么成本高?中,我们介绍了:传统情况下,为表添加列需要对表进行重建腾讯团队为 MySQL 引入了 Instant Add Column 的方案(以下称为 "立刻加列" 功能)可以快速完成 为表添加列 的任务…

GCC for Win32开发环境介绍

GCC for Win32开发环境介绍(1) 第一章 在视窗操作系统下的GCC 第一节GCC家族概览 GCC是一个原本用于Unix-like系统下编程的编译器。不过,现在GCC也有了许多Win32下的移植版本。所以,也许对于许多Windows开发者来说,GCC还是一个比较陌生的东西…

reg型变量怎么赋值_UiPath变量介绍和使用

1 变量变量主要用于存储数据,它在RPA中扮演重要的数据传递角色,是RPA编程不可或缺的一部分。它包括变量名称和变量的值,变量的值支持多种数据类型,包括从通用值,文本,数字,数据表,时…

深度学习之概述

深度学习的应用场景 1、图像应用: 1.1 大规模(大数据量)图片识别(聚类/分类),如人脸识别,车牌识别,OCR等。人脸识别算法:① faceID ② faceNet 1.2 以图搜图,图像分割 1.3 目标检测&#xff0…

如何根据对象获取到对应的表名_Excel VBA 常用对象二

下面继续讲解上一节中未讲完的内容:Excel VBA编程中常常使用的那些对象到底是什么,如何在代码中表示它们。Worksheet对象Worksheet对象代表工作表。工作簿中的每个工作表都是一个Worksheet对象,所有Worksheet对象构成了Worksheets集合。我们使…

深度学习之 BP 算法

神经网络的一种求解W的算法,分为信号“正向传播(FP)”求损失,“反向传播(BP)”回传误差;根据误差值修改每层的权重,继续迭代。 BP算法也叫做δ算法。以三层的感知器为例(假定现在隐层和输出层均存在相同类型的激活函数…

深度学习之 RBF神经网络

RBF神经网络通常只有三层,即输入层、中间层和输出层。其中中间层主要计算输入x和样本矢量c(记忆样本)之间的欧式距离的Radial Basis Function (RBF)的值,输出层对其做一个线性的组合。 径向基函数: RBF神经网络的训练…

redis 队列_Redis与Rabbitmq消息队列的区别

将redis发布订阅模式用做消息队列和rabbitmq的区别:可靠性 redis :没有相应的机制保证消息的可靠消费,如果发布者发布一条消息,而没有对应的订阅者的话,这条消息将丢失,不会存在内存中;rabbit…

EasyUI中那些不容易被发现的坑——EasyUI重复请求2次的问题

问题控件:datagrid、combobox、所有能设置url属性的控件 问题版本:1.4.4、1.4.5(之前的版本没测) 问题如图: 重复请求2次,错误代码如图: 错误问题分析:html加载的时候回请求url加载数…

ElasticSearch Java API

ElasticSearch-Java Client类型 ElasticSearch-TransportClient环境准备 ElasticSearch-TransportClient连接 ElasticSearch-Document APIs ElasticSearch-搜索-原理 ElasticSearch-搜索-问题 ElasticSearch-搜索-问题解决思路 ElasticSearch-搜索-SearchType-类型一 E…

深度学习之卷积神经网络(Convolutional Neural Networks, CNN)

前面, 介绍了DNN及其参数求解的方法(深度学习之 BP 算法),我们知道DNN仍然存在很多的问题,其中最主要的就是BP求解可能造成的梯度消失和梯度爆炸.那么,人们又是怎么解决这个问题的呢?本节的卷积神经网络(Convolutional Neural Networks, CNN)就是一种解决方法. 我们…

深度学习之卷积神经网络(Convolutional Neural Networks, CNN)(二)

前面我们说了CNN的一般层次结构, 每个层的作用及其参数的优缺点等内容.深度学习之卷积神经网络(Convolutional Neural Networks, CNN)_fenglepeng的博客-CSDN博客 一 CNN参数初始化及参数学习方法 和机器学习很多算法一样, CNN在进行训练之前也要进行参数的初始化操作. 我们…

Hadoop1.x版本升级Hadoop2.x

引言 随着企业数据化和Hadoop的应用越加广泛,hadoop1.x的框架设计越来越无法满足人们对需求,Apache一直在对Hadoop1.x进行修改,最后推出了新一代的Hadoop2.x。从业界使用分布式系统的变化趋势和 hadoop 框架的长远发展来看,MapRed…

本页由试用版打印控件lodop6.2.6输出_Visual Basic 6.0 Sirk 迷你版

Visual Basic 6.0 Sirk 迷你版 VB6 Sirk Mini 2019更新1、支持主流操作系统,避免原版安装失败的问题:支持Windows XP、Vista、Win7、Win8、Win10(32位、64位)。2、保留大部分常用功能,避免精简版过度精简:包含原版完整控件&#x…