计算机组成原理与系统结构——外部存储器
笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。
磁盘
磁盘是一个由非磁性材料构成的圆形盘片(称为基片),上面涂抹可磁化材料。传统的基片一直是铝制或铝合金的,最新的引入了玻璃基片,它具有以下优点:
1)改进磁膜表面的均匀性,提高磁盘的可靠性
2)减少整体表面缺陷,降低读写错误
3)具有更好的刚度,减少磁盘动态
4)具有更强的抗冲击和防破坏能力
磁性读写机制
数据通过被称为磁头的导电线圈记录在磁盘上,之后再从磁盘取出。读写操作磁头是静止的,而盘面则在其下方旋转,磁头可以是单个读写头,也可以是多个读写头。
写入机制利用了流过线圈的电流会产生磁场的事实。电脉冲被发送到写磁头,由此产生的磁图案被记录到下面的表层上,正负电流产生不同的脉冲信号因而产生不同的图案。导线中的电流在磁盘间隙上产生不同的磁区,分别表示0、1。反转电流方向便反转介质上磁化方向。
传统读取机制利用了磁场相对线圈移动会产生电流的事实。当磁盘表面在磁头下方旋转时,它会产生与已记录的磁极相同的电流,此时读取磁头的结构与写入磁头的结构基本相同。
现代读取机制分离了读写磁头,需要单独的读取磁头,它的位置靠近写入磁头。读取磁头由部分屏蔽磁阻(MR)传感器组成,MR材料有电阻,取决于在其下方移动的介质的磁化方向。通过使电流经过MR传感器,电阻变化被检测为电压信号,MR设计允许更高频率的操作,这保证了更高的存储密度和操作速度。
数据组织和格式
磁头是一种相对较小的设备,可以对在其下方旋转的盘片的一部分进行读写,这使得盘片上的数据被组织成一组同心环(称为磁道),每条磁道的宽度都与磁头相同,每个盘面上都有上千条磁道,相邻磁道由磁道间隙隔开以最小化磁头错误或磁场干扰造成的误差。
下图描述了这种数据布局,其数据密度从外到内逐渐增加,通过以恒定角速度(CAV)旋转磁盘便可用相同速率扫描信息。使用CAV的优点是可以通过磁道和扇区直接寻址各个数据块,缺点是外层较长磁道上存储的数据量只能等于内层较短磁道上存储的数据量。
物理特性
固定磁头磁盘——每条磁道都有一个读写磁头,所有磁头都安装在固定刚性臂的头部。
移动磁头磁盘——仅有一个读写磁头,它被安装在可移动臂上。
可更换磁盘——可从驱动器中取出并用另一个磁盘替换,它能提供无限的存储容量,使系统间的数据传输更加便捷。
不可更换磁盘——可永久安装在磁盘驱动器中,PC机的硬盘就是不可更换磁盘。
双面磁盘——磁化涂层在盘片的两面都有,适用于大部分磁盘系统。
单面磁盘——磁化涂层仅存在于在盘片的一面,适用于一些较便宜的磁盘系统。
多盘片——磁盘驱动器容纳多个垂直堆叠的盘片,它们之间距离一英寸。多盘片使用可移动磁头,每个盘片表面都有一个读写磁头。下图为多盘片的图示。
磁盘性能参数
磁盘I/O操作取决于计算机系统、操作系统以及I/O通道和磁盘控制器硬件的性质。下图为磁盘I/O传输的一般时序图。
多进程系统
设备等待时间——在多进程系统中,当一个进程请求I/O时,I/O任务将排队等待设备空闲。
通道等待时间——若I/O通道繁忙,需要等待它空闲。
以上两部分时间是不确定的。
寻道时间
寻道时间指磁盘臂移动到所需磁道要花费的时间。寻道时间包含初始启动时间以及当访问臂达到一定速度后遍历需跨越磁道花费的遍历时间。然而遍历时间不是磁道数量的线性函数,而是包含了把磁头放到目标磁道后直到确认磁道标识的时间。
估算公式:
Ts—寻道时间,S—初始启动时间,n—遍历时间,m—与磁盘驱动程序相关的常数
旋转延迟
除了软盘,磁盘的旋转速度从3600rpm(16.7ms转一圈)到20000rpm(3ms转一圈)
典型硬盘转速为7200rpm(8.4ms转一圈),平均旋转延迟为4.2ms
通常软盘转速为300~600rpm,平均延迟为100~200ms
传输时间
磁盘传输时间取决于要传输的字节数和磁盘的旋转速度。
估算公式:
T—磁盘传输时间,b—要传输的字节数,N—单位磁道上的字节数,r—转速,单位为转/秒
读写时间
读写时间是寻道时间、旋转延迟和传输时间的总和。
平均访问时间Ta估算公式: Ts—平均寻道时间
相关案例
一个转速为15000rpm、平均寻道时间为4ms、512B/扇区、500sectors/track的磁盘,假设我们希望读取一个由2500个扇区组成的文件,总共1.28MB,请估计总读写时间。
1)序列组织 2)数据随机分布
RAID
通过使用多个磁盘,可以各种方式组织数据,利用增加冗余来提高可靠性,但这可能使开发用于多个平台和操作系统的数据库方案变得困难。业界有种多磁盘数据库设计的标准方案,独立磁盘冗余阵列RAID。RAID方案由0级-6级共七个级别组成,它们并非层级关系,而是指定了不同的设计架构,他们有着三个共同特征:
1)RAID是一组物理磁盘驱动器,操作系统将其看作一个逻辑驱动器
2)数据分布在阵列的物理驱动器上,分布方案称为条带
3)冗余磁盘容量用于存储奇偶校验信息,以保证磁盘故障时数据的可恢复性
RAID有效地解决了冗余需求。虽然允许多磁头和执行器同时操作能获得更高的I/O和传输速率,但使用多个设备增加了故障概率。为了弥补这种可靠性的下降,RAID利用存储奇偶校验信息来恢复由于磁盘故障而丢失的数据。
其他暂不做要求。
固态驱动器
固态驱动器(SSD)是一种由固态组件制成的存储设备,可以被用来代替硬盘驱动器(HDD)。“固态”一词指用半导体制成的电路,SSD现在主要使用NAND闪存。
SSD与HDD的比较
随着基于闪存的SSD成本的降低以及性能与位密度的提高,SSD与HDD的竞争日益激烈。SSD与HDD相比具有以下优势:
1)每秒高性能输入/输出操作数(IOPS)——显著提高I/O子系统的性能
2)耐用性——不易受到物理冲击和振动
3)更长的使用寿命——SSD不易受到机械磨损
4)更低的功耗——与同等大小HDD相比,SSD功耗要低得多
5)更安静、更凉爽的运行能力——空间需求少,能源成本低,运行环保
6)更低的访问时间和延迟率——SSD比HDD的旋转磁盘要快10倍以上
SSD组成
主机系统上,操作系统调用文件系统软件来访问磁盘上的数据,文件系统调用I/O驱动软件,I/O驱动软件提供对特定SSD产品的主机访问。下图接口组件是指主机处理器与SSD外围设备之间的物理接口和电气接口。
实际问题
以下为SSD特有的两个实际问题,而HDD不用面对。
1)随着设备的使用,SDD性能有缓慢下降的趋势。把一页写入闪存需要从闪存中读整个块并将其放入RAM缓冲区,然后更新RAM缓冲区中合适的页。在块可被写回闪存前,必须擦除整个闪存块,然后缓冲区中的整个块就可以被写回闪存了。
磁盘占用越满,文件碎片化越严重,写入速度越慢,为写操作预留空间和TRIM命令(允许操作系统通知SSD哪些数据块不再使用以便内部擦除)是解决方案。
2)闪存经过一定数量的写入后变得不可使用。当闪存单元受压时,它们会失去记录和保持数值的能力。延长SSD寿命的技术包括使用高速缓存对闪存进行前端的处理以延迟和分组写入操作,使用磨损均衡算法跨单元块上均匀分布写入,以及复杂坏块管理技术。
大多数闪存设备都会估计自己的剩余寿命,以便系统能够预测故障并采取先发制人的行动。
光存储器
光盘
光盘CD是数子音频系统,是一种不可擦除盘,能存储超过70分钟的音频信息。CD-ROM是光盘只读存储器,数据存储在涂有高反射涂层的聚碳酸酯表面的一系列微观凹坑中。通过反射激光读取,凹坑可能会改变激光的强度,光电传感器将其转换为数字信号。
CD-ROM容量大约为680MB,其上数据被组织为一系列的块。下图是典型CD-ROM块格式示例图,模式0指空白数据字段,模式1指2048字节数据和一个纠错码,,模式2指2336字节数据,没有纠错码。
由于CD-ROM使用了恒定线速度,其上的随机访问比较困难。定位一个特定地址需要通过将磁头移动到一般区域,调整转速,读取地址,通过微调、查找找到并访问特定的扇区。
CD-ROM的优缺点
优点:容量大、易于批量生产、成本低、可拆卸、坚固耐用
缺点:CD-ROM速度<硬盘速度、只读而不能被更新、脆弱
数字通用光盘
数字通用光盘容量巨大,不仅取代录像机的录像带,而且取代PC机和服务器的CD-ROM。用它记录的电影图像质量高,还可以像音频CD一样随机访问。大量数据可被压缩到光盘,是CD-ROM的7倍。DVD容量更大源于其于CD的三个不同点:
1)位在DVD上排列更紧密,且DVD使用的激光波长更短
2)DVD在第一层凹坑之上增加了第二层凹坑
3)DVD-ROM不同于CD,数据可以记录在双面上
磁带
磁带系统使用与磁盘系统相同的读取和记录技术。磁带上的数据被构造为沿长度方向运行的多个平行磁道。传统磁带系统使用9磁道,1次存储1字节,第9条磁道作为奇偶校验位;较新的磁带系统使用18/36磁道,这种形式的数据记录被称为并行记录。现代的磁带系统则使用串行记录,数据以位序列的形式沿着每条磁道排列,且在磁带上以连续的块进行读写。磁带上的块用间隙隔开,被称为记录间隙。磁带的格式有助于定位物理记录。
相关文章:

计算机组成原理与系统结构——外部存储器
笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。 磁盘 磁盘是一个由非磁性材料构成的圆形盘片(称为基片),上面涂抹可磁化材料。传统的基片一直是铝制或铝合金的࿰…...

如何使用 Browserless 抓取动态网站?
什么是动态网页? 动态网页是指其内容并非完全直接嵌入在静态HTML中,而是通过服务器端或客户端渲染生成的网页。 它可以根据用户的操作实时显示数据,例如在用户点击按钮或向下滚动页面时加载更多内容(如无限滚动)。这…...

第21~22周Java主流框架入门-Spring 2.SpringAOP面向切面编程
1.Spring AOP (Aspect-Oriented Programming) 1. 1. 什么是 Spring AOP? AOP(面向切面编程) 是 Spring 提供的一种可插拔的组件技术,允许我们在软件运行过程中添加额外的功能。场景:假设有两个模块,用户管…...
Flutter不常用组件----InteractiveViewer
在现代移动应用开发中,用户互动性是提升体验的关键。Flutter 提供了多种组件来帮助开发者实现丰富的交互功能,其中一个强大的组件便是 InteractiveViewer。它允许用户通过手势对内容进行缩放、平移和旋转,适用于需要用户查看大图、地图或者其…...

【LeetCode HOT 100】详细题解之二分查找篇
【LeetCode HOT 100】详细题解之二分查找篇 35 搜索插入位置思路代码(左闭右闭)代码(左闭右开) 74 搜索二维矩阵思路代码(左闭右闭) 34 在排序数组中查找元素的第一个和最后一个位置思路代码 33 搜索旋转排序数组思路代码 153 寻找旋转排序数组中的最小值思路代码 4 寻找两个正…...
管理篇(顶级思维模型(31个))(待做)
目录 一、成长进阶模型 二、优势探索模型 三、优势层次模型 四、人生定位模型 五、看懂人性模型 六、如何抉择模型 七、本质思考模型 八、心流模型 九、精力管理模型 十、高效沟通模型 十一、100%传递模型 十二、高效倾听模型 十三、高效表达模型 十四、精准提问模…...

十一、数据库配置
一、Navicat配置 这个软件需要破解 密码是:123456; 新建连接》新建数据库 创建一个表 保存出现名字设置 双击打开 把id设置为自动递增 这里就相当于每一次向数据库添加一个语句,会自动增长id一次 二、数据库的增删改查 1、Vs 建一个控…...

day02 -- docker
1.docker的介绍 Docker 是一个开源的应用容器引擎,基于 Go语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使…...
ecmascript标准
1. 简介 1.1. 概述 ECMAScript(简称ES)是JavaScript编程语言的一个标准化版本。它是为网络开发设计的一种轻量级的脚本语言,主要用于在网页上实现交互性和动态效果。ECMAScript是该语言的标准名称,而JavaScript是其最知名和广泛使用的实现。 1.2. 特点 跨平台性 :ECMAS…...
在Linux命令行中一行执行多个命令
原文地址链接: https://kashima19960.github.io/2024/10/22/Linux/在Linux命令行中一行执行多个命令/,一般有最新的修改都是在我的个人博客里面,所以在当前平台的更新会比较慢,请见谅😃 前言 在shell中一个一个命令行,…...

u盘快速格式化后怎么恢复文件:深入解析与全面指南
U盘,凭借其小巧便携、易于使用的特点,成为了我们日常生活中不可或缺的数据存储工具。然而,有时为了清除病毒、解决文件系统错误或准备存储新数据,我们可能需要对U盘进行快速格式化。但这一操作往往伴随着一个严峻的问题࿱…...

青少年编程能力等级测评CPA C++(二级)试卷(2)
青少年编程能力等级测评CPA C(二级)试卷(2) 一、单项选择题(共20题,每题3.5分,共70分) CP2_2_1.下列C程序段中,对二维数组arr的定义不正确是( &…...

aws 把vpc残留删除干净
最近忘了把vpc 删干净导致又被收了冤大头钱 在删除vpc 的收发现又eni在使用,但是忘了是哪个资源在占用 先用命令行把占用的资源找出来停掉 使用 AWS 命令行界面(CLI)来查看 VPC 的使用情况 列出子网: aws ec2 describe-subnets …...
平衡二叉树最全代码
#include<stdio.h> #include<stdlib.h>typedef struct Node {int val;int height;struct Node *left;struct Node *right; }Node;//创建新结点 Node* newNode(int val) {Node *node (Node*)malloc(sizeof(Node));node->val val;node->height 1;node->l…...

数据库表的创建
运用的环境是pychram python3.11.4 创建一个表需要用到以下语法 注释已经写清楚各种语法的含义,记住缩进是你程序运行的关键,因为程序是看你的缩进来判断你的运行逻辑,像我这个就是缩进不合理导致的报错 那么今天分享就到这里,谢…...
【MySQL 数据库】之--基础知识
1. MySQL 数据库基础概念 数据库: 逻辑上存储和管理数据的集合。MySQL 是一个常用的关系型数据库管理系统。 2. 创建数据库 要创建一个新的数据库,可以使用 CREATE DATABASE 语句。 语法: CREATE DATABASE 数据库名; 示例: CREATE DATABASE my_database; 注意事…...
Flume面试整理-如何处理Flume中的数据丢失
在Apache Flume中,数据丢失是一个可能出现的严重问题,特别是在处理大规模数据时。数据丢失通常会发生在数据从Source(源)到Channel(通道),或从Channel到Sink(汇)传输的过程中。如果不处理得当,Flume的崩溃或网络故障可能会导致丢失的数据无法恢复。以下是几种常见的F…...

文件处理新纪元:微信小程序的‘快递员’与‘整理师’
嗨,我是中二青年阿佑,今天阿佑将带领大家如何通过巧妙的文件处理功能,让用户体验从‘杂乱无章’到‘井井有条’的转变! 文章目录 微信小程序的文件处理文件上传:小程序的“快递服务”文件下载:小程序的“超…...

应付账款优化,自动化管理5要点
优化应付账款流程对企业现金流至关重要。通过自动化、规范采购订单、管理供应商、设计高效流程及保留数字记录,可显著提升效率与精确度。ZohoBooks在线财务记账软件助您简化应付账款处理,确保业务顺畅。 1、自动化您的应付账款流程 通过自动化你的应付账…...

Win安装Redis
目录 1、下载 2、解压文件并修改名称 3、前台简单启动 4、将redis设置成服务后台启动 5、命令启停redis 6、配置文件设置 1、下载 【下载地址】 2、解压文件并修改名称 3、前台简单启动 redis-server.exe redis.windows.conf 4、将redis设置成服务后台启动 redis-server -…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...