当前位置: 首页 > news >正文

磁盘结构、访问时间、调度算法

目录

一、什么是磁盘?

二、磁盘分类

1、从磁头分

2、通过盘面分

三、一次磁盘读/写的时间

四、磁盘调度算法

1、先来先到服务算法FCFS

2、最短寻找时间优先SSTF

3、扫描算法(SCAN)

4、LOOk算法

5、循环扫描算法(C-SCAN)

6、C-LOOK算法

五、减少读取延迟的方法

1、交替编号扇区

2、磁盘地址结构的设计

3、交错编号法

六、磁盘管理

1、初始化

2、引导块

3、坏块管理


一、什么是磁盘?

磁道、扇区、磁头臂、盘面、柱面
内扇区密度大
每一个盘面一个磁头
所有磁头连在一个磁臂上,只能共进退
同一个同同心圆的磁道构成一个柱面
一个扇区就是一个物理块,一般为512B
一个物理块地址用(柱面号,盘面号,扇区号)来识别
因此,读取一个块,需要做:
(1)移动磁臂,找到柱面
(2)激活盘面磁臂
(3)旋转找到扇区

二、磁盘分类

1、从磁头分

活动磁头:一个盘面只有一个磁头,通过移动找到磁道和柱面
固定磁头:每一个磁道有一个磁头

2、通过盘面分

盘片可以更换:可换盘磁盘
盘片不可更换:固定盘磁道

三、一次磁盘读/写的时间

寻道时间:
(1)启动磁头的时间s
(2)移动磁头的时间,跨越一个磁道m,需跨越n个磁道:m*n
总功寻道时间:s+m*ns

延迟时间:
定位到磁道的固定扇区的时间
平均时间为:1/2r
(平均要转半圈才能找到对应扇区)

传输时间:
(b/N)/r
b为读/写数据量,N为一个磁道的总数据量
b/N表示:数据需要几个磁道

四、磁盘调度算法

为什么有磁盘调度算法?
因为对于磁盘来说
延迟时间和数据传输时间是固定的,和磁盘转速有关
唯一可以优化的地方是寻道时间
不同的寻道顺序由不同的速度
下面的这一系列算法本质就是根据不同磁道访问顺序实现的

1、先来先到服务算法FCFS

谁先来就先服务谁

2、最短寻找时间优先SSTF

离谁近就服务谁
但是有可能产生饥饿现象
这是因为比较远的磁道可能很久都不会被服务

3、扫描算法(SCAN)

为了克服最短寻找的饥饿问题
SCAN算法规定:
只有磁头移动到最外侧磁道,才可以往内磁道移动
移动到最内磁道,才可以往外磁道移动
(就是往一个方向走到底才能返回)
缺点:
(1)只有到达最边缘才返回,有时候并没有这个必要
(2)对于各个位置的磁道响应不均匀(加入往右,最右边的磁道短期内被访问两次,而左边的很久才被再访问)

4、LOOk算法

为了解决SCAN算法的不撞南墙不回头的缺点
LOOK算法在移动方向上已经没有了其他请求就折回
(就像边走边观察,因此叫LOOl算法)

5、循环扫描算法(C-SCAN)

为了解决SCAN算法对磁道响应不公平的算法
该算法在达到边缘时,直接折返到另外一端(从最外->最内 / 从最内->最外)
(折返过程不响应任何请求)

6、C-LOOK算法

对于C-SCAN算法来说
该算法和SCAN算法一样,必须要到达最边缘才能折返
但是事实上,如果在移动方向上没有了别的请求就可以折返了
C-LOOK算法就是如此

五、减少读取延迟的方法

1、交替编号扇区

当读取多个连续的扇区时
磁头每读完一个扇区时,还需要一个短暂的准备时间
在这个准备时间内,是不可以进行扇区读取的
因此,读完扇区1之后,如果扇区2是紧挨着的,那么就来不及读取2
这能再转一圈,第二次转到扇区2时才能读取
这样就会导致很慢

如何解决?
交替编号
如图:


扇区的编号不来连续,而是相隔一个扇区
这样,在读取一个扇区之后,经过另一个中间扇区的时间内,磁头就完成了准备时间
此时,到达下一个逻辑连续扇区就可以读取了
而不用等到下一圈,效率更快

2、磁盘地址结构的设计

问题:
为什么磁盘物理地址是(柱面号,盘面号,扇区号)
而不是(盘面号,柱面号,扇区号)?

我们分别来看情况:
(1)盘面号,柱面号,扇区号
假设有两个相邻磁道的数据需要读取
第一次读取A盘面的A柱面的A磁道
下一次读取相邻的磁道
此时,读取的是A盘面的B柱面的B磁道
也就是说,需要读取同一个盘面的两个不同的磁道
读取不同的磁道,就需要启动磁头并移动

(1)柱面号,盘面号,扇区号
同样,访问两个相邻磁道的数据
第一次访问A柱面,A盘面的A磁道
第二次访问A柱面,B盘面的A磁道
此时都属于一个柱面,
因此,不需要移动磁头
这就是这种设计方案的好处

即读取地址连续的磁盘块时,可以减少磁头移动的时间

3、交错编号法

交替命名的前提是:
所有的磁头一起转动
同时,基于物理块的地址是:(柱面号,盘面号,扇区号)
假设有8柱面,4盘面,8扇区
则编号为000 00 000 ~ 111 11 111

现在考虑这样一种情况:
要访问两个连续的磁道
对于第一个磁道,为000 00 000 ~ 000 00 111
下一磁道的位置,为000 01 000 ~ 000 01 111
请跟着想象:
当时访问玩第一个磁道后
要访问哪里?
是下一个盘面的同一个柱面的磁道
如图:

此时,当第一个磁道转两圈读取完毕后
最好的状态是立即读取下一个磁道,位置在同一柱面的下一个盘面
可是,因为磁头读取完一个扇区后需要准备一段时间
因此,如果两个盘面是同步编号的(上下编号对齐)
那么就只能再转一圈,等下一圈才能访问

因此,如果使用交错编号
那么就不用等待了
如图:

六、磁盘管理

1、初始化

(1)低级格式化

将磁盘的各个磁道划分为扇区
扇区分为头、尾、数据区
各种管理数据放在扇区的头和尾
数据区放数据

(2)磁盘分区
分为若若干柱面,例如C、D盘等

(3)逻辑格式化
创建文件系统

2、引导块

每当要开机的时候
需要进行一系列的初始化操作,例如安装操作系统
这就需要执行一些初始化程序,也叫做自举程序(因为是自动完成的)
一般自举程序会放在ROM(只读寄存器)内
在厂家生产时就已经设置好的,不可以更改

可以你不能保证自举程序一直不变
显然放在ROM里是无法解决改变的问题的
怎么办?
只放一个叫做“自举装入程序”的程序在ROM里
完整的自举程序放在磁盘的某个位置,这个位置叫做启动块,启动块是固定的
(拥有启动分区的磁盘称为启动磁盘 / 系统磁盘,例如我们的C盘)
当开机时,CPU先在运行ROM中的自举装入程序
通过该进程找到引导块,将引导块中完整的自举程序读入内存执行,完成初始化
于是,如果要是修改自举程序的话,就可以在内存中进行

3、坏块管理

一般的有两种方式
第一种方式:针对简单的磁盘
在磁盘格式化时,对整个磁盘进行扫描
并对坏块在FAT表中标明
这种方式对操作系统不透明,即可以看得见坏块的存在

第二种方式:对复杂的磁盘而言
设置一个单独的磁盘控制器会维护一个坏块链表(磁盘内部自带的硬件)
磁盘出厂时,对坏块链表初始化,并在后期不断维护
同时会保留一些备用块,用于替换坏块,这样方案叫做扇区备用
在这种方式中,坏块对操作系统透明
即操作系统看不到坏块的存在
 

相关文章:

磁盘结构、访问时间、调度算法

目录 一、什么是磁盘? 二、磁盘分类 1、从磁头分 2、通过盘面分 三、一次磁盘读/写的时间 四、磁盘调度算法 1、先来先到服务算法FCFS 2、最短寻找时间优先SSTF 3、扫描算法(SCAN) 4、LOOk算法 5、循环扫描算法(C-SCAN…...

详解归并排序

归并排序 归并排序的基本概念归并排序的详细步骤1. 分解阶段2. 合并阶段3. 归并排序的递归流程 时间复杂度分析空间复杂度分析算法步骤2-路归并排序代码分析代码讲解1. 合并两个子数组的函数 merge()2. 归并排序函数 mergeSort()3. 打印数组的函数 printArray()4. 主函数 main(…...

45.在 Vue 3 中使用 OpenLayers 鼠标点击播放视频

引言 在 Web 开发中,地图可视化和互动功能是越来越重要的应用场景。OpenLayers 是一个强大的开源 JavaScript 库,用于显示和处理地图数据,支持多种地图服务和交互功能。在这个教程中,我们将介绍如何在 Vue 3 中集成 OpenLayers&a…...

《大话Java+playWright》系列教程初级篇-初识

后续代码会整理开源-大家期待吧!!! 首先讲下为啥不用python,因为不想下载各种安装插件,太麻烦了,好多不兼容。 所以选择了java。 先来讲下什么是playwright,playwright是微软开源自动化测试工…...

05.HTTPS的实现原理-HTTPS的握手流程(TLS1.2)

05.HTTPS的实现原理-HTTPS的握手流程(TLS1.2) 简介1. TLS握手过程概述2. TLS握手过程细化3. 主密钥(对称密钥)生成过程4. 密码规范变更 简介 主要讲述了混合加密流程完成后,客户端和服务器如何共同获得相同的对称密钥…...

提示词工程

一、六何分析法快速写出准确的提示词 英文单词中文解释提问时的思考示例Why何故问题的背景,包括为什么做及目标(做成什么样)最近我们要与某品牌合作推广冲牙器,对方需要我们策划一场营销活动What何事具体是什么事写一个营销策划方…...

基于python网络爬虫的搜索引擎设计

一、毕业设计(论文)题目:基于网络爬虫的搜索引擎设计 - 基于网络爬虫的搜索引擎设计1 二、毕业设计(论文)工作自 2022-09-01 起至 2022-10-28 止 三、毕业设计(论文)内容要求: 主…...

ip-协议

文章目录 1. 网络层2. ip协议2.1 ip协议格式2.2 网段划分基本概念网段划分的两种方式为什么要网段划分?特殊的IP地址IP地址数量不足 2.3 私有IP与公网IP2.4 路由 3. IP的分片与组装为什么要分片与组装?如何分片?如何组装? 1. 网络…...

Git(11)之log显示支持中文

Git(11)之log显示支持中文 Author:Once Day Date:2024年12月21日 漫漫长路有人对你微笑过嘛… 参考文档:GIT使用log命令显示中文乱码_gitlab的log在matlab里显示中文乱码-CSDN博客 全系列文章可查看专栏: Git使用记录_Once_day的博客-CSD…...

oneflow深度学习框架使用问题总结(Windows/Linux)

目录 1.简述 2.在Windows下使用Oneflow深度学习框架(错误记录,谨慎,官方不支持,需要WSL) 2.1安装Anaconda 2.1创建虚拟环境 2.2安装Pytorch 2.3安装Pycharm 2.4 安装Oneflow 3.在Linux下使用Oneflow深度学习框…...

论文研读:AnimateDiff—通过微调SD,用图片生成动画

1.概述 AnimateDiff 设计了3个模块来微调通用的文生图Stable Diffusion预训练模型, 以较低的消耗实现图片到动画生成。 论文名:AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning 三大模块: 视频域适应…...

SQLAlchemy示例(连接数据库插入表数据)

背景需求 连接数据库,插入表中一些数据。 其用户是新建用户,所以只能插入,不能更新。 再次输入数据则使用更新数据语法,这个没调试。 #! /usr/bin/env python # -*- coding: utf-8 -*-from sqlalchemy import create_engine, …...

Springboot3国际化

国际化实现步骤 Spring Boot 3 提供了强大的国际化支持,使得应用程序可以根据用户的语言和区域偏好适配不同的语言和地区需求。 添加国际化资源文件: 国际化资源文件通常放在 src/main/resources 目录下,并按照不同的语言和地区命名&#xf…...

阿尔萨斯(JVisualVM)JVM监控工具

文章目录 前言阿尔萨斯(JVisualVM)JVM监控工具1. 阿尔萨斯的功能2. JVisualVM启动3. 使用 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff…...

框架专题:反射

1. 什么是反射? 简单来说,反射是一种程序自省的能力,即在程序运行时动态地获取其结构信息或操作其行为。这包括类、方法、属性等元信息。反射的核心在于让代码变得更加动态化,从而突破静态语言的限制。 以Java为例,反…...

【Go】context标准库

文章目录 1. 概述1.1 什么是 Context1.2 设计原理1.3 使用场景源码分析核心:Context接口4个实现6个方法TODO 和 BackgroundWithCancelcancelpropagateCancel 绑定父对象WithTimeout 和 WithDeadlineWithValue总结参考1. 概述 基于版本: go1.22.3/src/context/context.go 1.1…...

LLMs之o3:《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读

LLMs之o3:《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读 导读:2024年12月,这篇论文提出了一种名为“审慎式对齐 (Deliberative Alignment)”的新方法,旨在提高大型语言模型 (LLM) 的安全性。论…...

git设置项目远程仓库指向github的一个仓库

要将你的Git项目设置为指向GitHub上的远程仓库,你需要执行以下步骤: 创建GitHub仓库: 登录到你的GitHub账户。点击右上角的 “” 号,选择 “New repository” 创建一个新的仓库。填写仓库的名称,可以添加描述&#xff…...

实战演练JDK的模块化机制

实战演练JDK的模块化机制--楼兰 带你聊最纯粹的Java ​ 你发任你发,我用Java8。你用的JDK到什么版本了?很多开源框架都已经开始陆续升级JDK版本了。你对于JDK8往后陆陆续续更新的这些版本有什么感觉吗? ​ 很多人会说其实并没有太多的感觉。JDK的新版本不断推出一些不痛不痒…...

jdk17+springboot3项目加密部署

最近项目需要在第三方服务器部署,由于没有交付源码。所以需要将项目加密后再部署。 网上找了一圈,发现xjar这个开源项目,可以将代码加密后进行部署。看了下正是我需要的。 于是按照文档打包加密,但启动的时候居然报错。 这个结…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...