Linux-iNode-软硬链接

news2024/11/25 18:52:30

文章目录

        • inode
          • 磁盘了解
          • 站在OS角度磁盘就是线性结构
          • 如何确认inode和后面的那个block相关联呢?
          • 如何在大的inode Table中安排一个新文件的inode?
          • 目录下创建文件的过程都发生了什么
        • 软硬链接
          • 软链接:特别像快捷方式
          • 使用场景
          • 硬链接
          • 二者区别:
          • 硬链接有什么用?

inode

磁盘了解

计算机中的机械设备,例如SSD,FLASH,USB。磁盘写入的基本单位是扇区,512字节。盘面,磁道,扇区。磁盘和OS的交互的基本单位是4KB。

机械硬盘(偏移容量大效率低)
在这里插入图片描述

固态硬盘(效率高)
在这里插入图片描述

将盘片想象为线性的结构,同心圆柱面扯开成一条。寻址时,将3D磁盘划分地址转化为线性地址即可完成规划。即管理好这个大的线性磁盘空间即可

站在OS角度磁盘就是线性结构

在这里插入图片描述

磁盘很大,管理的成本是很高的。

  • 分区:将大磁盘划分为小空间。
  • 格式化:每个分区需要写入文件系统:来管理每个分区。

在这里插入图片描述

如何确认inode和后面的那个block相关联呢?

Linux系统中文件名在OS层面没有意义,是给用户使用的。

系统层面标定一个文件的并不是文件名,是通过文件的inode编号。一个文件一个inode.

iNode中存在的是文件属性结构体,结构体中存在block[32]数组,写入着和block的对应关系:1:n。

如何在大的inode Table中安排一个新文件的inode?

iNode Bitmap位图结构:
在这里插入图片描述

将iNode bitmap加载到内存然后按位操作找0的位置。同理给文件内容申请数据块应该分配几个?就遍历Block Bitmap位图结构申请几个位置,确定在datablocks中的那几个block。

  • 目录是文件吗?

    是,文件的属性在磁盘中也存在着自己的iNode。

  • 目录有数据吗?

  • 目录数据块中放什么?

    所创建的所有文件,都在一个特定的目录下,进程也存在与他的当前目录。所以放的是文件名映射inode编号。

目录下创建文件的过程都发生了什么

在这里插入图片描述

iNode Bitmap遍历,标志位从0置1,安排位置inode =12345,填充文件属性。

查看文件名:cat->先查看当前目录->data block->12345(映射关系)hello.c->12345->inode table->inode->blocks[]->打印文件内容。

在特定目录下写入创建文件名和iNode的映射关系。

删除文件只需要将inodebitmap中的标志位从1->0,删文件并不删文件的数据和属性,只是标志位置0即可,下一次会有新的内容填充。所以rm删文件很快只是一下标志位的处理,文件误删还是有拯救方式的,inode bitmap以及block[32]中的标志位并且原来的文件还没被覆盖。

软硬链接

软链接:特别像快捷方式

在这里插入图片描述

使用场景

在这里插入图片描述

设定长目录下的exe:
在这里插入图片描述

建立软连接之前执行:
在这里插入图片描述

建立软连接之后:
在这里插入图片描述

硬链接

在这里插入图片描述

在这里插入图片描述

二者区别:

软连接是有自己独立的inode的,是一个独立的文件。有自己的iNode属性和数据块(保存的是指向文件的路径)

硬链接本质就不是一个独立的文件,而是一个文件名和iNode编号的映射关系,自己没有独立的iNode,没有独立的属性和数据。

创建硬链接本质就是在特定目录下填写一对文件名和iNode的映射关系。把其中一个删掉文件还在,相当于重命名文件了。

文件对应的硬链接数,有几个文件名指向他。那这个数字在inode结构体中的int ref字段中保存,添加一个ref++,相当于引用计数。

在这里插入图片描述

硬链接有什么用?

为什么创建新的目录的时候默认是2呢?
在这里插入图片描述

.是指向当前目录的,dir也是指向这个的,所以是2。同理,我在里面多创建一个目录,ref=3,因为还有那里面的一个上级目录 ..

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

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

相关文章

nodejs+vue+element+eachers构建开源项目大型连续剧(1)搭建nodejs服务器

在前端开发过程中,可能某些时候需要自己搭建一台服务器用于一些文件图片请求或者进行后端相关知识的学习。本文主要讲解如何通过nodejs进行一个基础服务器的搭建,包括如何将文件布置的服务器,以及基础接口的开发。后面可能会更新关于通过node…

从根源帮助改变数据延误, Qlik 辅助金融行业实现信贷渠道预测

信贷行业面临的业务挑战 传统方式下,营利性增长和正确管理信贷组合风险的能力是通过静态报告和电子表格完成的,不仅数据单独进行汇总,同时交付过程也存在延迟。这种情况导致组织不得不基于不完整的信息来制定关键的信贷和定价决策。信贷员需…

研发中台拆分过程的一些心得总结

背景在 21 年,中台拆分在 21 年,以下为中台拆分的过程心得,带有一定的主观,偏向于中小团队中台建设参考(这里的中小团队指 3-100 人的团队),对于大型团队不太适用,毕竟大型团队人中 …

Elasticsearch8系列【2】Windows环境安装ES8

有道无术,术尚可求,有术无道,止于术。 文章目录前言Windows安装Elasticsearch8.5.21. 下载2. 获取密码3. 注册服务4. 登录安装可视化工具前言 Elasticsearch使用Java语言开发,在安装之前需要安装JDK环境。基本支持所有主流操作系统…

Kioptrix Level2靶机

0x01信息收集 nmap -sV -O 10.121.65.83 0x02 万能密码&&命令执行 访问80端口(经测试 443端口并没有办法访问) 登录框尝试弱口令和sql注入 发现存在万能密码 admin# 存在一个ping命令,尝试通过管道符看是否会执行命令 127.0.0.0|id 存在命令执行漏洞&am…

network判断是否瓶颈

首先判断连接是否建立: tcp主机a->主机b的请求连接命令,半连接队列在主机b 判断半连接队列命令 netstat -s |grep -i listen 值过大,半连接队列无法建立 2.tcp主机a收到主机b的回复,主机a->主机b的连接请求,全…

成才之路杂志社成才之路编辑部成才之路杂志2022年第33期目录

高教与成才研究《成才之路》投稿:cn7kantougao163.com 融媒体时代大学生职业发展与就业指导课程体系建设研究 张效良;李玉波; 1-4 “三全育人”背景下高职辅导员思政教育方法研究 杨春蕊; 5-8 “五育”学生管理模式对高校思政教育的影响研究 张晓英; 9-…

基数排序python

一、基数排序介绍 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,…

【Windows逆向】Windows进程动态patch入门+pyqt5搭建GUI

目标 希望学习对Windows进程的动态patch,我们选择的exe是buuoj的“不一样的flag”。这题是迷宫题的hello world,没有加壳,没有任何代码混淆,且可以把它当成一个超小型的游戏,有助于提升信心。 为了直观,以…

【学习笔记】SAP固定资产的减值功能

SAP固定资产的减值功能 若固定资产出现减值迹象,也就是固定资产的可收回金额小于账面价值时,就要计提固定资产减值准备。 分录: 借:资产减值损失(损益科目) 贷:固定资产减值准备(资…

软件测试 | APP测试 —— Appium 的环境搭建及工具安装教程

推荐阅读: [内部资源] 想拿年薪30W的软件测试人员,这份资料必须领取~ Python自动化测试全栈性能测试全栈,挑战年薪40W 从功能测试进阶自动化测试,熬夜7天整理出这一份超全学习指南【附网盘资源】 大家应该都有同一种感觉&…

传奇怎么设置GM帐号GM命令

传奇怎么设置GM帐号GM命令 我们先创建账号进入游戏 进入到服务器里面打开我的电脑 计算机D:\Mirserver\Mir200\Envir打开AdminList.txt文件 退出保存文本,小退一下游戏再次进入就是GM号了 方法二:在任务栏找到M2Server 点击查看-----列表信息一 保存后我…

微服务框架 SpringCloud微服务架构 分布式事务 38 动手实践 38.6 TCC 模式原理

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 分布式事务 文章目录微服务框架分布式事务38 动手实践38.6 TCC 模式原理38.6.1 TCC 模式原理38.6.2 举个栗子38.6.3 工作流程38.6.4 总结38 …

TensoRT—— buffers管理(samplesCommon::BufferManager)

BufferManager类处理主机和设备buffer分配和释放。 这个RAII类处理主机和设备buffer的分配和释放、主机和设备buffers之间的memcpy以帮助inference,以及debugging dumps以验证inference。BufferManager类用于简化buffer管理以及buffer和 engine之间的交互。 代码位…

web前端网页制作课作业:校园科技节活动网站 (纯HTML+CSS布局制作)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

cleanmymac x免费版安装包下载使用教程

我这台用了7年的MacBook Air ,硬盘容量只有 128G ,用段时间就会被系统提醒「您的磁盘几乎已满」,并且变得有点卡顿。这时,清理一下垃圾,腾出更多储存空间,就能让它满血复活。 这个时候我们可以用 CleanMyM…

Kafka系列之:使用kafka manager增加topic分区和副本

Kafka系列之:使用kafka manager增加topic分区和副本) 一、相关技术博客二、增加分区三、增加副本一、相关技术博客 Kafka系列之:实现kafka topic优先副本的选举Kafka系列之:使用Kafka Manager实现leader分区平衡和broker节点上分区平衡二、增加分区 增加分区: 增加完分区…

Adobe Acrobat 图标异常的解决办法

今天使用 Adobe Acrobat 打开文件阅读时,发现底部任务栏的图标是这样的,如下图所示。 这可不是常见的 Adobe Acrobat 图标,肯定是哪里出了问题,于是我在电脑开始这里找到 Adobe Acrobat 的快捷方式,其图标也是这样的&…

Android Binder 通信一次拷贝的原理

前言 对于 Android 开发者来说 Binder 应该不会陌生了,Binder 是 Android 提供的 IPC 通信机制,它是通过内存映射实现的,而这也是 Binder 相对于其他传统进程间通信方式的优点之一,即我们说的 Binder 只需要做“一次拷贝”&#…

基于springboot高校闲置物品交易系统微信小程序源码和论文

基于springboot二手物品交易系统微信小程序 互联网的兴起从本质上改变了整个社会的商品交易方式,国内各大企业从上个世纪 90 年代互联网兴起之时,就产生了通过网络进行销售经营商品的想法。但是由于在互网上企业的信誉难以认证、网络的法规政策不健全、物…