王道计算机考研 操作系统学习笔记 + 完整思维导图篇章五: IO管理

目录

IO设备的基本概念和分类

IO设备的分类 

按使用特性分类

按传输速率分类 

按信息交换单位分类 

IO控制器

l/O设备的电子部件(I/O控制器) 

l/O控制器的组成

内存映像I/o vs.寄存器独立编址

IO控制方式

程序直接控制方式

中断驱动方式

DMA方式

​编辑通道控制方式

DMA与通道的区别

IO软件层次结构 

用户层IO软件 

设备独立性软件

主要功能

中断处理程序

输入/输出应用程序接口 & 设备驱动程序接口 

输入/输出应用程序接口

阻塞/非阻塞I/O

设备驱动程序接口 

IO核心子系统 

假脱机技术(SPOOLing ) 

什么是脱机技术

输入井和输出井

共享打印机原理分析 

设备的分配与回收

设备分配时应考虑的因素 

静态分配和动态分配

设备分配管理中的数据结构

设备分配的步骤

​编辑​编辑

设备分配步骤的改进 

缓冲区管理 

什么是缓冲区? 有什么作用?​编辑​编辑

单缓冲

双缓冲 

使用单/双缓冲在通信时的区别

高速缓存与缓冲区对比

相同点

不同

循环缓冲区

缓存池

磁盘管理 

磁盘的结构

磁盘、磁道、扇区 

如何在磁盘中读/写数据

盘面、柱面

磁盘的物理地址

​编辑 磁盘的分类

磁盘调度算法

一次磁盘读/写操作需要的时间 

先来先服务算法 (FCFS)

最短寻找时间优先 (SSTF)

扫描算法 (SCAN)

LOOK 调度算法

循环扫描算法 (CSCAN) 

C-LOOK 调度算法

磁盘的管理

磁盘初始化 

引导块 

坏块管理 

固态硬盘SSD 

IO设备的基本概念和分类

“I/O”就是“输入/输出”(Input/Output)I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件

IO设备的分类 

按使用特性分类

按传输速率分类 

按信息交换单位分类 


IO控制器

I/0设备的机械部件主要用来执行具体I/O操作。如我们看得见摸得着的鼠标/键盘的按钮:显示器的LED屏:移动硬盘的磁臂、磁盘盘面


l/0设备的电子部件通常是一块插入主板扩充槽的印刷电路板 


l/O设备的电子部件(I/O控制器) 

l/O控制器的组成

值得注意的小细节:

  • 一个I/0控制器可能会对应多个设备;
  • 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像l/0;另一些计算机则采用I/0专用地址,即寄存器独立编址

内存映像I/o vs.寄存器独立编址


IO控制方式

程序直接控制方式

 

中断驱动方式

DMA方式

通道控制方式


DMA与通道的区别

DMA需要CPU来控制传输的数据块大小、传输的内存位置、而通道方式中这些信息是由通道控制

DMA控制器对应一台设备与内存传递数据,通道可以控制多态设备与内存的数据交换


IO软件层次结构 

用户层IO软件 

设备独立性软件

用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护、差错控制及设备分配与释放,同时为设备管理与数据传送提供必要的存储空间

设备独立性也称为设备无关性,使得应用程序独立于具体使用的物理设备(使用逻辑设备名)

使用逻辑设备名的好处:增加设备分配的灵活性;易于实现IO重定向

主要功能

  • 执行所有设备的公有操作(设备的分配与回收,逻辑设备名映射为物理设备名,对设备进行保护,进制用户直接访问设备),屏蔽设备之间数据交换的速度差异等
  • 向用户层(文件层)提供统一接口∶无论哪种设备,他们向用户提供的接口都是相同的

不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作


中断处理程序


输入/输出应用程序接口 & 设备驱动程序接口 

输入/输出应用程序接口


阻塞/非阻塞I/O

  • 阻塞I/O: 应用程序发出I/O系统调用,进程需转为阻塞态等待

        eg:字符设备接口-一从键盘读一个字符 get

  • 非阻寨I/O:应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待

        eg:块设备接口--往磁盘写数据 write


设备驱动程序接口 

  • 不同的操作系统,对设备驱动程序接口的标准各不相同。
  • 设备厂商必须根据操作系统的接口要求,开发相应的设备驱动程序,设备才能被使用 

IO核心子系统 

 


假脱机技术(SPOOLing ) 

什么是脱机技术

输入井和输出井


共享打印机原理分析 


设备的分配与回收

设备分配时应考虑的因素 


静态分配和动态分配

  • 静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源(破坏了“请求和保持”条件,不会发生死锁)
  • 动态分配:进程运行过程中动态申请设备资源

设备分配管理中的数据结构


设备分配的步骤

根据进程请求的物理设备名查找SDT(注:物理设备名是进程请求分配设备时提供的参数)

根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程。

根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配
给进程 

根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进
程。


设备分配步骤的改进 


缓冲区管理 

什么是缓冲区? 有什么作用?


单缓冲

结论:采用单缓冲策略,处理一块数据平均耗时 Max(C, T)+M


双缓冲 

结论:采用双缓冲策略,处理一个数据块的平均耗时为 Max(T, C+M)


使用单/双缓冲在通信时的区别

显然,若两个相互通信的机器只设置单缓冲区,在任一时刻只能实现数据的单向传输。 


高速缓存与缓冲区对比

相同点

都介于高速设备和低速设备之间

不同
  • 存放数据

    高速缓存:存放的是低速设备上的某些数据的复制数据

    缓冲区:存放的是低速设备传递给高速设备的数据,这些数据在低速设备上不一定有备份,这些数据再从缓冲区传送到高速设备

  • 目的

    高速缓存∶高速缓存存放的是高速设备经常要访问的数据,如高速缓存中数据不在,高速设备就要访问低速设备

    高速设备和低速设备的通信都要经过缓冲区高速设备永远不会去直接访问低速设备


循环缓冲区

缓存池


磁盘管理 

磁盘的结构

磁盘、磁道、扇区 

如何在磁盘中读/写数据

        需要把“磁头”移动到想要读/写的扇区所在的磁道磁盘会转起来,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作。

盘面、柱面

磁盘的物理地址

 磁盘的分类


磁盘调度算法

一次磁盘读/写操作需要的时间 

操作系统的磁盘调度算法会直接影响寻道时间 


先来先服务算法 (FCFS)


最短寻找时间优先 (SSTF)


扫描算法 (SCAN)


LOOK 调度算法


循环扫描算法 (CSCAN) 


C-LOOK 调度算法


磁盘的管理

磁盘初始化 

引导块 

坏块管理 

固态硬盘SSD

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

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

相关文章

java1.8流的新特性使用

案例描述 今天跟着黑马程序员的视频&#xff0c;完成“瑞吉外卖”项目的菜品信息管理模块的时候&#xff0c;遇到了一个比较陌生的写法 用到了Java8的新特性 stream().map((item) -> {}).collect() List<DishDto> collect records.stream().map((item) -> {DishDt…

10.17七段数码管单个多个(部分)

单个数码管的实现 第一种方式 一端并接称为位码&#xff1b;一端分别接收电平信号以控制灯的亮灭&#xff0c;称为段码 8421BCD码转七段数码管段码是将BCD码表示的十进制数转换成七段LED数码管的7个驱动段码&#xff0c; 段码就是LED灯的信号 a为1表示没用到a&#xff0c;a为…

文件读取结束的判定

大家好啊&#xff0c;我们今天来补充文件操作的读取结束的判定。 被错误使用的feof 牢记&#xff1a;在文件读取过程中&#xff0c;不能用feof函数的返回值直接用来判断文件的是否结束而是应用于当文件读取结束的时候&#xff0c;判断是读取失败结束&#xff0c;还是遇到文件尾…

Qt第六十五章:自定义菜单栏的隐藏、弹出

目录 一、效果图 二、qtDesigner 三、ui文件如下&#xff1a; 四、代码 一、效果图 二、qtDesigner 原理是利用属性动画来控制QFrame的minimumWidth属性。 ①先拖出相应的控件 ②布局一下 ③填上一些样式 相关QSS background-color: rgb(238, 242, 255); border:2px sol…

量子力学期末复习--1

量子力学解题技巧--1 基础知识 薛定谔方程 Ehrenfest 定理 不确定性原理&#xff1a;正则对易关系&#xff1a;自由粒子&#xff1a;对于自由粒子&#xff0c;分离变量解不代表物理上可实现的态。但其含时薛定谔方程的一般解仍旧是分离变量解的线性组合 典型题目 自由粒子…

Ajax 笔记/练习

Ajax 异步JavaScript和XML 作用 实现 HTML 在不整体刷新的情况下&#xff0c;通过后台服务器&#xff0c;请求数据并局部更新页面内容 操作流程 Ajax 使用 XMLHttpRequest 通过new 关键字可以创建XMLHttpRequest() 对象。 var req new XMLHttpRequest();方法和属性说明req.…

Rclone连接Onedrive

一、Rclone介绍 Rclone是一款的命令行工具&#xff0c;支持在不同对象存储、网盘间同步、上传、下载数据。 我们这里连接的onedrive&#xff0c;其他网盘请查看官方文档。 注意&#xff1a; 需要先在Windows下配置好了&#xff0c;然后再将rclone配置文件复制到Linux的rclone配…

【proteus】8086仿真、汇编语言

1.创建好新项目 2.点击source code 弹出VSM 3. 4.注意两个都不勾选 可以看到schematic有原理图出现 5. 再次点击source code 6.project/project settings&#xff0c;取消勾选embed 7. add 8.输入文件名保存后&#xff1a; 注意&#xff1a;proteus不用写dos的相关语句 。

【NPM】particles.vue3 + tsparticles 实现粒子效果

在 NPM 官网搜索这两个库并安装&#xff1a; npm install element-plus --save npm i tsparticles使用提供的 vue 案例和方法&#xff1a; <template><div><vue-particlesid"tsparticles":particlesInit"particlesInit":particlesLoaded&…

华为OD机试 - 代表团坐车 - 动态规划(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

Ubuntu 22.04 中安装 fcitx5

Ubuntu 22.04 中安装 fcitx5 可以按照以下步骤进行&#xff1a; 添加 fcitx5 的 PPA 首先&#xff0c;添加 fcitx5 的官方 PPA&#xff1a; sudo add-apt-repository ppa:fcitx-team/fcitx5更新软件包列表 sudo apt update安装 fcitx5 sudo apt install fcitx5 fcitx5-conf…

Mysql表结构差异比较

1、背景 我们在开发过程中&#xff0c;大部分情况下都是好几个版本一起并行&#xff0c;有时候如果某个版本表结构改动较大&#xff0c;但是忘记了记录DDL脚本&#xff0c;这个时候需要人工去把新增或修改的DDL脚本整理出来&#xff08;主要是为了解决 数据库新增字段&#xff…

高效表达三步

一、高效表达 高效表达定主题搭架子填素材 第一&#xff1a; 1个核心主题&#xff0c;让别人秒懂你的想法 &#xff08;表达要定主题&#xff09; 第二&#xff1a; 3种经典框架&#xff0c;帮你快速整理表达思路 第三&#xff1a; 2种表达素材&#xff0c;让发言更具说服力…

在 Python 中执行 Shell 命令并获取输出

在本文中&#xff0c;我们将学习如何借助 os.system() 从 Python 脚本执行 cmd 命令。 我们还将学习如何借助 Python 中的 subprocess 模块以更简单的方式从脚本执行 cmd 命令。 从 Python 脚本执行 CMD 命令并使用 os.system() 获取输出 我们出于不同目的在命令提示符或任何其…

可视化 | python可视化相关库梳理(自用)| pandas | Matplotlib | Seaborn | Pyecharts | Plotly

文章目录 &#x1f4da;Plotly&#x1f407;堆叠柱状图&#x1f407;环形图&#x1f407;散点图&#x1f407;漏斗图&#x1f407;桑基图&#x1f407;金字塔图&#x1f407;气泡图&#x1f407;面积图⭐️快速作图工具&#xff1a;plotly.express&#x1f407;树形图&#x1f…

正点原子嵌入式linux驱动开发——Linux中断

不管是单片机裸机实验还是Linux下的驱动实验&#xff0c;中断都是频繁使用的功能&#xff0c;在裸机中使用中断需要做一大堆的工作&#xff0c;比如配置寄存器&#xff0c;使能IRQ等等。但是Linux内核提供了完善的中断框架&#xff0c;只需要申请中断&#xff0c;然后注册中断处…

跟我一起写个虚拟机 .Net 7(四)- LC_3 解析实例

没想到这篇文章持续了这么久&#xff0c;越学越深&#xff0c;愣是又买了一本书《计算机系统概论》&#xff0c;当然&#xff0c;也看完了&#xff0c;受益匪浅。 系统化的学习才是正确的学习方式&#xff0c;我大学就没看到过这本书&#xff0c;如果早点看到&#xff0c;可能…

STM32F4之系统滴答定时器

一、系统滴答定时器概述 传统定时器&#xff1a;如手机闹钟&#xff0c;闹钟等就是一个简单地计数器。 定时器概念&#xff1a;由时钟源计数器计数值组成的计数单元。 系统嘀嗒定时器首先是存在于内核里&#xff0c;系统嘀嗒时钟假如用的是同一个内核那么里面相关的配置&…

Android问题笔记 - NoSuchmethodException: could not find Fragment constructor

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

守护进程深度分析

思考 代码中创建的会话&#xff0c;如何关联控制终端&#xff1f; 新会话关联控制终端的方法 会话首进程成功打开终端设备 (设备打开前处于空闲状态) 1、关闭标准输入输出和标准错误输出2、将 stdin 关联到终端设备&#xff1a;STDIN_FILENO > 03、将 stdout 关联到终端设…