chap5 I/O管理

2024-05-12 23:04
文章标签 管理 chap5

本文主要是介绍chap5 I/O管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、I/O设备基本概念和分类 304

1.concept

2.classification

(1)根据信息交换单位(可能考)

1)字符设备

2)块设备

(2)传输速率(以下了解即可)

(3)使用特性

(4)共享资源

二、I/O控制器(I/O接口) 305

1.function

(1)接受和识别命令(控制寄存器)

(2)数据交换(数据寄存器)

(3)标识和向CPU报告设备状态(状态寄存器)

(4)地址识别(由I/O逻辑实现)

2.construction

(1)CPU和控制器接口

(2)I/O逻辑

(3)控制器和设备接口

3.两种寄存器编码方式

(1)内存映像 

(2)寄存器独立编址

三、I/O控制方法 307

1.程序直接控制方式

(1)cpu干涉率

(2)data流向(将I/O设备理解为disk)

2.中断驱动方式

(1)cpu干涉率

(2)data流向(将I/O设备理解为disk)

3.DMA方式(直接存储器方式)(Direct Memory Access)

(1)cpu干涉率

(2)data流向(将I/O设备理解为disk)

4.通道控制方式

(1)cpu干涉率

(2)data流向(将I/O设备理解为disk)

四、I/O软件层次结构 309

​编辑

1.用户层软件

2.设备独立性软件

(1)主要功能

3.设备驱动程序

4.中断处理程序

5.考点

(1)次序

(2)每层是干嘛的

五、I/O管理 311

1.应用程序I/O接口

(1)字符设备接口

(2)块设备接口

(3)网络设备接口(网络套接字Socket接口)

(4)阻塞I/O vs 非阻塞I/O

2.设备驱动程序接口

六、设备独立性软件 318

​编辑

1.假脱机技术(SPOOLing技术) 324

(1)脱机技术(源自OS的批处理阶段)

(2)假脱机技术

(3)application

2.设备分配与回收 322

(1)应考虑的因素

(2)静态分配和动态分配

(3)设备分配管理中的DS

(4)设备分配的step

分配设备、分配控制器、分配通道

(5)分配的step改进

3.缓冲区管理(高速缓存与缓冲区) 319

(1)缓冲区concept

(2)缓冲区function

(3)单缓冲

(4) 双缓冲

(5) 循环缓冲

(6) 缓冲池


一、I/O设备基本概念和分类 304

1.concept

进行输入输出data的设备,eg:disk、打印机

2.classification

(1)根据信息交换单位(可能考)

1)字符设备

以字符为data传输单位,传输速率低,不可寻址(不能确定是从哪开始读or写)

eg:从键盘中获取data,只能从头开始

2)块设备

以数据块为data传输单位,传输速率高,可寻址

eg:使用read or write() 函数参数为file_name,从哪开始读,读多少长度 

(2)传输速率(以下了解即可)

(3)使用特性

(4)共享资源

二、I/O控制器(I/O接口) 305

进行data传输的东西

1.function

(1)接受和识别命令(控制寄存器)

CPU发布命令,控制寄存器接受命令

(2)数据交换(数据寄存器)

CPU和I/O设备速度差距较大,为了减缓差距,先将data放在数据寄存器中

(3)标识和向CPU报告设备状态(状态寄存器)

空闲/忙碌/故障

(4)地址识别(由I/O逻辑实现)

识别文件的地址

2.construction

(1)CPU和控制器接口

(2)I/O逻辑

(3)控制器和设备接口

3.两种寄存器编码方式

(1)内存映像 

与内存中地址接着一块编码

(2)寄存器独立编址

自己编号,每个控制器的寄存器重新开始

disa:如果需要指明寄存器的时候,需指明设备管理器号和寄存器号

三、I/O控制方法 307

怎么进行data读写

1.程序直接控制方式

cpu发布命令之后,轮询的问是否完成

(1)cpu干涉率

一直干涉

(2)data流向(将I/O设备理解为disk)

读:I/O设备->cpu(的寄存器)->内存

写:内存->cpu(的寄存器)->I/O设备

disa:cpu一直占用,不能处理其他任务

2.中断驱动方式

cpu发出命令之后,就去处理别的任务,当命令完成之后,发回一个中断信号告诉cpu完成了

(1)cpu干涉率

cpu发任务和处理中断

(2)data流向(将I/O设备理解为disk)

同程序直接控制方式

3.DMA方式(直接存储器方式)(Direct Memory Access)

在I/O和内存间开辟通道,解放cpu

(1)cpu干涉率

传输一个块or多个块的开始和结束的时候才需cpu干涉

ATTn:如果每次传输的data块是一块,可以在物理上是离散的

if 传输的是连续的块,则在物理上也得是连续的

(2)data流向(将I/O设备理解为disk)

读:I/O设备->内存

写:内存->I/O设备

so 如果是多个1块1快的,则需要多次I/O

4.通道控制方式

建立通道,"弱鸡版CPU",cpu只需发命令和处理中断即可,data传输是一组块

(1)cpu干涉率

cpu只需发命令和处理中断即可

(2)data流向(将I/O设备理解为disk)

同DMA

四、I/O软件层次结构 309

1.用户层软件

实现与用户交互的接口,包括库函数,对设备进行操作

2.设备独立性软件

提供与设备硬件功能无关的功能

(1)主要功能

书+补充

1)将逻辑设备名映射为物理设备名,根据设备类型选择调用相应的驱动程序

利用逻辑设备表(LUT) 324

3.设备驱动程序

eg:打印机

4.中断处理程序

用于保留中断的进程的CPU环境

5.考点

(1)次序

(2)每层是干嘛的

五、I/O管理 311

1.应用程序I/O接口

(1)字符设备接口

(2)块设备接口

(3)网络设备接口(网络套接字Socket接口)

bind:将Socket绑定到某个本地接口

connect:将Socket连接到远程地址

read/write:从Socket中读/写data

(4)阻塞I/O vs 非阻塞I/O

在进行I/O操作时,进行就被阻塞 eg:从键盘中输入字符,没有回车之前都在阻塞

在进行I/O操作时,进行不会被阻塞,cpu每隔一段时间就问询是否完成

2.设备驱动程序接口

OS规定好设备驱动程序的接口标准,各厂商必须按照要求开发设备的驱动程序接口

六、设备独立性软件 318

1.假脱机技术(SPOOLing技术) 324

(1)脱机技术(源自OS的批处理阶段)

使用外围控制器+高速设备缓冲区缓解CPU和I/O设备间速度的差距,实现预输入,缓输出

(2)假脱机技术

而假脱机技术利用程序实现脱机,从而称为假脱机技术

输入井 and 输出井、输入缓冲区 and 输出缓冲区、输入进程 and 输出进程、井管理程序

(3)application

使用SPOOLing技术将独占设备打印机实现共享

2.设备分配与回收 322

(1)应考虑的因素

(2)静态分配和动态分配

静态分配:进行运行前为其分配所有的所需资源,运行结束之后归还

破坏了"请求和保持"条件,不会“死锁”

动态分配:在执行过程中动态申请设备资源

(3)设备分配管理中的DS

多个通道,通道:控制器=1:多,控制器:设备=1:多

设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)、系统控制表(SCT)

(4)设备分配的step

分配设备、分配控制器、分配通道

disa:①用户变成是使用物理设备名,底层细节对用户不透明,不方便编程

②if更换物理设备,则程序无法执行

③设备分配使用的是设备的物理名称,那么即使有同类的设备空闲,也会造成阻塞

(5)分配的step改进

将物理设备名映射为逻辑设备名,使用LUT

3.缓冲区管理(高速缓存与缓冲区) 319

(1)缓冲区concept

(2)缓冲区function

(3)单缓冲

ATTn:①缓冲区非空时不能再冲入data,只能冲出

②缓冲区冲满之后才能取data

初始条件:工作区满,缓冲区空

Summary:max(C,T)+M

ATTn:只有工作区空且缓冲区满才能从缓冲区冲入工作区

(4) 双缓冲

初始状态:工作区空,缓冲区一空一满

SUmmary:Max(T,C+M)

T<C+M时,找不到完全与初始状态完全相同的时刻,但是多几个回合之后发现每C+M的时间就处理完一次,so avgT = C+M

(5) 循环缓冲

(6) 缓冲池

这篇关于chap5 I/O管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983985

相关文章

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Redis实现RBAC权限管理

《Redis实现RBAC权限管理》本文主要介绍了Redis实现RBAC权限管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 什么是 RBAC?2. 为什么使用 Redis 实现 RBAC?3. 设计 RBAC 数据结构

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Linux内存泄露的原因排查和解决方案(内存管理方法)

《Linux内存泄露的原因排查和解决方案(内存管理方法)》文章主要介绍了运维团队在Linux处理LB服务内存暴涨、内存报警问题的过程,从发现问题、排查原因到制定解决方案,并从中学习了Linux内存管理... 目录一、问题二、排查过程三、解决方案四、内存管理方法1)linux内存寻址2)Linux分页机制3)

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选