【操作系统】24王道考研笔记——第五章 IO管理

news2024/12/23 9:49:42

第五章 IO管理

一、IO设备

1.1 基本概念与分类

image.png

1.2 IO控制器

电子部件

image.png

IO控制器组成

image.png

值得注意的小细节:①一个I/O控制器可能会对应多个设备;

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

image.png

1.3 控制方式

  • 程序直接控制方式
  • 中断驱动方式
  • DMA方式
  • 通道控制方式

image.png

1.4 IO软件层次结构

用户层软件

image.png

设备独立性软件

image.png

操作系统系统可以采用两种方式管理逻辑设备表(LUT):

  • 第一种方式,整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统。
  • 第二种方式,为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中。

设备驱动程序

image.png

中断处理程序

image.png

1.5 接口

image.png

image.png

image.png

image.png

二、IO核心子系统

2.1 基本概念

image.png

2.2 假脱机技术

image.png

2.3 设备的分配与回收

image.png

2.4 缓冲区管理

image.png

三、磁盘和固态硬盘

3.1 磁盘的结构

image.png

物理地址:

image.png

总结:

image.png

3.2 磁盘调度算法

image.png

先来先服务

image.png

最短寻找时间优先

image.png

扫描算法

image.png

LOOK调度算法

image.png

循环扫描算法

image.png

C-LOOK调度算法

image.png

总结

image.png

3.3 减少延迟时间的方法

问题来源:

image.png

交替编号:

若采用交替编号的策略,即让逻辑上相邻的扇区在物理上有一定的间隔,可以使读取连续的逻辑扇区所需要的延迟时间更小。

错位命名:

image.png

总结:

image.png

3.4 磁盘管理

初始化:

image.png

引导块:

image.png

坏块的管理:

image.png

总结:

image.png

3.5 固态硬盘SSD

image.png

主要参考:王道考研课程
后续会持续更新考研408部分的学习笔记,欢迎关注。
github仓库(含所有相关源码):408数据结构笔记

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

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

相关文章

RK3566 linux添加rgb13h

一、DTS根节点增加节点 在根节点/{}下增加flash_rgb13h节点,节点内容如下: flash_rgb13h: flash-rgb13h {status "okay";compatible "led,rgb13h";label "gpio-flash";pinctrl-names "default";pinctrl-0 …

如何在JoySSL上申请免费的SSL证书

1,前往 JoySSL 的官方网站注册页面,创建一个账号并登录您的 JoySSL 账户。 扫码注册账号申请免费证书https://www.joyssl.com/certificate/select/free.html?nid52,找到并选择你需要的 SSL 证书相关的功能或选项。 3,提供您的域…

三周过PMP经验分享,用最少的时间拿3A!

今天分享一个大神的PMP备考经验,大佬就是大佬,三周过PMP还拿了3A,正在备考PMP的小伙伴,咱们共勉! 第一周、阅读教材 之前是第六版教材,花了很长时间阅读和梳理框架。现在是第七版教材,内容少了…

快速发布服务到生产环境(手动操作)

背景介绍 虽然现在大部分项目都是用Jenkins搭建环境,自动化部署。但仍然存在一些小客户,只会单独上线一些关键服务,此时就需要手动去服务器里面部署了。此处用一个外业服务做例子,下面开始介绍。 进入服务器 一般需要申请服务器权…

使用BaGet 实现NuGet包私有化部署

本文主要介绍使用IIS部署 1.下载Baget,github下载,本文下载版本v0.4.0-preview2 2.解压,参考使用说明 3.安装环境,.NET Core Runtime,此处说明,.net7安装包是集成了 ASP.NET Core IIS Module的&#xff…

数据结构之时间复杂度空间复杂度的计算

数据结构:计算机如何存储数据的问题。DS关心的是如何高效的进行数据的读写。 算法:在特定的数据集上(不关心怎么进行具体数据的读写),如何利用数据完成特定的功能。算法本质上就是一系列运算的先后集合。 那么&#…

电工-国产二极管型号、三极管型号的命名方式

根据半导体器件型号命名方法(GB249-74)规定,国产半导体由5共部分组成,二极管、三极管的型号命名方式也有5个部分,第一部分是标明晶体管数目(二极管或是三极管)。第二部分是三极管的材质标识&…

【ZLM】花屏现象记录

目录 事后小结 现象 tcpdump看下包的情况 移了两个摄像头到10.60.100.196 事后小结 花屏的现象,主要看链路时延的稳定性。 如果 ping -s 2000 ip , > 2ms已经带宽 2000*8*2/0.002s16Mbps,说明带宽不够,应该接近100Mbps左右。你可…

C#中使用Newtonsoft.Charp实现Json对象序列化与反序列化

场景 C#中使用Newtonsoft.Json实现对Json字符串的解析: C#中使用Newtonsoft.Json实现对Json字符串的解析_霸道流氓气质的博客-CSDN博客 上面讲的对JSON字符串进行解析,实际就是JSON对象的反序列化。 在与第三方进行交互时常需要封装对象,…

linux 防火墙iptables

iptables 是 Linux 中比较底层的网络服务,它控制了 Linux 系统中的网络操作,CentOS 中的 firewalld 和 Ubuntu 中的 ufw 都是在 iptables 之上构建的,只为了简化 iptables 的操作。同时,iptables 不仅仅是防火墙这么简单&#xff…

C/C++代码静态检测工具PC-Lint常见错误总结

目录 1、PC-Lint 概述 2、PC-lint 常见错误列举 3、PC-Lint报告的语法错误 4、总结 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到…

看文章-做笔记

看文章-做笔记 小蓝本

想要防止视频被盗?用它给视频加水印

随着社交网络的普及,越来越多的人喜欢在网上分享自己制作的视频,但是,共享的视频可能会被其他人传播和滥用。因此,保护自己制作的视频非常重要。 那怎样才能够防止别人盗用自己制作的视频呢?一种简单易行的保护方法是…

printContent 点击打印多页时第一页之前出现白页

项目场景: 提示:这里简述项目相关背景: printContent 点击打印多页时第一页之前出现白页 问题描述 提示:这里描述项目中遇到的问题: printContent 点击打印多页时第一页之前出现白页 原因分析: 提示&am…

【中阳期货】分析市场数据和制定交易策略代码

当谈到期货与市场分析时,编写代码来分析市场数据和制定交易策略是一种常见的做法。在这篇文章中,我将向您展示如何使用Python编写代码来获取市场数据、进行基本分析以及制定简单的交易策略。我们将使用一些常见的Python库,如Pandas、Matplotl…

前有CAP理论,后有BASE理论,分布式系统理论基石

🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

物联网如何改变智能家居技术?

物联网(IoT)已经在智能家居技术方面产生了深远的影响,其通过将各种设备、传感器和家居设备连接到互联网,实现了智能家居技术的创新和改进。 物联网(IoT)已经在智能家居技术方面产生了深远的影响,其通过将各种设备、传…

【手动实现nn.Linear 】

线性变换参数可视化图 class LinearLayer(nn.Module):def __init__(self, input_dim, output_dim):super(LinearLayer, self).__init__()self.weights nn.Parameter(torch.Tensor(output_dim, input_dim))self.bias nn.Parameter(torch.Tensor(output_dim))# 初始化权重和偏…

codesys自由编码器

1用于位置处理。 2它有个变量: SMC_FreeEncoder.diEncoderPosition 【DINT】 SMC_FreeEncoder_1.diEncoderPosition : GVL.电位器1; SMC_FreeEncoder.diEncoderPosition:hsi_cnt.diCurCountValue; //编码器位置 默认一圈是360.00 给它赋值&#x…

【AI画图】Stable Diffusion WebUI

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…