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

相关文章

使用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 修改用户

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M