DJ5-5/6 与设备无关的 I/O 软件、用户层的 I/O 软件

news2024/12/29 16:17:10

目录

5.5  与设备无关的 I/O 软件

5.5.1  与设备无关软件的概念

5.5.2  与设备无关的软件的功能

5.5.3  设备分配

5.5.4  逻辑设备名到物理设备名映射的实现

5.6  用户层的 I/O 软件

5.6.1  系统调用与库函数

5.6.2  假脱机技术 SPOOLing


5.5  与设备无关的 I/O 软件

5.5.1  与设备无关软件的概念

为每个设备所配置的设备驱动程序是与硬件紧密相关的软件。为了实现设备独立性,必须再在设备驱动程序之上设置一层软件,称为与设备无关的 I/O 软件。

为了实现设备独立性而引入了 逻辑设备和物理设备 这两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,仍然必须使用物理设备名称。

因此,系统必须具有将逻辑设备名称转换为某个物理设备名称的功能 -- 逻辑设备表。

实现设备独立性后,可带来两方面的好处:

① 设备分配时的灵活性:进程能以逻辑设备名称来请求使用某类设备。系统可立即将该类设备中未被分配的任意一个分配给进程,仅当所有该类设备已全部分配完毕时,进程才会被阻塞。

分配时需要使用银行家算法避免死锁。

② 易于实现 I/O 重定向:I/O 重定向是指用于 I/O 操作的设备可以更换,而不必改变应用程序。

修改逻辑设备表即可。

5.5.2  与设备无关的软件的功能

与设备无关的软件是 I/O 系统的最高层软件。

1、执行所有设备的公有操作

  • 对独立设备的分配与回收
  • 将逻辑设备名映射为物理设备名,进一步查找相应的驱动程序
  • 对设备进行保护,禁止用户直接访问设备
  • 缓冲管理,即对字符设备和块设备的缓冲区进行有效的管理
  • 差错控制

设备映射表中含有设备驱动程序的首地址。

2、向用户层软件提供统一接口

无论何种设备,它们向用户所提供的接口应该是相同的。

对各种设备的读操作,在应用程序中都使用 read;而对各种设备的写操作,在应用程序中也都使用 write 。

5.5.3  设备分配

1、设备分配中的数据结构

在多道程序环境下,系统中的设备被所有进程共享,为防止进程对系统资源的无序竞争,必须由系统统一分配设备。除此之外,为了确保 CPU 与设备之间能够进行通信,还应分配相应的控制器和通道。

为实现设备分配,系统中应设置相应的数据结构。

① 设备控制表 DCT:系统为每个设备配置一张设备控制表,用于记录设备的特性及与设备控制器的连接情况。

指向控制器表的指针:指向该设备连接的设备控制器们的控制表 COCT 的指针。

设备队列的队首指针:指向请求该设备的进程们 PCB 的设备请求队列的指针。

② 控制器控制表、通道控制表和系统设备表

COCT:每个控制器配置一张表,它反映控制器的使用状态以及和通道的连接状况等。

CHCT:为每个通道配置一张表,它反映通道的使用状态。

SDT:记录已被连接到系统中的所有物理设备的情况。每个物理设备占一个表目,整个系统配置一张 SDT 。

2、设备分配过程

3、设备分配时应考虑的因素

① 设备的固有属性

  • 独占性。在一段时间内,该设备只允许一个进程独占,即是临界资源。
  • 共享性。在一段时间内,该设备允许多个进程共享。
  • 可虚拟性。虚拟设备是利用某种技术把独占设备改造成可由多个进程共享的设备。

② 设备分配算法

  • 先来先服务
  • 优先级高者优先

I/O 设备速率慢 && 切换进程开销大 => 算法花样没有那么多

③ 设备分配中的安全性

安全分配方式

  • 每当进程发出 I/O 请求后,便进入阻塞状态,I/O 操作完成后唤醒
  • 摒弃了 “请求和保持” 条件,不会产生死锁
  • 缺点:进程进展缓慢,即 CPU 与 I/O 设备串行工作

不安全分配方式

  • 进程发出 I/O 请求后仍继续运行
  • 可操作多个设备,推进迅速
  • 缺点:不安全,具备 “请求和保持” 条件,可能死锁


设备分配程序的改进

1、基本分配程序的问题

  • 进程以物理设备名提出 I/O 请求,无设备独立性。
  • 采用单通路 I/O 系统结构,容易产生瓶颈。

2、改进方案

  • 增加设备独立性
  • 考虑多通路情况

增加通道的代价太大。

5.5.4  逻辑设备名到物理设备名映射的实现

1、逻辑设备表 LUT

用于实现将应用程序中的逻辑设备名映射为物理设备名。

物理设备名是 OS 分配的,因此在不同 OS 中同一物理设备的物理设备名可能不同。

2、逻辑设备表的设置

  • 整个系统中设置一张 LUT (a)
  • 为每个用户设置一张 LUT (b)

可见逻辑设备名保持不变,因此我们编写的程序也不用修改。

5.6  用户层的 I/O 软件

由于大部分 I/O 软件都在 OS 内部,只有一小部分在用户层。因此,用户层软件必须通过一组系统调用来取得操作系统服务。此外,现代高级语言通常提供了与各系统调用对应的库函数,因此用户程序也可以通过调用对应的库函数来使用系统调用。

5.6.1  系统调用与库函数

1、系统调用

2、库函数(Win32 API)

5.6.2  假脱机技术 SPOOLing

1、引入

虚拟性是 OS 的四大特征之一。多道程序技术将一台物理 CPU 虚拟为多台逻辑 CPU,从而允许多个用户共享一台主机。而 SPOOLing 技术将一台物理 I/O 设备虚拟为多台逻辑 I/O 设备,同样允许多个用户共享一台物理 I/O 设备。

2、SPOOLing 程序

在多道程序系统中,专门利用一道程序 -- SPOOLing 程序 -- 来完成对设备的 I/O 操作,无需使用外围 I/O 处理机。

在主机的直接控制下,实现脱机输入、输出功能,此时的外围操作与 CPU 对数据的处理同时进行。把这种在联机情况下实现的同时外围操作称为 SPOOLing (Simultaneaus Periphernal Operating On-Line) 或称为假脱机操作。

用联机的方式来实现脱机输入、输出功能:虽然 I/O 操作由 SPOOLing 程序来负责完成,但是 SPOOLing 程序还是需要 CPU 来运行,因此脱了但没完全脱。

3、SPOOLing 系统的处理过程

① 输入

1)进程 n 请求 => 输入进程为进程 n 在输入井中分配空间 => 设备数据由输入缓冲区送入输入井 => 同时生成 输入请求表 挂入 输入请求队列

2)当 CPU 空闲时,从输入请求队列中取出一张输入请求表,并根据其中的任务,将设备数据送入内存中相应的进程缓冲区。

输入请求队列:

② 输出:打印

1)进程 n 请求 => 输出进程为进程 n 在输出井中分配空间 => 设备数据由进程缓冲区送入输出井 => 同时生成一张 打印请求表 挂入 打印请求队列

2)当打印机空闲时,从打印请求队列中取出一张打印请求表,并根据其中的任务,取出输出井中相应的数据 => 输出缓冲区 => 打印。

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

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

相关文章

鲲鹏昇腾开发者峰会2023举办

[2023年5月6日 广东东莞]今天,以“创未来 享非凡”为主题的鲲鹏昇腾开发者峰会2023在东莞松山湖举办。 鲲鹏产业生态繁荣,稳步发展,正在成为行业核心场景及科研领域首选,加速推动数字化转型;昇腾产业快速蓬勃向上&…

【大数据之Hadoop】二十五、生产调优-HDFS核心参数

1 NameNode内存生产配置 Hadoop3.x系列的NameNode内存是动态分配的,可以用jmap -heap 进程号 查看分配的内存。 在hadoop102中NameNode和DataNode的内存都是自动分配的,且相等。 根据经验: NameNode最小值为1G,每增加1百万个物理…

【JavaEE初阶】多线程带来的风险~线程安全

目录 🌟观察线程不安全的现象 🌟线程不安全的原因 🌈1、多个线程修改了同一个共享变量 🌈2、线程是抢占式执行的,CPU的调度是随机的 🌈3、指令执行时没有保证原子性 🌈4、多线程环境中内…

当无触控板和鼠标的情况下,如何开启触控板

背景:一次出行匆忙,忘记带鼠标,周围也无可用工具,主要是触控板当时也被我关闭了,下面讲述一下我是如何解决在没有鼠标的情况下开启触控板的。 首先我们开启电脑后, 存在两种思路去开启触控板 第一种方案…

加拿大访问学者签证材料清单

加拿大在教育、政府透明度、社会自由度以及生活品质等方面在国际上排名名列前茅,出于环境、社会氛围等因素,不少学者将目光聚焦于这个北美的发达国家。加拿大的访问学者签证属于工作签证,过去只要有邀请函就可以办理,但是自去年2月…

Python:Python底层原理:Python的整数是如何实现的

Python整数在底层存储方式 1. Python整数在底层对应的结构体 PyLongObject2.整数是怎么存储的2.1 整数0存储2.2 整数12.3 整数-12.4. 2**30 -12.5 . 2**302.6 . ob_digit[a, b, c] 对应整数计算 计算整数所占内存大小总结 Python的底层是C/C ,但是 C/C 能表示的整数…

Linux挂载新磁盘到根目录

添加磁盘到需要挂载的机器上 lsblk查看硬盘挂载情况,sdb,sdc为我新挂载的磁盘 fdisk -l查看挂载之前的分区情况 为新硬盘创建分区 fdisk /dev/sdb 终端会提示: Command (m for help):输入:n 依次输入p…

【HTTPS】

HTTP明文传输问题 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。冒充风险,比如冒充淘宝网站,用户钱容易没。 TLS协议解决H…

【雅可比左乘右乘】

常见雅可比左乘(以自变量R为例子,围绕旋转点p的旋转点的左扰动雅可比): 旋转点的右扰动雅可比(右乘): 左雅可比和右雅可比之间的区别在于它们各自描述了不同的变换方向。左雅可比将输入空…

硬件-6-基站和移动通信系统的演进

1G、2G、3G、4G、5G 移动通信技术发展简史 1 移动通信系统简介 移动通信系统从第一代移动通信系统(1G)开始逐渐发展,目前已经发展到第四代移动通信系统(4G),第五代移动通信系统(5G)也已经开始标准化,预计2020年商用,6G预计2030年…

Linux网络架构: XDP, iptables/netfilter和iproute2/tc/ip/Qdiscs

本文目录 1、架构框图2、网络架构分成三大块3、网络架构-----对应的配置工具-----对应的原理与概念 说到Linux的网络架构,就离不开谈。。。这些东西。这几个概念很容易混淆起来,但如果仔细去看,就会发现这个Linux的网络架构的设计其实是非常简…

10:00面试,10:04就出来了 ,问的实在是太...

从外包出来,没想到竟然死在了另一家厂子 自从加入这家公司,每天都在加班,钱倒是给的不少,所以我也就忍了。没想到12月一纸通知,所有人都不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个…

建筑专业可以转行学云计算吗?

当然可行。 在过去的几年中,我们已经帮助很多建筑土木工程专业的同学转行学习云计算技术,尤其是在建筑信息化编程方向。近年来,云计算行业持续发展,涉及到众多领域,如云数据中心、云安全、云存储、云计算机服务等。云…

管好【SD-WEBUI】中大量的模型:名称+预览图+备注

文章目录 (零)前言(一)模型(1.1)模型名称(文件名)(1.2)模型缩略图(1.3)模型备注文字(1.4)模型详细信息 &#…

国民技术N32G430开发笔记(18)- I2C1 从机收发数据

I2C1 从机收发数据 1、将PB6 PB7设置为i2c从机,跟android板卡通讯。 2、Android发送 写命令: 0x05 0x02 0x00 0x00 checksum n32将收到的命令打印出来 读版本命令: 0x01 0x02 0x00 0x00 checksum n32将app_version返回电视端 3、i2c从机配置…

MTK6765安卓智能模组5G核心板联发科MTK方案主板开发板

联发科MTK6765这是一款12纳米八核A53处理器,最高运行速度可达2.3GHz。它使用Android 9.0操作系统,配备2G16G内存,也支持其他选项1G/3G/4G8G/32G/64G。 此外,它支持全球主流频段,包括默认的国内频段以及2G GSM、2G/3G E…

【Android取证篇】ADB端口驱动更新详细步骤

【Android取证篇】ADB端口驱动更新详细步骤 更新ADB端口驱动,解决无法连接设备问题—【蘇小沐】 1、【记录VID】路径:设备管理器->便携设备->属性->(记录)VID 查看设备的VID 2、添加设备ID(VID&#xff09…

Sass 总结

文章目录 Sass 总结概述编译.scss 和 .sass变量数据类型属性值变量属性名变量 嵌套规则基本嵌套& 父选择器标识符嵌套属性 import 导入导入Sass文件私有化导入原生CSS文件 mixin 混合器无参数带参数命名参数关键字参数可变参数content 混入内容 extend 继承media 媒体查询控…

hbase查询报错unable to find region for

某天由于集群资源不足。hbase大面积 region server 负载爆炸卡死,隔天发现部分查询报错 集群中一张表某些查询找不到region 尝试了重启集群和滚动重启集群,考虑滚动重启的过程会把regionserver上的region迁出和迁入。试试能不能修复,果断的…

自定义项目Jar上传到maven中央仓库(一步到位)

中央仓库 Open Source Software Repository Hosting 简称 OSSRH 实现目标:将自定义项目上传至maven中央仓库,其他人只需引入maven坐标即可直接使用 上传步骤:亲测有效 注册账号(去它平台)提交工单(叫它做事…