Linux笔记---文件系统硬件部分

1. 文件系统

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。

1.1 基本组成

  • 索引节点(inode):用来记录文件的元信息,比如inode编号、文件大小、访问权限、创建时间、修改时间、数据在磁盘的位置等等。索引节点是文件的唯一标识,它们之间一一对应,也同样都会被存储在硬盘中,所以索引节点同样占用磁盘空间。

  • 目录项(dentry):用来记录文件的名字、索引节点指针以及与其他目录项的层级关联关系。多个目录项关联起来,就会形成目录结构,但它与索引节点不同的是,目录项是由内核维护的一个数据结构,不存放于磁盘,而是缓存在内存。

  • 数据块(data block):是文件系统读写的最小单位,用于存储文件的数据。不同的文件系统数据块大小可能不同,例如Linux中的逻辑块大小通常为4KB。

1.2 主要功能

  • 管理和调度文件的存储空间:负责为文件分配和回收磁盘空间,提高磁盘空间的利用率。

  • 提供文件的逻辑结构、物理结构和存储方法:定义了文件在磁盘上的存储方式和组织形式,如链式存储、索引存储等。

  • 实现文件从标识到实际地址的映射:通过索引节点和目录项等数据结构,将用户使用的文件名转换为磁盘上的实际存储地址。

  • 实现文件的控制操作和存取操作:提供对文件的创建、删除、读取、写入等操作的支持。

  • 实现文件信息的共享并提供可靠的文件保密和保护措施:支持多个用户或进程对文件的共享访问,并通过访问权限等机制保护文件的安全性和保密性。

  • 提供文件的安全措施:如文件的加密、备份与恢复等功能,保障文件数据的完整性和可用性。

 这一节,我们主要认识文件系统的硬件部分,即磁盘(或硬盘)。

2. 磁盘

2.1 磁盘的分类

  • 机械硬盘(HDD):机械硬盘是传统的磁盘存储设备,由盘片、磁头、电机、控制电路等部件组成。数据存储在盘片的磁性涂层上,磁头通过在盘片表面移动来读写数据。机械硬盘的优点是容量大、价格相对较低,适合对读写速度要求不高的大容量存储场景。

  • 固态硬盘(SSD):固态硬盘采用闪存芯片作为存储介质,通过电子信号来存储和读取数据,不需要机械部件。固态硬盘的优点是读写速度快、抗震性强、功耗低、噪音小,适合对读写速度要求较高的场景,如系统盘、游戏盘等。

 2.2 机械硬盘的存储结构

磁盘的数据就存储在圆型的磁片上,磁头可以在摇头臂的驱动下,随着盘片的高速旋转,访问到盘片表面的任意位置。

盘片的表面被分为多个存储单元,这些单元被成为扇区。

 扇区:是磁盘存储数据的基本单位,每个扇区可存储512字节。

这意味着,每次对磁盘的数据进行读写都必须将一个扇区的512个字节一起加载到内存中。

通常来说,一块磁盘上有多组盘片与磁头(一个盘片对应两个面、两个磁头)。这些盘片绕着主轴进行同步的高速旋转,磁头在同一个机械臂杆的驱动下进行同步运动。

也就是说这些磁头在竖直方向上连成一条线,指向各自盘面的对应扇区。随着盘片的高速旋转,与磁道一同形成了一个柱面,如图所示。

磁盘容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数(512)。

2.3 CHS地址定位

操作系统要访问一个文件,就需要知道该文件在哪一个扇区(或哪几个)。

那么,如何定位一个扇区呢?

  1. 定位扇区所在柱面(Cylinder)。
  2. 选择有效磁头(Header)。
  3. 定位扇区(Sector)。

 三个参数 "Cylinder-Header-Sector" 共同构成了 "CHS地址"。

操作系统只要知道所需访问文件对应的 CHS地址 ,即可通过驱动程序完成访问。

CHS模式支持的硬盘容量有限,因为系统用8bit来存储磁头地址,用10bit来存储柱面地址,用6bit来存储扇区地址,而一个扇区共有512Byte,这样使用CHS寻址一块硬盘最大容量为256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B)(若按1MB=1000000B来算就是8.4GB)。

2.4 LBA地址定位

我们可以将一个磁道看作一个一维数组,将一个柱面看作二维数组(在同一柱面上的每一个磁道作为二维数组的一行),那么磁盘就可以看作一个三维数组。

我们知道,无论是二维数组还是三维数组,从存储空间上来看都是一维数组首尾相接的结果。

我们按照这样的思路就可以将磁盘的存储空间映射为一维数组。

将这个磁盘抽象成的数组的下标作为扇区的地址,我们就得到了 "LBA地址"(Logical Block Address) ,即线性地址。

同样的,使用 LBA地址,操作系统就能很好的定位到扇区。只要在硬件层面上实现 "LBA地址 到 CHS地址" 的转换。 

2.5 CHS 与 LBA地址的相互转换

CHS 转换为 LBA
LBA = 柱面号C * (磁头数 * 每磁道扇区数) + 磁头号H * 每磁道扇区数 + 扇区号S - 1
  • 扇区通常是从1开始编号的,而柱面和磁道都是从0开始编号的。
  • 在LBA中,地址是从0开始的。
  • 总柱面,磁道个数,扇区总数等信息,在磁盘内部会自动维护,上层开机的时候,会获取到这些参数。
LBA 转换为 CHS
柱⾯号C = LBA / (单个柱⾯的扇区总数 = 磁头数 * 每磁道扇区数)
磁头号H = (LBA % 单个柱⾯的扇区总数) / 每磁道扇区数 
扇区号S = (LBA % 每磁道扇区数) + 1 

从现在开始,我们主要关注LBA 地址,将磁盘看作一个一维数组,而不再关心其底层细节了(交由硬件自动处理)。

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

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

相关文章

12.31[net]review

复用(Multiplexing)的概念 定义:在传输层,复用是指多个应用进程可以使用同一个传输层协议(如 TCP 或 UDP)来发送数据。从应用层的角度看,不同的应用进程(如网页浏览器、邮件客户端等…

网络安全防护架构有哪些 网络安全防护措施包括

网络安全预防措施 网安措施 计算机网络安全措施主要包括保护网络安全、保护应用服务安全和保护系统安全三个方面,各个方面都要结合考虑安全防护的物理安全、防火墙、信息安全、Web安全、媒体安全等等。 (一)保护网络安全。 网络安全是为保护商务各方网络端系统之…

物理笔记 | 拓扑相变的物理图像

1. 一般相变 对于一般的相变是朗道理论预言的由对称性自发破缺导致的。 比如在一维横场Ising模型中的量子相变 H − J ∑ j σ j z σ j 1 z − h ∑ j σ j x H -J \sum_{j} \sigma_j^z \sigma_{j1}^z - h \sum_{j} \sigma_j^x H−Jj∑​σjz​σj1z​−hj∑​σjx​ 其相…

红黑树介绍

1 问题引入 为什么有AVL树,还要引入红黑树? 在进行多次的插入和删除时: 1)AVL树会存在大量的旋转操作,追求的是严格平衡; 2)红黑树通过为节点增加颜色来换取增删节点时旋转次数…

Java基础:枚举类enum入门案例

1.基础枚举定义与使用: package com.zxy;public class Main {public static void main(String[] args) { // 获取枚举值cars car cars.BMW;switch (car){case BMW :System.out.println("BMW");break;case BENZ :System.out.println("BENZ&…

torch numpy sort排序出现索引顺序不正常

问题 torch 调用numpy ,numpy 的sort排序值的顺序没发现问题,但是排序的索引argsort()是有明显问题。 方案 多一次取索引 arr.argsort().argsort()参考: https://blog.csdn.net/qq_50571974/article/details/123173118

大模型架构记录5-向量数据库

一 倒排索引、KNN、PQ 1.1 基础版本 query -> requery 对问题做处理,处理上下文 对query 做 refined query 1.2 向量数据库 二 搜索逻辑 2.1 knn 2.2 近似KNN 先和N个空间的均值比较再和空间内部的所有点比较,计算最近值。 优化一: …

Python :数据模型

一. 什么是数据模型? Python数据模型是Python对象系统的抽象,通过一组特殊方法​(如__init__、__len__等)和协议​(如迭代协议、上下文管理协议),定义了对象如何与语言的内置功能(如…

考研数学非数竞赛复习之Stolz定理求解数列极限

在非数类大学生数学竞赛中,Stolz定理作为一种强大的工具,经常被用来解决和式数列极限的问题,也被誉为离散版的’洛必达’方法,它提供了一种简洁而有效的方法,使得原本复杂繁琐的极限计算过程变得直观明了。本文&#x…

电商平台数据高效集成:旺店通旗舰版到MySQL方案解析

旺店通旗舰版-商品信息查询到MySQL的高效数据集成方案 在现代电商平台中,数据的高效集成和处理是业务成功的关键。本文将分享一个实际案例,展示如何通过轻易云数据集成平台,将旺店通旗舰奇门的数据无缝对接到MySQL数据库,实现商品…

ACL初级总结

ACL–访问控制列表 1.访问控制 在路由器流量流入或者流出的接口上,匹配流量,然后执行相应动作 permit允许 deny拒绝 2.抓取感兴趣流 3.ACL匹配规则 自上而下逐一匹配,若匹配到了则按照对应规则执行动作,而不再向下继续匹配 思科:ACL列表末尾隐含一条拒绝所有的规则 华为:AC…

【微知】plantuml在泳道图中如何将多个泳道框起来分组并且设置颜色?(box “浏览器“ #LightGreen endbox)

泳道分组并且着色 分组用 box和endbox ,颜色用#xxx,标注用"xxx" box "浏览器" #LightGreen participant "浏览器1" as Browser participant "浏览器2" as Browser2 endboxparticipant "服务端" as …

C语言:计算并输出三个整数的最大值 并对三个数排序

这是《C语言程序设计》73页的思考题。下面分享自己的思路和代码 思路&#xff1a; 代码&#xff1a; #include <stdio.h> int main() {int a,b,c,max,min,mid ; //设置大中小的数分别为max&#xff0c;mid&#xff0c;min&#xff0c;abc为输入的三个数printf("ple…

【PyMySQL】Python操作MySQL

1、安装pymysql pip install pymysql2、导包 import pymysql3、连接MySQL数据库 db pymysql.connect(hostlocalhost # 本地localhost&#xff0c;或服务器IP地址,userroot # 用户名,passwordpassword # 密码,databasemysql) #数据库名4、创建游标 cursor db.cursor()5、增…

蓝桥备赛(18)- 红黑树和 set 与 map(上)

对于二叉搜索树 &#xff0c; 平衡二叉树 &#xff0c; 以及红黑树 &#xff0c; 目前只需要了解背后的原理 &#xff0c; 不做代码实现的要求 &#xff0c; 重要的就是了解各种操作的时间复杂度即可 &#xff0c; 为set 与 map 做铺垫 一、二叉搜索树 1.1 基本概念 相较与于堆…

【Synchronized】不同的使用场景和案例

【Synchronized】不同的使用场景和案例 【一】锁的作用范围与锁对象【1】实例方法&#xff08;对象锁&#xff09;【2】静态方法&#xff08;类锁&#xff09;【3】代码块&#xff08;显式指定锁对象&#xff09;【4】类锁&#xff08;通过Class对象显式锁定&#xff09; 【二】…

大模型在原发性急性闭角型青光眼预测及治疗方案制定中的应用研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与方法 1.3 国内外研究现状 二、原发性急性闭角型青光眼概述 2.1 疾病定义与分类 2.2 发病机制与危险因素 2.3 症状与诊断方法 三、大模型在原发性急性闭角型青光眼预测中的应用 3.1 大模型原理与优势 3.2 术前风险预…

【蓝桥杯—单片机】第十五届省赛真题代码题解析 | 思路整理

第十五届省赛真题代码题解析 前言赛题代码思路笔记竞赛板配置建立模板明确基本要求显示功能部分频率界面正常显示高位熄灭 参数界面基础写法&#xff1a;两个界面分开来写优化写法&#xff1a;两个界面合一起写 时间界面回显界面校准校准过程校准错误显示 DAC输出部分按键功能部…

Vue3实战学习(Vue3快速搭建后台管理系统(网页头部、侧边导航栏、主体数据展示区的设计与实现)(超详细))(9)

目录 一、Vue3工程环境配置、项目基础脚手架搭建、Vue3基础语法、Vue3集成Element-Plus的详细教程。(博客链接如下) 二、Vue3集成Element-Plus详细教程。(博客链接如下) 三、Vue3集成Vue-Router详细教程。(博客链接如下) 四、Vue3快速搭建后台管理系统。(实战学习) &#xff08…

halcon机器人视觉(四)calibrate_hand_eye_stationary_3d_sensor

目录 一、准备数据和模型二、按照表面匹配的的结果进行手眼标定三、根据标定结果计算CalObjInCamPose一、准备数据和模型 1、读3D模型:read_object_model_3d 2、创建表面匹配模板:create_surface_model 3、创建一个HALCON校准数据模型:create_calib_data read_object_mode…