操作系统:输入输出管理(一)系统概述与设备独立性软件

news2025/1/11 12:35:30

一战成硕

    • 5.1 I/O系统概述
      • 5.1.1 I/O设备
      • 5.1.2 I/O控制方式
      • 5.1.3 I/O软件层次结构
      • 5.1.4 应用程序的I/O接口
    • 5.2 设备独立性软件
      • 5.2.1 与设备无关的软件
      • 5.2.2 高速缓存与缓冲区
      • 5.2.3 设备分配与回收
      • 5.2.4 spooling技术(假脱机技术)

5.1 I/O系统概述

5.1.1 I/O设备

  1. 设备的分类
    按信息交换
    1)块设备 ,信息交换以数据块为单位,属于有结构设备,如磁盘等。磁盘设备的基本特征是传输率高,可寻址。
    2)字符设备,信息交换以字符为单位,属于无类型结构,如交换机打印机等,传输效率低,不可寻址。
    按传输效率
    1)低速设备
    2)中速设备
    3)高速设备

  2. I/O接口
    io接口位于cpu与设备之间,既要与CPU通信,又要与设备通信,还要具有按cpu发来的命令去控制设备的功能。主要由三部分组成
    1)设备控制器与cpu的接口,数据线,地址线,控制线
    2)设备控制器与设备接口
    3)io逻辑
    在这里插入图片描述

  3. I/O端口
    io端口指设备控制器中可被cpu访问的寄存器,只要有以下三类:
    数据寄存器
    状态寄存器
    控制寄存器
    实现cpu与io端口通信,有两种方法:
    1)独立编址
    2)统一编址

5.1.2 I/O控制方式

设备管理的主要任务之一是控制设备和内存或cpu之间的数据传送,外围设备和内存之间的输入输出控制方式有四种,下面分别加以介绍:

  1. 程序直接控制方式
    简单易于实现但cpu利用率低。
  2. 中断驱动方式
    允许io设备主动打断cpu的运行并请求服务。更有效,但仍然会消耗较多时间。
  3. DMA方式
    在io设备和内存之间开辟直接的数据交换通路,彻底解放cpu。
    1)基本单位是数据库
    2)所传送的数据,是从设备之间存入内存的,或者相反
    3)仅在传送一个或多个数据块的开始和结束时,才需要cpu干预,整块数据传送是在DMA控制器的控制下完成的。
    在这里插入图片描述
    要在主机与控制器之间实现数据的直接交换,须在DMA控制器中设置如下四类寄存器:
    1)命令/状态寄存器
    2)内存地址寄存器
    3)数据寄存器
    4)数据计数器
    DMA方式与中断方式的主要区别是,中断方式在每个数据需要传输时中断cpu,而DMA方式则是在所要求传送的一批数据传送结束时才中断cpu。此外,中断方式的数据传送是在中断处理时cpu控制完成,而DMA方式则是在DMA控制器下完成的。
  4. 通信管道方式
    io通道是指专门负责输入输出的处理机,io通道方式是DMA方式的发展,他可以进一步减少cpu的干预。即把一个数据块的读或写为单位干预,减少对一组数据块的读或写及有关控制和管理为单位干预,同时,又可以实现cpu通道和I/O设备三者并行操作,从而更有效提高整个系统的资源利用率。
    通道指令类型单一,没有自己的内存,通道所执行的通道程序是放在主机内存中的,也就是说,通道与cpu共享内存,通道中传输数据块大小传输内存位置这些信息由通道控制,一个通道可以控制多台设备与内存数据交换。

5.1.3 I/O软件层次结构

在这里插入图片描述

5.1.4 应用程序的I/O接口

(1)字符设备接口
(2)块设备接口
(3)网络设备接口
(4)阻塞/非阻塞I/O

5.2 设备独立性软件

5.2.1 与设备无关的软件

与设备无关的软件是I/O系统最高层软件,他的下层是设备驱动程序,其间的界限因操作系统和设备的不同而有所差异。

5.2.2 高速缓存与缓冲区

  1. 磁盘高速缓存
    利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。磁盘高速缓存逻辑上属于磁盘,物理上则是驻留在内存中的盘块。
    高速缓存在内存中分为两种形式,一种是在内存中开辟一个单独的空间作为磁盘高速缓存,大小固定。另一种是把未利用的内存空间作为一个缓冲池,供请求分页系统和磁盘IO共享。

  2. 缓冲区
    在设备管理子系统中,引入缓冲区主要目的如下:
    1)缓和cpu与io设备间速度不匹配的矛盾。
    2)减少对CPU的中断频率,放宽对cpu中断响应时间的限制。
    3)解决基本数据单元大小(即数据粒度不匹配的问题)。
    4)提高cpu与io设备之间的并行性。
    实现方法如下:
    1)采用硬件缓冲器,成本高,除关键部位一般不用。
    2)采用缓冲区(位于内存区域)
    根据系统设置缓冲器的个数,缓冲技术可以分为如下几种:
    (1)单缓冲
    (2)双缓冲
    (3)循环缓冲
    (4)缓冲池

  3. 高速缓冲与缓冲区对比
    在这里插入图片描述

5.2.3 设备分配与回收

  1. 设备分配概述
    设备分配是指根据用户的io请求分配所需的设备。分配的总原则是充分发挥设备的使用效率,尽可能让设备忙碌,又避免由于不合理的分配方法造成进程死锁。从设备的特性来看,采用以下三种方通过分时式的设备成为独占设备、共享设备和虚拟设备。
    1)独占式使用设备:进程分配到独占设备后,便由其独占,直至该进程释放该设备。
    2)分时式共享使用设备:对于共享设备,可同时分配多个进程,通过分时共享使用。
    3)以spooling方式使用外部设备,spooling技术实现了虚拟设备功能,可以将设备同时分配多个进程,这种技术实质上就是实现了对设备的io操作的批处理。
  2. 设备分配的数据结构
    设备分配依据的主要数据结构有设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT),各数据结构功能如下:
    在这里插入图片描述
    在这里插入图片描述
  3. 设备分配策略
    1)设备分配原则
    设备分配应根据设备特性,用户要求和系统配置情况,既要充分发挥设备使用效率,又要避免造成进程死锁,还要将用户程序和具体设备隔离开来。
    2)设备分配方式
    静态分配:主要用于对独占设备的分配,在用户作业开始执行前,由系统一次性分配该作业的全部设备,控制器,一旦分配,这些设备控制器就一直由该作业所占用,直到该作业撤销,静态分配不会遭遇死锁,但设备利用率低。
    动态分配:在进程执行过程中,根据执行才需要进行,当进程需要设备时,通过系统调用命令向系统提出调用请求,由系统按某种策略给进程分配所需设备控制器,一旦用完,便立即释放。提高了设备利用率,但若分配方式不当,可能造成死锁。
    3)设备分配算法
    先请求先分配。优先级高者优先等。
    在这里插入图片描述
  4. 设备的安全性
    在这里插入图片描述
  5. 逻辑设备名到物理设备的映射
    在这里插入图片描述

5.2.4 spooling技术(假脱机技术)

操作系统中采用的一项独占设备改造成共享设备的技术。该技术利用专门的外围控制机,将低俗io设备上的数据传送到告诉磁盘,或者相反。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

合并两个链表 --- 递归回溯算法练习二

目录 1. 分析题意 2. 分析算法原理 2.1. 递归思路: 1. 挖掘子问题: 3. 编写代码 3.1. step one 3.2. step two 3.3. step three 3.1. 递归写法 4. 补充 --- 迭代写法 5. 总结 1. 分析题意 力扣上原题链接如下: 21. 合并两个有序链表…

ubuntu16.04 交叉编译 mbedtls

在为客户交叉编译项目时需要依赖 mbedtls, 客户的机器是 arm64 的 ubuntu 16.04, 交叉编译过程中遇到几个问题。 首先, mbedtls 需要依赖 python, 在 cmake 的过程中, 如果不是使用系统默认的 cmake 可能会导致,mbedt…

6.4翻转二叉树(LC226—送分题,前序遍历)

算法: 第一想法是用昨天的层序遍历,把每一层level用切片反转。但是这样时间复杂度很高。 其实只要在遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。 这道题目使用前序遍历和后序遍历都可以,唯独中序遍历不方便&#x…

赛氪中西部外语翻译大赛入榜2023国内翻译赛事发展评估报告

中西部外语翻译大赛入选中国外文局CATTI项目管理中心和中国外文界平台联合发布《2023国内翻译赛事发展评估报告》 近日,中国外文局CATTI项目管理中心和中国外文界平台联合发布了《2023国内翻译赛事发展评估报告》,报告对国内主流外语翻译赛事进行了问卷调…

Centos8安装出错问题

科普介绍: CentOS 8 是一个基于 Linux 的操作系统,是 Red Hat Enterprise Linux (RHEL)的免费和开源版本。它提供了稳定、安全和可靠的基础设施,适用于服务器和桌面环境。CentOS 8 是 CentOS 系列中最新的版本&#x…

Nginx(五)

负载均衡 官网文档 Using nginx as HTTP load balancer nginx中实现反向代理的方式 HTTP:通过nginx配置反向代理到后端服务器,nginx将接收到的HTTP请求转发给后端服务器。使用 proxy_pass 命令 HTTPS:通过nginx配置反向代理到后端服务器&…

Amazon Aurora MySQL 与 Amazon Redshift 的 Zero ETL 集成已全面可用,一起轻松上手!

“数据是应用、流程和商业决策的核心。” 亚马逊云科技数据库、 数据分析和机器学习全球副总裁 Swami Sivasubramanian 如今,客户常用的数据传输模式是建立从 Amazon Aurora 到 Amazon Redshift 的数据管道。这些解决方案能够帮助客户获得新的见解,进而…

【狂神说Java】linux详解

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :狂神说Java 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…

Llama2通过llama.cpp模型量化 WindowsLinux本地部署

Llama2通过llama.cpp模型量化 Windows&Linux本地部署 什么是LLaMA 1 and 2 LLaMA,它是一组基础语言模型,参数范围从7B到65B。在数万亿的tokens上训练的模型,并表明可以专门使用公开可用的数据集来训练最先进的模型,而无需求…

编码规范集合

文章目录 前言命名规范项目命名目录命名文件命名命名严谨性 HTML 书写规范结构、样式、行为分离缩进文件编码语义化IE 兼容模式viewport为移动端设备优化,设置可见区域的宽度和初始缩放比例iOS 图标favicon(网站图标,移动端默认可用于添加到桌…

微信小程序前端开发

目录 前言: 1. 框架选择和项目搭建 2. 小程序页面开发 3. 数据通信和接口调用 4. 性能优化和调试技巧 5. 小程序发布和上线 前言: 当谈到微信小程序前端开发时,我们指的是使用微信小程序框架进行开发的一种方式。在本文中,我…

100+ Windows运行命令大全,装B高手必备

操作电脑关闭、重启、注销、休眠的命令细则: 用法: shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f] [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]] 没有参数 显示帮助。这与键入 /? 是一样的。…

第七章 :Spring Boot web开发常用注解(二)

第七章 :Spring Boot web开发常用注解(二) 前言 本章节知识重点:作者结合自身开发经验,以及觉察到的一个现象:Springboot注解全面理解和掌握的并不多,对注解进行了全面总结,共分两个章节,可以作为web开发工程师注解参考手册,SpringBoot常用注解大全,一目了然!。本…

python机器学习——随机森林

随机森林 随机森林(Random Forest)是一种集成学习方法,它通过构建多个决策树并结合它们的预测结果来进行分类或回归。 算法原理: 决策树(Decision Tree): 随机森林由多个决策树组成。决策树是一种基于树…

增强地理热图:Highcharts Maps v11.2.0 Crack

Highcharts Maps v11.2.0 添加了对地理热图插值的支持,允许您在类似温度图的图表的已知数据点之间添加估计值。 Highcharts Maps 提供了一种符合标准的方法,用于在基于 Web 的项目中创建逻辑示意图。它扩展了用户友好的 Highcharts JavaScript API&#…

JTS: 18 DistanceToPoint 最近距离计算

这里写目录标题 版本代码 版本 org.locationtech.jts:jts-core:1.19.0 链接: github 代码 import org.locationtech.jts.algorithm.distance.DistanceToPoint; import org.locationtech.jts.algorithm.distance.PointPairDistance; import org.locationtech.jts.geom.Coordin…

【Qt-23】ui界面设计-ToolBar

1、ToolBar 右击主窗体添加工具栏 新建动作,可设置图标,图标有本地文件和资源两种方式。 修改toolButtonStyle的属性,可设置图标与汉字显示的方式。 页面跳转: connect(ui->action, SIGNAL(triggered()), this, SLOT(openWid…

抖音直播矩阵玩法,直播矩阵引流项目,每日精准引流500左右

今天我再分享一个专注于纯直播带货的玩法,这个案例不论是导流还是直播模式,都值得我们深入关注。某音直播矩阵玩法,每日精准引流500 这种直播方式通常会邀请两位模特,一个展示产品,一个递交产品,无需过多的…

小程序开发——小程序页面的配置与生命周期

目录 1.小程序的页面配置 2.页面的生命周期 3.页面跳转 4.页面间的参数传递 5.新闻客户端案例讲解 6.小结 1.小程序的页面配置 页面的配置设置app.json中的window配置项的内容(页面中配置项会覆盖app.json的window中相同的配置项),其属…

【狂神说Java】SpringCloud-Netflix

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :狂神说Java 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…