【Linux基础IO】磁盘的结构、文件系统与inode、软硬链接

目录

磁盘的物理存储结构

磁盘的逻辑结构

文件系统与inode

硬链接

软链接

关于目录文件


磁盘的物理存储结构

磁盘是计算机中唯一的机械硬件设备,由磁头,盘面,磁道,扇区这四部分对磁盘上的数据进行增删查改操作。盘面上存储的是二进制数据,盘面是双面的且盘面在工作是高速转动,磁头会左右摆动但不接触盘面,防止磁头刮花盘面破坏数据。

磁盘被访问的基本单元是扇区512byte,我们可以把磁盘看作由无数个扇区构成的存储介质。要把数据存到磁盘,就必先定位一个扇区:哪一个盘面(定位用哪个磁头);盘面上的哪个磁道;磁道上的哪个扇区。

CPU有寄存器,其他外设也有,磁盘里也有寄存器:

磁盘的逻辑结构

我们可以把磁盘的逻辑结构是线性的,相当于一个连续的数组,要想访问那个扇区直接根据位图的计算方法获取相应的数组索引,通过索引就可以访问要访问的扇区。

 假设每个盘面有20000个扇区,每个盘面有50个磁道,每个磁道有400个扇区。

现在扇区的编号是28888,我们就可以确定28888/20000=1,则该扇区在第二个盘面上,28888%20000=8888,8888/400=22,8888%400=88,因此该扇区是第二个盘面上的第23个磁道上的第88个扇区。

文件系统与inode

假如一个磁盘有800G的内存,应该对磁盘内存进行分区再分组管理其内存。

按照这样现分区再分组,管理好这分组后的10G内存就可以将200G内存管理好进而管理好整个磁盘的内存。

文件系统结构如下图所示:

理解文件系统中的各区域:

Super Block:储存整个文件系统的基本信息。如:一共有多少个分组、每个分组的内存大小、每个组的inode数量、每个组的block数量、每个组的起始inode、文件系统的类型与名称等。一般Super Block会少数且分散的存在于磁盘内存中,防止单个Super Block数据被破坏导致整个文件系统异常。

Group Descriptor Table:存储描述块组的属性信息。如该块组还剩下多少未使用的内存。

Block Bitmap:该区域中存储的是多个比特位,用来记录Data block中块的使用情况,比特位的位置和Data block中的块号映射,如果相应的比特位是1则该块没被使用,为0则已被使用。

inode Bitmap:记录inode结构体的使用情况,和Block Bitmap规则一致。

根据文件系统结构,操作系统怎么从磁盘上把文件删除呢?

首先操作系统根据文件名,找到该文件的inode编号进而找到存储该文件全部属性的inode结构体,将自己占用的Data block里的块通过映射将Block Bitmap中的比特位置为0,再将inode Bitmap中的该文件inode结构体对应的比特位置为0。并不是直接删除Data block中文件对应的块数据和inode Table中文件对用的结构体数据。

inode Table:存储文件的所有属性,由多个inode结构体组成。每一个文件都有自己的inode结构体对象如下:

每一个文件都有自己的inode编号,在Linux中文件的属性不包括文件名,Linux系统中本质是用inode编号辨别文件的。

Data blocks:存储文件内容的区域,以块的形式存在每个小块的存储容量是4KB。一个文件可以有多个Data blocks中的小块。

硬链接

建立硬链接指令:ln 文件名 硬链接名

真正找到磁盘上文件的并不是文件名,而是inode编号。 其实在linux中可以让多个文件名对应于同一个inode编号,硬链接不是一个独立的文件因为它没有自己独立的inode。

删除原文件test.txt不会影响硬链接。

每一个inode中都有一个count计数变量,当count减到0时操作系统将该文件释放掉。

软链接

建立软链接指令:ln -s 文件名 软连接名

软链接是一个独立的文件,有自己独立的inode,也有独立的Data block中的内存块,软链接内存块里存储的是指向文件所在的路径。软链接相当于Windows中打开程序的快捷方式。

 rm -f ./test/mytest/test.exe会造成对应的软链接soft-link失效。

关于目录文件

目录文件也有自己的inode,属于目录文件的Date Block中的内存块储存的是该目录下的文件名与inode编号的映射关系。创建硬链接的本质其实是:在特定内存块中新增文件名和指向文件的inode编号之间的映射关系。

操作系统会默认在每个目录创建该目录自己的隐藏硬链接 ,以及上一级目录的隐藏硬链接。

.就是mulu目录的硬链接     ..就是diretory目录的硬链接。

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

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

相关文章

面向对象修炼手册(二)(消息与继承)(Java宝典)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀面向对象修炼手册 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 消息传递 1 基本概念 1.…

App推广告别邀请码,Xinstall助您一键触达海量用户!

在移动互联网高速发展的今天,App的推广与运营已成为每个开发者都必须面对的问题。然而,随着互联网流量的日益分散和用户需求的不断变化,传统的App推广方式已经难以满足现代市场的需求。尤其是在获取用户时,很多开发者还在采用传统…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-26网络中的网络NiN

26网络中的网络NiN import torch from torch import nn import liliPytorch as lp import matplotlib.pyplot as plt# 定义一个NiN块 def nin_block(in_channels, out_channels, kernel_size, strides, padding):return nn.Sequential(# 传统的卷积层nn.Conv2d(in_channels, ou…

图的学习.

目录 一、图的基本概念 1.1图的种类 1.2顶点的度、入度和出度 1.3边的权和网 1.4路径、路径长度和回路 二、图的存储结构 2.1邻接矩阵法 2.2邻接表法 2.3十字链表 2.4邻接多重表 三、图的遍历 3.1广度优先搜索 3.2深度优先搜索 四、图的应用 4.1最小生成树 4.1.…

VSCode 安装Remote-SSH

1、打开扩展商店安装Remote-SSH 快捷键:CtrlShiftX 2、配置ssh连接 打开命令面板(CtrlShiftP) 输入"Remote-SSH: Connect to Host"并选择。 输入你的Ubuntu服务器的IP地址或主机名。 3、连接到ubuntu服务器 如果是第一次连接&…

FPGA结构相关简介

一、芯片分类 ​FPGA属于数字芯片的一种,下面是根据世界半导体贸易统计协会WSTS的一个半导体分类,可以看到FPGA所属的类别。 二、FPGA的发展史 ​下图为FPGA的发展历史 三、FPGA的结构分类 下面是从三个角度进行划分 四、参考资料 《FPGA原理与结构》—…

【课程总结】Day10:卷积网络的基本组件

前言 由于接下来的课程内容将围绕计算机视觉展开,其中接触最多的内容是卷积、卷积神经网络等…因此,本篇内容将从卷积入手,梳理理解:卷积的意义、卷积在图像处理中的作用以及卷积神经网络的概念,最后利用pytorch搭建一…

构建未来应用的核心,云原生技术栈解析

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、云原生技术栈 1、容器和容器编排 1.1 Docker 1.2 Kubernete…

ULTRAINTERACT 数据集与 EURUS 模型:推动开源大型语言模型在推理领域的新进展

在人工智能的浪潮中,大型语言模型(LLMs)已经成为推动自然语言处理技术发展的关键力量。它们在理解、生成语言以及执行复杂任务方面展现出了巨大的潜力。然而,尽管在特定领域内取得了显著进展,现有的开源LLMs在处理多样…

Vue3+ElementPlus+pinia 小案例

Vue3ElementPluspinia 小案例 1、初始化项目 使用脚手架快速创建Vue3应用:https://cli.vuejs.org/zh/ 脚手架自动整合了vue-router路由、ts、前端工程化等库; 安装脚手架工具 npm install -g vue/cli检测安装是否成功 vue -V创建项目: …

UnityShader——基础篇之UnityShader基础

UnityShader基础 UnityShader概述 材质和UnityShader 总的来说,在Unity中需要配合使用材质(Material)和 Unity Shader 才能达到需要的效果,常见流程为: 创建一个材质创建一个 Unity Shader,并把它赋给上一步中创建的材质把材质…

Android模拟器linux内核的下载,编译,运行,驱动开发测试

Android模拟器linux内核的下载,编译,运行,内核模块开发 1.下载适合Android模拟器的内核 git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git git branch -a git checkout android-goldfish-4.14-gchips 新建一个目录…

【2024最新版】Java JDK安装配置全攻略:图文详解

目录 1. 引言2. 准备工作2.1 **确定操作系统**2.2 **检查系统要求**2.3 **下载JDK安装包**3. 安装步骤(以Windows系统为例)4. 配置环境变量4.1 jdk配置验证4.2 **配置JAVA_HOME环境变量**4.3 **配置Path环境变量**4.4 验证jdk是否配置成功 5. 结语 1. 引…

机器学习周记(第四十四周:Robformer)2024.6.17~2024.6.23

目录 摘要ABSTRACT1 论文信息1.1 论文标题1.2 论文摘要1.3 论文引言1.4 论文贡献 2 论文模型2.1 问题描述2.2 Robformer2.2.1 Encoder2.2.2 Decoder 2.3 鲁棒序列分解模块2.4 季节性成分调整模块 摘要 本周阅读了一篇利用改进 Transformer 进行长时间序列预测的论文。论文模型…

浅析MySQL-基础篇01

目录 执行一条select语句,发生了什么? MYSQL执行流程是怎么样的? 第一步:连接器 第二步:查询缓存 第三步:解析SQL 解析器 第四步:执行SQL 预处理器 优化器 执行器 执行一条select语句…

Temu(拼多多跨境电商) API接口:获取商品详情

核心功能介绍——获取商品详情 在竞争激烈的电商市场中,快速、准确地获取商品数据详情对于电商业务的成功至关重要。此Temu接口的核心功能在于其能够实时、全面地获取平台上的商品数据详情。商家通过接入Temu接口,可以轻松获取商品的标题、价格、库存、…

Day15 —— 大语言模型简介

大语言模型简介 大语言模型基本概述什么是大语言模型主要应用领域大语言模型的关键技术大语言模型的应用场景 NLP什么是NLPNLP的主要研究方向word2vecword2vec介绍word2vec的两种模型 全连接神经网络神经网络结构神经网络的激活函数解决神经网络过拟合问题的方法前向传播与反向…

什么是REST API

1. 什么是RESTful API REST API,全称 Representational State Transfer,最初由计算机科学家 Roy Fielding 提出。 是遵循 REST 架构规范的应用编程接口(API),支持与 RESTful Web 服务进行交互。 又被称作 RESTful API…

深度神经网络——深度学习中的 RNN 和 LSTM 是什么?

引言 自然语言处理和人工智能聊天机器人领域许多最令人印象深刻的进步都是由 递归神经网络(RNN) 和长短期记忆(LSTM)网络。 RNN 和 LSTM 是特殊的神经网络架构,能够处理顺序数据,即按时间顺序排列的数据。…

《Python 机器学习》作者新作:从头开始构建大型语言模型,代码已开源

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 自 ChatGPT 发布以来,大型语言模型(LLM)已经成为推动人工智能发展的关键技术。 近期,机器学习和 AI 研究员、畅销书《Python 机器学习》作者 Sebastian …