[操作系统]5.IO控制

这篇具有很好参考价值的文章主要介绍了[操作系统]5.IO控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

老规矩,仅为整理知识点,知识框架来自于王道操作系统

并且IO控制的更多知识其实是在计算机组成原理的部分,所以这里一些关于中断具体措施这种细节就先跳过了

1.关于IO设备的概述

(1)IO设备概述

io设备是计算机中最复杂的一类设备,涉及到的基本都是系统层面的调用

例如显示器,键盘,音响这种,按照不同的方式可以有不同的分类

另外存在一个名为IO控制器的电子部件

负责(1)识别cpu命令(2)向cpu报告状态(3)数据交换(4)地址识别

(2)IO控制方式

IO控制方式一共有4种

1.程序控制方法:

程序控制方法最大的特点就是,程序和cpu是串行的,cpu会不断查询程序的完成程度,直到完成了所有的任务,cpu才会继续执行自己的内容

2.程序中断方法:

允许IO设备打断cpu,但是cpu不需要一直等待IO设备的准备,可以在IO设备的准备期间完成一些自己的任务,直到IO设备发出信号表示可以进行数据传输

这种方法的缺点就是数据必须经过IO,会稍微慢一点.但是中断是不能消失的,因为这东西在其他方面也有应用(甚至DMA本身在初始阶段和结束阶段都需要中断向CPU报告)

3.DMA控制方式

 CPU会把数据传输的工作委托给DMA控制器,在DMA控制器的传输下,可以直接在IO设备以及内存之间传递数据,不需要cpu作为中转站了

特点有三条

1.数据以数据块的形式传送,并且只能传递数据不能处理异常

2.传送的数据是从设备和内存之间进行直接链接的

3.仅在DMA方式开始和结束的时候才需要CPU进行干预

4.通道控制方式

IO通道是专门用来负责处理输入和输出的虚拟机,可以进一步减少cpu的干预

和dma方法的主要区别就算

IO传输的数据块是由IO管理信息的,并且IO系统的有关指令存在内存中,和cpu共享内存

另外管道可以对应多个IO设备,而一共DMA控制器只能对应一个设备

(3)IO子系统的结构

io系统的层次结构可以分为

用户层IO软件:实现和用户的接口

设备独立性程序:设备独立也叫设备无关,所有与硬件无关的功能军在这里实现

设备驱动程序:接收上面发来的抽象请求,并且变成具体的IO

中断处理程序:处理中断

硬件:执行

举个例子:比如用户发出一个read操作的指令,则接下来要完成的任务是

(1)用户层提供read指令

(2)设备独立层进行校验,转化为驱动设备能理解的指令

(3)设备驱动将操作转化为具体的要求,,驱动io工作

(4)中断当前程序

(5)硬件执行对应的操作

2.IO关键子系统

IO核心子系统,其实就是IO层次结构中,偏向核心的部分:设备独立层,设备驱动层,中断处理程序

(1)IO调度的概念

IO调度其实指的是任务对于设备的请求,每个设备都有一个请求队列,按照某种算法,把设备分配给不同的IO任务

(2)关于高速缓存和缓冲区

1.磁盘高速缓存

磁盘高速缓存,disk cache.看到cache就知道是啥了吧

但是磁盘缓存虽然和cache很像,区别在于指的是在内存中开辟一块存储空间,用来暂存磁盘文件的副本,逻辑上属于磁盘,物理上属于内存 . 而cache是独立于内存的一共结构

2.缓冲区

缓冲区使用了类似的思路,主要用来环节CPU和IO设备之间速度不匹配的矛盾,减少CPU中断,并且解决数据单元大小不匹配的问题

另外缓冲区有个特点,和管道非常相似

当缓冲区的数据非空的时候,不能写入

当缓冲区数据为空的时候,不能读出

缓冲区是独立于cpu和磁盘的区域,所以需要完成的任务主要是

T(从IO设备输入缓冲区)

M(从缓冲区发往处理器)

C(处理器进行计算)

根据缓冲区数目的不同,一共有以下四种方式

(1)单一缓冲区(2)双缓冲(3)循环缓冲(4)缓冲池

最重要的是前两种,前两种可以根据情况计算出一个任务的时间

首先是单一缓冲区域,T和C是可以并行的但是M和TC不可并行

则消耗时间为M+MAx(T,C)

双缓冲的带来的效果就算T和C可以并行,T和M也可以并行,但是C和M不可以

所以消耗时间为MAX(T,M+C)

3.这俩玩意的对比

高速缓存的特点是单向传输数据,并且存放的都是低速设备上数据的副本,可能会发生未命中的情况

缓冲区的特点是数据交换都要通过缓冲区,因此不存在命中不命中的问题,永远不会去访问低速设备

(3)关于设备的分配与回收

设备分配指的是按照用户的io需求进行设备的分配,分配到原则是让设备尽可能忙碌又不会造成死锁

按照使用方式方式别可以分为三种

(1)独占式使用设备:同一个时间内只允许一个进程使用当前设备

(2)分时共享设备:顾名思义

(3)使用spooling技术虚拟化

设备的分配信息,被一种数据结构所管理

DCT设备控制表,里面是一个设备的具体信息

SDT系统设备表,SDT中的每个条都是一个DCT,整个系统中只有这么一张系统设备表

设备分配的基本原则其实就算:根据设备特性,用户需要和系统配置,充分发挥设备的使用效率,也要避免造成进程死锁

设备的分配方式有两种:静态分配主要用于对独占设备的分配,在作业开始之前,系统一次性分配完所有需要的设备..

动态分配则根据运行过程中的需要来进行执行

(4)spooling技术(假脱机技术)

spooling用于把一个独占设备变成能够分时共享的片段

目的是未来缓解高速cpu,低速IO之间的矛盾,可以完成分时的操作,营造出虚拟设备的假象

(1)输入井和输出井,是指在磁盘上开辟出的两个存储区域,用来暂存数据,因为磁盘是告诉设备,这两个井就能起到协调速度并且暂存数据的作用,相当于一个代理

(2)输入缓冲区和输出缓冲区:在井和cpu之间,作为数据传输的媒介,进一步协调

在这种技术下,CPU要打印的数据可以先放到磁盘的输出井口中,然后做其他事情

打印则会等待井口的数据,而不是等cpu文章来源地址https://www.toymoban.com/news/detail-480936.html

到了这里,关于[操作系统]5.IO控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux操作系统】举例解释Linux系统编程中文件io常用的函数

    在Linux系统编程中,文件IO操作是非常常见和重要的操作之一。通过文件IO操作,我们可以打开、读取、写入和关闭文件,对文件进行定位、复制、删除和重命名等操作。本篇博客将介绍一些常用的文件IO操作函数。 1.1 原型、参数及返回值说明 1.1.1 原型: open()函数是Linux系统

    2024年02月12日
    浏览(48)
  • Linux文件(系统)IO(含动静态库的链接操作)

    fopen打开文件,fclose关闭文件 fwrite操作(写文件) fwrite函数从 ptr 里将 nitems 个大小为 size 字节的数据写进定 stream 里 hello_w.c 文件 这里我们将会在此路径得到一个写有 5 行 hello fopen 的 myfile.txt 文件,如下gif: fread操作(写文件) fread 不会在字符串末尾添加 null 终止符( \\0

    2024年04月14日
    浏览(47)
  • 操作系统实验:进程同步控制

    前言 一、开发语言及实验平台或实验环境 二、实验目的 三、实验要求 四、实验原理 五、实验过程 六、代码详解 七、diy一下 总结 计算机操作系统是一门研究计算机系统的基本原理和设计方法的课程,它涉及到计算机系统的结构、功能、性能和管理等方面。操作系统实验是

    2024年02月05日
    浏览(43)
  • 操作系统进行设备控制的方式

    上一篇的博客介绍了设备管理的一些概念基础知识点,其中I/O控制方式这一块没有详细说明。设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送。外围设备和内存之间的输入/输出控制方式有4种,下面分别加以介绍。 也叫程序查询方式。 信息交换的控制完全由

    2024年02月16日
    浏览(64)
  • 操作系统2:进程的描述与控制

    目录 1、什么是前驱图? 2、进程的定义和描述 (1)什么是进程? (2)进程的基本状态及转换 (3)挂起操作和进程状态的转换 3、进程管理中的数据结构 (1)进程控制块 PCB 的作用 (2)进程控制块 PCB 中的信息 (3)PCB 的组织方式 3、进程的控制 (1)操作系统内核 (2)

    2024年02月09日
    浏览(39)
  • 操作系统课程设计-Linux 进程控制

    目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 进程的创建 3.1.1 步骤 3.1.2 关键代码 3.2 子进程执行新任务 3.2.1 步骤 3.2.2 关键代码 4 实验结果与分析 4.1 进程的创建 4.2 子进程执行新任务 5 代码 5.1 进程的创建 5.2 子进程执行新任务          本实验为课设内容,博客内容为

    2024年01月18日
    浏览(51)
  • Linux操作系统--shell编程(流程控制)

    1.if 条件判断 ①.单分支判断 if [ 条件判断式 ];then 程序 fi 该语法结构还可以写成: if [ 条件判断式 ] then 程序

    2024年02月11日
    浏览(53)
  • Linux操作系统——第二章 进程控制

        目录 进程创建 fork函数初识 fork函数返回值 写时拷贝 fork常规用法 fork调用失败的原因 进程终止 进程退出场景 进程常见退出方法 _exit函数 exit函数 return退出 进程等待 进程等待必要性 进程等待的方法 wait方法 waitpid方法 获取子进程status 进程程序替换 替换原理 替换函数

    2024年02月08日
    浏览(50)
  • Linux:Linux操作系统流程控制语句-case语句使用介绍

    本博客将介绍Linux操作系统中流程控制语句-case语句的使用方法。我们将通过多个案例来详细说明case语句的执行流程和用法。这些案例包括菜单选项、rsync服务脚本、nginx服务脚本、实现系统工具箱和实现简单的jumpserver跳板机。通过学习这些内容,您将能够更好地掌握Shell脚本

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包