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

相关文章

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户