计算机操作系统(慕课版)第七章学习笔记

第七章 输入/输出系统
在这里插入图片描述
7.1 I/O系统的功能、模型和接口

I/O系统管理的主要对象
I/O设备和相应的设备控制器。
其最主要的任务
完成用户提出的I/O请求
提高I/O速率
提高设备的利用率
为更高层的进程方便地使用这些设备提供手段

7.1.1 I/O系统的基本功能
1、能够隐藏物理设备的细节
2、能够保证OS与设备无关
3、能够提高处理机和I/O设备的利用率
4、能够对I/O设备进行控制
5、能够确保对设备的正确共享
6、能够处理错误

7.1.2 I/O系统的层次结构和模型

I/O软件的层次结构
在这里插入图片描述

I/O系统中各种模块之间的层次视图
在这里插入图片描述

7.1.3 I/O系统接口
在I/O系统与高层之间的接口中,根据设备类型的不同,又进一步分为若干个接口。
1 块设备接口

  • 块设备:也叫存储设备。信息交换的基本单位为字符块,属于有结构设备,块大小一般为512B—4KB,典型的有:磁盘、-光盘等。通常采用DMA I/O方式
  • 隐藏了磁盘的二维结构。
  • 将抽象命令映射为低层操作。
    (如收到读磁盘命令时,先将抽象命令中的逻辑块号转换为磁盘的盘面、磁道和扇区等)

2 流设备接口
该接口又称为字符设备接口,它反映了大部分字符设备的本质特征,用于控制字符设备的输入或输出。

  • 字符设备:信息交换的基本单位为字符,典型的有:键盘、打印机和显示器等。通常采用中断驱动I/O方式。
  • get和put操作。字符设备采用顺序存取方式
    • get操作用于从字符缓冲区取得一个字符(到内存),并将它返回给调用者。
    • put操作用于将一个新字符(从内存)输出到字符缓冲区网络。
  • in-control指令。包含许多参数,每个参数均表示一个与具体设备相关的特定功能。

3 网络通信接口
OS提供相应的网络软件和网络通信接口,以使计算机能通过网络同网络上的其他计算机进行通信,或上网浏览信息。

7.2 I/O设备和设备控制器
1 I/O设备一般是由执行I/O操作的机械部分和执行控制I/O的电子部件组成,电子部分称为设备控制器或适配器,机械部分是设备本身。

2 设备与控制器之间的接口
通常,设备并不是直接与CPU进行通信,而是与设备控制器通信,因此,在I/O设备中应含有与设备控制器之间的接口。有三种类型的信号线:
在这里插入图片描述

1)数据信号线。这类信号线用于在设备和设备控制器之间传送数据信号。
2)控制信号线。这是作为由设备控制器向I/O设备发送控制信号时的通路。该信号规定了设备将要执行的操作,如读操作或写操作,或执行磁头移动等操作。
3)状态信号线。用于传送指示设备当前状态的信号。设备的当前状态有正在读(或写),设备已读/写完成,并准备好新的数据传送。

1.设备控制器的功能:

  • 控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换
  • 设备控制器是CPU和I/O设备之间的接口。接收从CPU发来的命令,并去控制I/O设备工作
  • 设备控制器是一个可编址的设备
    • 当仅控制一个设备时,它只有一个惟一的设备地址
    • 若控制器可连接多个设备时,则应含有多个设备地址,并使每一个设备地址对应一个设备
      2 设备控制器的组成
  • 设备控制器与处理机的接口
  • 设备控制器与设备接口
  • I/O逻辑
  • 硬件支持:控制寄存器(存放命令及参数)、数据寄存器(存放数据)、状态寄存器(记录设备状态)

在这里插入图片描述

CPU与控制器接口:实现CPU与设备控制器之间的通信,包括数据线、地址线和控制线
设备控制器与设备的接口:一个设备控制器可以连接一个或多个设备
I/O逻辑:实现对设备的控制。

7.2.3 内存映像I/O
驱动程序将抽象I/O命令转换成具体的命令和参数等装入设备控制器的相应寄存器,由控制器执行这些命令,具体实施对I/O设备的控制。具体方法:
1.利用特定的I/O指令

  • 访问内存和设备需要两种不同的指令
    2.采用内存映像I/O
  • 在编址上不在区分内存单元地址和设备控制器中的寄存器地址,统一编址 k 。 k在0~n-1范围时,为内存地址;若k>=n时,为某控制器的寄存器地址
  • 统一了访问方法,简化了I/O编程
    在这里插入图片描述
    7.2.4 I/O 通道
    引入通道的目的:
    使一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU从繁杂的I/O任务中解脱出来

用于I/O操作的命令主要有两种:
I/O指令:启动通道程序
通道命令:对I/O操作进行控制

7.2.5 I/O设备的控制方式
1.使用轮询的可编程I/O方式(基本不用)

  • ①由CPU定时发出询问,询问设备是否忙,进程进入忙等
  • ②不忙即进行I/O,否则转①
    实现容易,但效率偏低,CPU会长期处于忙等待
    2.使用中断的可编程I/O方式(广泛采用)
  • 当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器于是按照该命令的要求去控制指定的I/O设备。此时,CPU与I/O设备并行操作。

设备管理的主要任务之一就是控制设备和内存或CPU之间的数据传送。
选择和衡量控制方式有如下3条原则:

  • 数据传送速度足够高,能满足用户需要但又不丢失数据;
  • 系统开销小,所需处理控制程序少;
  • 能充分发回硬件资源的能力,使I/O设备尽量忙,而CPU等待时间少

DMA工作过程
1 CPU提供被读取块磁盘地址,并将目标存储地址和待读取字节数分别存放在MAR与DC中。
2 校验无误,进程入阻塞态。
3 控制器按照MAR中地址,把第一个字节送入主存,然后计数器值(DC)减1 ,按指定字节数进行数据传送其他字节,直到字节计数器等于0。
4 控制器引发中断,通知操作系统,操作完成。
在这里插入图片描述

7.3.2 中断处理程序
在这里插入图片描述
7.5 与设备无关的I/O软件
基本概念:为了提高OS的可适应性和可扩展性,在现代OS中都无一例外地增加了与设备无关的I/O软件,以实现了设备独立性,也称设备无关性。

7.5.5 I/O调度
调度一组I/O请求:按照确定好的顺序来执行I/O操作;提高计算机效率。
通过I/O调度可以

  • 改善系统整体性能;
  • 在进程间公平共享设备访问;
  • 减少完成I/O调度所需的平均等待时间。

7.6.2 假脱机系统

  • 1 为了缓和CPU的高速性与I/O设备的低速性间矛盾而引入
    • 利用一个程序模拟脱机输入时的外围控制机功能,将低速的I/O设备上的数据传送到高速的磁盘上。
    • 用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备
  • 外围操作与CPU对数据的处理同时进行,这种在联机情况下实现的同时外围操作称为SPOOLing
    • 是操作系统中采用的一项将独占设备改造成为共享设备的技术。

SPOOLING系统的组成

  • 输出井和输入井:在磁盘上开辟的两个大的存储空间,

    • 输入井:模拟脱机输入时的磁盘设备,用于暂存输入设备输入的数据
    • 输出井:模拟脱机输出时的磁盘,用于暂存用户程序的输出数据
  • 输入缓冲区和输出缓冲区:为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存中开辟了两个缓冲区。

    • 输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井;
    • 输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。
  • 输入进程Spi

    • Spi模拟脱机输入时的外围控制机,将用户要求的数据从输入设备通过输入缓冲区再送入输入井,当CPU需要输入数据时,直接从输入井读入内存
  • 输出进程Spo

    • Spo模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上
  • 井管理程序

    • 用于控制作业与磁盘井之间信息的交换

在这里插入图片描述
3 SPOOLING系统的特点

  • 提高了I/O的速度
    -对数据进行的I/O操作,已从对低速I/O设备进行的I/O操作,演变为对输入井或输出井中数据的存取

  • 将独占设备改造成共享设备

    • 实际上并没有为任何进程分配设备,只是在输入井或输出井中为进程分配一个存储区和建立一张I/O请求表
  • 实现了虚拟设备功能

    • 宏观上,多个进程同时使用一台独占设备;对每个进程来说,认为是自己独占了一个设备
  • 假脱机管理进程

    • 在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存
    • 为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入表中,再将该表挂到假脱机文件队列上
  • 假脱机打印进程

    • 当打印机空闲时,进程从请求打印队列的队首取出一张请求打印表,根据表中的要求将要打印的数据,从输出井传送到内存缓冲区,再由打印机进行打印
    • 打印完,进程再次察看请求打印队列,若非空,重复上述工作,直到队列为空。此后进程才将自己阻塞起来。仅当下次再有打印请求时,进程才被唤醒

7.7 缓冲管理
缓冲的引入
通道的建立提供了CPU、通道和I/O设备之间并行操作的可能性,但由于通道数量不足会产生“瓶颈”现象,影响并行的程度,引入缓冲可以减少占用通道的时间,缓解“瓶颈”现象。
引入缓冲的主要原因

  • 缓冲CPU与I/O设备间速度不匹配的矛盾。
  • 减少中断CPU的次数
  • 解决数据粒度不匹配的问题。
  • 提高CPU与I/O设备的并行性

缓冲:就是用来对数据传送速度不同的设备的传送速度进行匹配/缓冲的一种常用手段。
其实现方法除在关键地方可采用硬件缓冲器外,大都采用软件缓冲来实现。

在这里插入图片描述

单缓冲:
在设备和处理机之间设置一个缓冲。设备与处理机交换数据时,先把交换的数据写入缓冲区,然后需要数据的设备/处理机再从缓冲区中取走数据。
特点:缓冲区数只有一个;设备与处理机对缓冲区的操作是串行的。是操作系统能提供的最简单的缓冲技术。

双缓冲:
在设备和处理机之间设置2个缓冲。设备与处理机交换数据时,先把交换的数据写入缓冲区,然后需要数据的设备/处理机再从缓冲区中取走数据。因缓冲区有2个,提高了设备与处理机并行操作的程度,只有当两个均为空时,需数据的进程才等待。

循环缓冲
(1) 多个缓冲区
作为输入的多缓冲区可分为三种类型:
用于装输入数据的空缓冲区R,
已装满数据的缓冲区G
计算进程正在使用的现行工作缓冲区C
(2)多个指针
nextg(指示程序下一次可用的已经装满的数据缓冲区G)
nexti(指示输入设备下一次可使用的空缓冲区R)
current(用来指示程序正在使用的现行缓冲区)

缓冲池
1、缓冲池:将系统内所有的缓冲区统一管理起来,就形成了能用于输入/输出的缓冲池。缓冲池通常由若干大小相同的缓冲区组成,是系统的公用资源,任何进程都可以申请使用缓冲池 中的各个缓冲区。
在这里插入图片描述
缓存(cache)

  • 缓存是保存数据副本的高速内存区域:
    - CPU缓存、磁盘缓存、光驱缓存等。
  • CPU缓存(高速缓存):
    - 为了缓和CPU运行速率与内存读/写速率不匹配的矛盾
    - 当CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;若没有找到,则从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据库调入缓存中。
  • 缓存和缓冲:
    - 缓冲可以保存数据项的唯一的现有版本。
    - 缓存只是提供一个位于其他地方的数据项的更快存储副本
    - 有时,同一个内存区,既可以是缓冲,也可以是缓存。

7.8 磁盘存储器的性能和调度
磁盘性能简述
磁盘设备可包括一个或多个物理盘片,每个磁盘片分一个或两个存储面(Surface);

磁盘容量计算
容量=柱面×磁头×扇区,每扇区存放512B数据
40GB硬盘
cylinder:19710;head:16;sector:255
计算:19710×255×16×512B=41173401600B=40GB
1.44MB软盘
Sides:2
Tracks:80
Sectors:18
计算:2×80×18×512B=1.44MB

在这里插入图片描述

磁盘访问时间

  • 磁盘在工作时是以恒定速率旋转。
  • 为了读或写,
    - 磁头必须能移动到所指定的磁道上
    - 并等待所指定的扇区的开始位置旋转到磁头下
    - 再开始读或写数据。
  • 一次访盘时间 = 寻道时间+旋转延迟时间+存取时间
    - 寻道时间:把磁头移动到指定磁道上所经历的时间。
    - 旋转延迟时间:指定扇区移动到磁头下面所经历的时间。
    - 存取时间:把数据从磁盘读出或向磁盘写入数据所经历的时间。

先来先服务FCFS、最短寻道时间优先SSTF、 SCAN算法、循环扫描算法CSCAN这些算法结合题目容易理解。
先写课后题。

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

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

相关文章

【C语言】linux内核xmit_one函数

一、中文注释 static int xmit_one(struct sk_buff *skb, struct net_device *dev,struct netdev_queue *txq, bool more) {unsigned int len;int rc;// 如果全局ptype列表或者设备特定的ptype列表不为空,则执行网络接口层网络层的NIT(Network Tap&…

模型练习史

文章目录 肌肉光头vikingtorso死侍蓝毒液卡通girlwalletdog headman anatomy总结 肌肉光头 viking torso 死侍 蓝毒液 卡通girl wallet dog head man anatomy 总结 zbrush 与 blender 结合使用, 善 !

3D城市模型可视化:开启智慧都市探索之旅

随着科技的飞速发展,我们对城市的认知已经不再局限于平面的地图和照片。今天,让我们领略一种全新的城市体验——3D城市模型可视化。这项技术将带领我们走进一个立体、生动的城市世界,感受前所未有的智慧都市魅力。 3D城市模型通过先进的计算机…

华为OD机试真题-提取字符串中的最长数学表达式并计算-2023年OD统一考试(C卷)---Python3--开源

题目: 考察内容: 滑动窗口 eval() 思路:先把合法字符提取出来;再从合法字符提取出合法表达式;再获取最长字符串,并运算最后结果。 代码: """ analyze: 如果没有,返…

Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

文章目录 前言一、通过Spectator获取坐标二、通过道路ID获取坐标总结 前言 CARLA没有直接的方法给使用者查找地图坐标点来生成车辆,这里推荐两种实用的方法在特定的地方生成车辆。 一、通过Spectator获取坐标 1、Spectator(观察者)&#xf…

【C++】C++的四种强制类型转换

1、C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换…

我国每年研究生的毕业数量统计分享

本数据集详细记录了自1949年至2021年我国每年研究生的毕业数量(包括硕士和博士学位的毕业生)。在2021年,我国的研究生毕业生人数达到了772,761人,此数字比上一年度增加了44,000人。 统计的数据单位使用的是人数。 数据展示&…

rust学习(tokio协程分析二)

例子: 我们如果使用new_current_thread来创建tokio的协程运行runtime时, let rt tokio::runtime::Builder::new_current_thread().enable_all().build().unwrap(); 发现只有调用rt.block_on(...)才能触发。这里我们分析一下为何在new_current_thread…

20240301作业

1.使用fwrite、fread将一张随意的bmp图片&#xff0c;修改成德国的国旗 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> int main(int argc, const char *argv[]) {FILE* fp fopen("./gaoda.bmp","…

SpringBoot+Vue实战:打造企业级项目管理神器

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

vue面试:MVVM、MVC、MVP的区别?

vue面试&#xff1a;MVVM、MVC、MVP的区别&#xff1f; MVVM、MVC、MVP是什么&#xff1f;&#xff08;1&#xff09;MVC&#xff08;2&#xff09;MVVM&#xff08;3&#xff09;MVP MVVM、MVC、MVP是什么&#xff1f; MVC、MVP 和 MVVM 是三种常见的软件架构设计模式&#x…

【复现】蓝凌OA SQL注入漏洞_61

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 蓝凌智能OA是由深圳市蓝凌软件股份有限公司开发&#xff0c;是一款针对中小企业的移动化智能办公产品&#xff0c;融合了钉钉数字…

【前端素材】推荐优质在线大气数码商城电商网页ClassiList平台模板(附源码)

一、需求分析 1、系统定义 电子数码电商平台是专门销售电子数码产品&#xff08;如手机、电脑、相机、智能设备等&#xff09;的在线电子商务平台。这些平台提供了一个便捷的购物环境&#xff0c;让消费者可以方便地浏览、比较和购买各种电子数码产品。 2、功能需求 在线大…

苹果备忘录导出方法

文章目录 前言方法1&#xff1a;iCloud 导出方法2&#xff1a;Pages 文稿导出&#xff08;最推荐&#xff09;方法3&#xff1a;借助Mac软件导出总结 前言 苹果生态真是让我们又爱又恨&#xff0c;其得益于无缝整合、安全性和应用程序生态系统&#xff0c;能够让在用户在自己的…

渗透测试靶场环境搭建

1.DVWA靶场 DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用&#xff0c;包含了OWASP TOP10的所有攻击漏洞的练习环境&#xff0c;旨在为安全专业人员测试自己的专业技能和工具提供合法的环境&#xff0c;同时…

叠纸探索开放世界,女性向游戏的新生机?

女性向游戏也能搭载开放世界&#xff1f; 随着新一批游戏版号的发放&#xff0c;叠纸的新作《无限暖暖》毫无疑问成为了最受关注的游戏之一&#xff0c;换装冒险开放世界的组合为女性向游戏市场带来了新的惊喜。 作为暖暖系列的第五部作品&#xff0c;《无限暖暖》对比前作可以…

数据库常见理论常见面试题(总结)

一、前言 这里呢&#xff0c;博主会介绍一些平时关于数据库的理论的问题&#xff0c;比如数据库的三级模式两级映射、触发器、范式、存储过程、视图等等概念知识&#xff0c;但是像索引、事务、锁等内容&#xff0c;之前的文章就讲解过了&#xff0c;这里就不作过多的介绍了&am…

transformer--编码器2(前馈全连接层、规范化层、子层链接结构、编码器层、编码器)

前馈全连接层 什么是前馈全连接层: 在Transformer中前馈全连接层就是具有两层线性层的全连接网络 前馈全连接层的作用: 考虑注意力机制可能对复杂过程的拟合程度不够,通过增加两层网络来增强模型的能力 code # 前馈全连接层 class PositionwiseFeedForward(nn.Module):de…

图片如何无损放大?分享三个方法帮你快速解决

在数字时代&#xff0c;图片已成为我们生活的重要组成部分&#xff0c;无论是社交媒体的分享&#xff0c;还是专业设计的呈现&#xff0c;都离不开高质量的图片。然而&#xff0c;当我们试图放大一张图片以获取更多细节时&#xff0c;常常会遇到一个令人头疼的问题——失真。此…

多版本jdk共享jar

多版本jdk共享jar Java 9的一个有趣特性是支持多版本JAR文件。这是什么意思?过去&#xff0c;库开发人员在支持新版本的Java时有三种选择: 提供两个(或更多)不同的JAR文件&#xff0c;每个文件对应他们想要支持的Java版本。它们的版本号可能是“1.2-java-5”和“1.2-java-1.…