操作系统复习5.1.0-I/O管理

news2024/11/17 11:36:57

分类

按使用特性分

人机交互类:键盘、鼠标、打印机
存储设备:移动硬盘、光盘
网络通信设备:调制解调器

按速率分

低速设备:键鼠
中速设备:打印机
高速设备:磁盘

按信息交换单位分

块设备:磁盘等以块为单位传输
字符设备:键鼠,以字节为数据传输单位

I/O控制器

用于实现对I/O设备的控制

功能

  • 接受和识别CPU发出的命令:控制器中有相应的控制寄存器来存放命令和参数
  • 向CPU报告设备的状态:控制器中有相应的状态寄存器,用于记录I/O设备的当前状态
  • 数据交换:设置数据寄存器,暂存CPU和设备发来的数据
  • 地址识别:区分设备寄存器中的各个寄存器,分别给其设置地址用于区分读写寄存器

组成

在这里插入图片描述
I/O控制器可能对应多个设备
数据寄存器、控制寄存器、状态寄存器可能有多个,且有对应地址
若这些寄存器占用内存地址的一部分,称为内存映像I/O
若采用I/O专用地址,即寄存器独立编址

寄存器编址方式

在这里插入图片描述
内存映像I/O方便操作,而寄存器独立编制则需要设置专门指令并指明寄存器的地址和控制器的编号

I/O控制方式

程序直接控制方式在这里插入图片描述

  • CPU向控制器发出读指令,设置状态寄存器为1
  • 轮询检查控制器的状态,直至其为0,表明设备准备好
  • 输入设备准备好数据后将数据传入控制器并报告状态
  • 控制器将输入数据放到数据寄存器中,并将状态改为0
  • 此时控制器的状态为0,CPU会将数据寄存器放到CPU寄存器中,再拷贝到内存中

在这里插入图片描述
缺点在CPU和I/O只能串行,CPU处于轮询忙等

中断驱动方式

由于程序直接控制方式CPU利用率低,忙等,提出了中断驱动方式

引入中断机制,在CPU发出指令后,将等待I/O进程阻塞,先切换到别的进程执行
当I/O完成后,控制器向CPU发出一个中断信号,CPU检测到后会保存当前进程的运行环境信息,转去执行中断处理程序处理中断
处理中断时,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。
接着CPU恢复等待I/O的进程的运行环境,然后继续执行

CPU在每个指令周期末尾检查中断,中断处理过程中需要保存、恢复进程的运行环境,频繁发生中断也会降低系统性能
在这里插入图片描述
避免了CPU轮询,切换别的进程执行,CPU和I/O并行工作,但每次传输都需要CPU介入,频繁中断会消耗较多CPU时间

DMA方式

中断驱动解决了程序直接控制方式,但每次只能读写一个字会造成CPU频繁切换
DMA直接存储器存取,用于块设备
数据传送单位是块,不再是以字为单位
数据在设备和内存间传送,无需CPU介入
仅当传送开始和结束时才需要CPU干预
在这里插入图片描述
CPU指明此次要进行的操作,说明要读入数据的大小、数据存放在内存上的位置、数据在外部设备上的地址
控制器根据CPU提出的要求完成数据的读写工作,整块数据的传输完成后,才向CPU发出中断信号

在这里插入图片描述
控制器从设备读取数据也是一个一个字读取并存到DR,DR存满时才放入内存
在这里插入图片描述
缺点:CPU每发出一条I/O指令,只能读写一个或多个连续的数据块,如果要读写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时,CPU要分别发出多条I/O指令,多次中断才能完成

通道控制方式

通道控制是用来解决连续存储问题
CPU告诉通道要执行的任务所在的内存地址,通道去取出任务,做完后发消息给CPU

  • CPU向通道发出I/O指令,指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备,之后CPU切换进程
  • 通道执行内存中的通道程序,指明要读入写出的数据等
  • 通道执行完任务后,向CPU发出中断信号
    在这里插入图片描述

I/O层次

在这里插入图片描述

用户层软件

用户层实现了与用户交互的接口,使用提供的封装系统调用的库函数对设备进行操作
用户层软件将用户请求翻译成格式化I/O请求,并通过系统调用请求操作系统内核的服务

设备独立性软件

设备独立性软件,又称设备无关性软件,与设备硬件特性无关的功能都在此层实现,提供六大功能

  • 向上层提供统一的调用接口
  • 设备保护:校验设备访问权限
  • 差错处理:处理设备错误
  • 设备的分配与回收
  • 数据缓冲区管理:通过缓冲技术屏蔽设备间数据交换单位大小和传输速度差异
  • 建立逻辑设备名和物理设备的映射关系:根据设备类型选择调用相应的驱动程序。用户指定逻辑设备名,系统通过逻辑设备表LUT确定逻辑设备对应的物理设备,并找到对应的设备驱动程序

LUT 可以在整个系统中只设置一张,但只适合单用户操作系统
也可每个用户设置一张LUT,每个用户使用的逻辑设备名可重复,适用于多用户操作系统,系统在用户登录时为其建立管理进程,LUT存放在用户管理进程的PCB

不同设备的驱动程序不同,因为内部结构不一样,空闲字不同、数据寄存器数量不同等等…

设备驱动程序

负责对硬件设备的具体控制,将上层命令转化为特点设备的指令,设置设备寄存器、检查设备状态等

中断处理程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

假脱机

为了避免人工影响I/O速度,引入了脱机技术:磁带等
假脱机SPOOLing使用软件模拟脱机

输入井和输出井

在这里插入图片描述
输入井和输出井就是缓冲区
在这里插入图片描述

I/O设备分配与回收

分配因素

设备固有属性

独占设备、共享设备、虚拟设备

设备分配算法

先来先服务、优先级高优先、短任务优先

设备分配中的安全性

安全分配:进程获得设备后阻塞直到I/O将进程唤醒,不会死锁,但进程和I/O串行
不安全分配:发出I/O请求,系统为其分配I/O设备,进程可继续执行,之后还可发出I/O请求,只有I/O请求不满足时才堵塞,实现了I/O和进程并行,但可能死锁

静态分配与动态分配

静态分配:进程运行前分配所有资源,运行结束后归还资源
动态分配:进程运行时动态申请设备资源

分配管理的数据结构

在这里插入图片描述

设备控制表DCT

系统为每个设备配置一张DCT
在这里插入图片描述

控制器控制表COCT

在这里插入图片描述

通道控制表CHCT

在这里插入图片描述

系统设备表SDT

在这里插入图片描述

分配步骤

根据进程请求的物理设备名查找系统设备表SDT
根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列,不忙碌时将设备分配给进程
根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列,不忙碌则将控制器分配给进程
根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列,不忙碌时则将通道分配给进程

缺点在用户编程时需要使用物理设备名,编程困难,且拓展麻烦
若请求的物理设备正在忙碌,即时有同类型设备,进程也必须阻塞

分配步骤的改进

设置逻辑设备法LUT建立逻辑设备名和物理设备名之间的映射关系
用户进程第一次使用设备时使用逻辑设备名向操作系统发出请求,操作系统根据逻辑设备名来查找系统设备表,找到空闲设备分配给进程,并在LUT添加表项

当用户进程再次通过相同逻辑设备名请求设备,则系统通过LUT得知对应物理设备
多用户操作系统中LUT是每个用户一张
单用户操作系统中LUT是只有一张

缓冲区

缓冲区可以解决CPU和I/O设备间速度差异,避免每输出一个字就要向CPU发送一次中断信号

单缓冲

在这里插入图片描述
当T>C时,即传输时间大于处理时间
在这里插入图片描述
当T<C时
在这里插入图片描述

双缓冲

在这里插入图片描述
在这里插入图片描述
对比
两台机器单缓冲则只能在同一时刻内只能单向传输
两台机器双缓冲则可实现双向数据传输

循环缓冲区

在这里插入图片描述

缓冲池

在这里插入图片描述
需要收容输入时,从空缓冲队列取出空缓冲区,冲满数据后将缓冲区挂到输入队列队尾
需要提取输入时,从输入队列取出缓冲区,取空后将空缓冲区挂到空缓冲队列队尾
其他以此类推

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

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

相关文章

yum和vim【Linux操作系统】

Linux软件包管理器 yum Linux安装软件&#xff1a; 源代码安装&#xff08;下载到程序的源代码&#xff0c;进行编译&#xff0c;得到可执行程序&#xff0c;太麻烦&#xff0c;因此有些人会将有些常用的软件提前编写好&#xff0c;做成软件包&#xff09; rpm安装&#xff08;…

BCD格式及与十进制/十六进制的转换

本文框架 前言1. BCD码是什么&#xff1f;2. 不同进制与BCD码之间的转换2.1 十进制与BCD码的转换2.1.1 十进制转换为BCD码2.1.2 BCD码转换为十进制 2.2 十六进制与BCD码的转换 前言 在诊断快照开发中会遇到保存年月日等使用BCD码格式的需求&#xff0c;本篇我们就一起看一下BC…

Sentinel监控微服务_流量控制_熔断降级_系统规则讲解

Sentinel 监控微服务 需求分析/图解 需求: 使用Sentinel 控制台对member-service-nacos-provider-10004 微服务进行实时监控 示意图 当调用了member-service-nacos-provider-10004 微服务时, 可以监控到请求的url/QPS/响应时间/流量 代码/配置实现 修改member-service-nac…

Redis之SDS数据结构的使用

目录 序言字符串 char*字符串数组简单动态字符串SDS 序言 Redis的几种基本数据结构有字符串&#xff08;String&#xff09;、哈希&#xff08;Hash&#xff09;、列表&#xff08;List&#xff09;、集合&#xff08;Set&#xff09;、有序集合&#xff08;Sorted Set&…

美国原装二手KEYSIGHT N8975A是德N8975B噪声系数分析仪

KEYSIGHT / AGILENT N8975A N8975B 噪声系数分析仪 Keysight N8975B 高性能噪声系数分析仪旨在进行快速、准确和可重复的噪声系数测量。它有一个多点触控界面&#xff0c;允许拉伸、捏合和拖动手势。大多数菜单都可以通过手指轻点来访问&#xff0c;而无需切换屏幕。通过允许…

【数据结构】第10周

目录 1.图的基本术语 2.图的存储 2.1邻接矩阵 2.2.邻接表 3.图的遍历 3.1 深度搜索 dfs 3.2 广度搜索 bfs 4.图的应用 4.1 最小生成树 4.1.1 普里姆算法 4.1.2 克鲁斯卡尔算法 4.2 最短路径 4.2.1 Dijkstra算法 4.2.2 Floyd算法 4.3 拓扑排序 4.4 关键路径 一些…

chatgpt赋能python:Python创建一个Animal类介绍

Python创建一个Animal类介绍 Python是一种高级编程语言&#xff0c;其简单易学、灵活性强、可读性高以及强大的库使得Python非常受欢迎。在Python中创建类非常容易且非常常见&#xff0c;我们可以使用Python创建各种类型的类。今天&#xff0c;我们将讨论如何使用Python创建一…

OpenAI发布最新研究让大模型数学推理直接达到SOTA

&#x1f989; AI新闻 &#x1f680; OpenAI发布最新研究&#xff1a;基于过程奖励的监督方法&#xff0c;让大模型数学推理直接达到SOTA 摘要&#xff1a;OpenAI最新研究基于GPT-4微调&#xff0c;采用过程监督和结果监督两种监督方法&#xff0c;奖励每个正确推理步骤的过程…

微信小程序开发实战 ⑨(TabBar)

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; 微信小程序 &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f4…

机器学习:基于XGBoost对信用卡欺诈行为的识别

机器学习&#xff1a;基于XGBoost对信用卡欺诈行为的识别 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f4…

Kafka集群安装部署

Kafka集群安装部署 简介 Kafka是一款分布式的、去中心化的、高吞吐低延迟、订阅模式的消息队列系统。 同RabbitMQ一样&#xff0c;Kafka也是消息队列。不过RabbitMQ多用于后端系统&#xff0c;因其更加专注于消息的延迟和容错。 Kafka多用于大数据体系&#xff0c;因其更加…

大数据Doris(三十三):Spark集群搭建

文章目录 Spark集群搭建 一、Spark Standalone 集群搭建 1、下载Spark安装包 2、上传、

Vue+springboot老年人活动报名教育学习系统

基于java语言设计并实现了老年教育学习系统。该系统基于B/S即所谓浏览器/服务器模式&#xff0c;应用Springboot框架&#xff0c;选择MySQL作为后台数据库。系统主要包括首页、个人中心、老年人管理、负责人管理、课程教师管理、组织者管理、活动信息管理、活动申请管理、活动策…

python实现Canny算子边缘检测算法

边缘检测是一种将图片中关键信息表现出来的一种图片技术&#xff0c;它的结果并不是字面意思上的获取图片边缘&#xff0c;而是将图片有用的信息勾勒出来&#xff0c;类似素描的结果&#xff0c;但是已经去掉了很多信息。如下所示&#xff0c;一张原始的图片是这样的&#xff1…

HGFormer:用于领域广义语义分割的层级式分组Transformer

文章目录 HGFormer: Hierarchical Grouping Transformer for Domain Generalized Semantic Segmentation摘要本文方法实验结果 HGFormer: Hierarchical Grouping Transformer for Domain Generalized Semantic Segmentation 摘要 目前的语义分割模型在独立同分布条件下取得了…

正准备升职加薪?自动化测试框架设计原则必须要知道...

本期小编将为大家带来自动化测试方面的基础知识&#xff0c;正在学习及将要提升学习自动化的同学们可自行参考啦&#xff0c;希望大家都可以尽快升职加薪&#xff01; 下面跟着小编来认识一下自动化测试框架及其原则吧&#xff01; 自动化测试框架 自动化测试框架需要基于特…

Transfomer编码器中自注意力机制、前馈网络层、叠加和归一组件等讲解(图文解释)

Transformer中的编码器不止一个&#xff0c;而是由一组N个编码器串联而成&#xff0c;一个编码的输出作为下一个编码器的输入&#xff0c;如下图所示&#xff0c;每一个编码器都从下方接收数据&#xff0c;再输出给上方&#xff0c;以此类推&#xff0c;原句中的特征会由最后一…

Nginx网络服务——主配置文件-nginx.conf

Nginx网络服务——主配置文件-nginx.conf 一、全局配置的六个模块简介二、nginx配置文件的详解1.全局配置模块2.I/O 事件配置3.HTTP 配置4.Web 服务的监听配置5.其他设置 三、访问状态统计与控制1.访问状态统计2.基于授权的访问控制3.基于客户端的访问控制 一、全局配置的六个模…

6个音效素材库,自媒体必备~

视频剪辑、自媒体必备的6个音效素材网站&#xff0c;再也不用担心找不到声音素材了&#xff0c;赶紧收藏起来&#xff0c;一定对你非常有用~ 菜鸟图库 https://www.sucai999.com/audio.html?vNTYxMjky ​ 菜鸟图库是一个综合性素材网站&#xff0c;站内涵盖设计、图片、办公、…

Termius使用[分屏同时操作]

免费版可用ssh&#xff0c;tftp连接服务器&#xff0c;界面美观操作简洁 一 安装 官网 进入官网&#xff0c;登陆后进入个人页面&#xff0c;下载对应系统软件 安装完成后&#xff0c;在应用中登陆账号后即可开始使用 二 基本操作 [只针对ssh连接服务器操作] 2.1 连接服务…