Linux-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,因为还有那里面的一个上级目录 ..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值