zoukankan      html  css  js  c++  java
  • 输入输出系统——I/O系统

    1)系统调用与库函数
    不允许运行在用户态的应用进程,去直接调用运行在核心态(系统态)的OS过程。
    应用进程在运行时,又必须取得OS所提供的服务。
    于是:
    OS在用户层中引入了系统调用,应用程序可以通过它,间接调用OS中的I/O过程,对I/O设备进行操作。
    2)设备分配中的虚拟技术—— SPOOLing技术
    虚拟性是OS的四大特征之一。
    多道程序技术将一台物理CPU虚拟为多台逻辑CPU,实现多个用户共享一台主机
    多道程序技术,专门利用程序模拟脱机I/O的外围机,完成设备I/O操作。

    称这种联机情况下实现的同时外围操作为SPOOLing 技术(Simultaneaus Periphernal Operating On—Line,或称为假脱机操作)
    一般进程对独占设备的需求被假脱机模拟到磁盘上。所以实现设备虚拟,多道是前提,还需高速、大容量、可随机存取的外存支持。

    主要有三大部分
    输入井和输出井
    输入缓冲区和输出缓冲区
    输入进程和输出进程
    SPOOLing技术的使用:
    当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给用户进程,

    SPOOLing系统的特点
    提高了I/O的速度
    将独占设备改造为共享设备
    最终,实现了虚拟设备功能

    引入缓冲区的主要原因:
    缓和CPU与I/O设备间速度不匹配的矛盾。
    缓冲区数据成批传入内存,也可进一步减少对CPU的中断频率
    最终目的:提高CPU和I/O设备的并行性。

    使用缓冲区的方式:
    1)单缓冲、多缓冲
    OS在主存中为之分配一个缓冲区。
    CPU和外设轮流使用,一方处理完后等待对方处理。

    两个缓冲区,CPU和外设不再针对一块交替
    可能实现连续处理无需等待对方。前提是CPU和外设对一块数据的处理速度相近。而如下图情况CPU仍需等待慢速设备。

    2)循环缓冲
    设置多块缓冲区
    用循环结构组织,只供两个相关进程使用
    顺一个方向放入或取出

    3)缓冲池(Buffer Pool)
    系统将多个缓冲区形成一个缓冲池。
    池中缓冲区为系统中所有的进程共享使用(如UNIX系统在块设备管理中设置了一个15个缓冲区组成的缓冲池)
    组织形式:队列及队列指针
    ①缓冲池的组成
    空缓冲区;
    装满输入数据的缓冲区;
    装满输出数据的缓冲区;

    工作状态决定了current有四种工作缓冲区:
    收容输入数据的工作缓冲区;
    提取输入数据的工作缓冲区;
    收容输出数据的工作缓冲区;
    提取输出数据的工作缓冲区;

    四种工作方式:
    收容输入:Getbuf(emq),hin;输入数据填入一空缓冲区;Putbuf(inq,hin)
    提取输入: Getbuf(inq),sin;从输入缓冲队列中取出一数据区的内容;Putbuf(emq,sin)
    收容输出: Getbuf(emq),hout;输出数据填入一空缓冲区;Putbuf(outq,hout)
    提取输出: Getbuf(outq),sout;从输出缓冲队列中取一数据区的内容;Putbuf(emq,sout)

    1)磁盘性能简述
    首先与格式有关
    数据的组织和格式
    盘片、面、磁道、扇区
    为方便处理,每条磁道存储容量相同,每个磁道上的每个扇区相当于一个盘块。磁盘”格式化”的过程就是按规定的格式规划盘块。
    与速度有关
    磁盘类型
    固定磁头(每道一磁头)
    移动磁头(每盘一磁头)
    访问时间的计算
    寻道时间(到磁道)
    旋转延迟(到扇区)
    传输时间
    传输时间占总时间的比例最小,磁盘读写速度的提高要选择合适的调度算法,减少前两项用时,使所有作业的磁盘处理时间均衡。

    2)磁盘调度方法
    对所有请求访问磁盘的进程进行合理调度,使对磁盘的平均访问时间最小。
    目标:使平均寻道时间最少。
    算法:
    FCFS
    最短寻道时间优先SSTF
    扫描算法SCAN(磁盘电梯调度算法)
    循环扫描算法CSCAN
    N-Step-SCAN算法
    FSCAN算法

  • 相关阅读:
    7月15日考试 题解(链表+状压DP+思维题)
    暑假集训日记
    C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
    JavaSE 基础 第42节 局部内部类
    JavaSE 基础 第41节 匿名内部类
    JavaSE 基础 第40节 内部类概述
    JavaSE 基础 第39节 接口的应用
    JavaSE 基础 第38节 接口的实现
    JavaSE 基础 第37节 接口概述
    JavaSE 基础 第36节 抽象类概述与使用
  • 原文地址:https://www.cnblogs.com/Kirino1/p/10084683.html
Copyright © 2011-2022 走看看