操作系统中的硬链接和符号链接的不同

2023-10-30

硬链接和符号链接        这里没有介绍它们的功能和优点缺点(太多博客已经写过了),主要是解释了它们的原理

出现硬链接和符号链接的原因:我们需要共享文件,如果一个共享文件同时出现在属于不同用户的不同目录下,工作起来就会很方便,但是,怎么解决不同用户下对文件的修改能够让其他用户看到?解决方法就是硬链接和符号链接

链接的定义:假设,一个文件本属于C目录下,但是B目录与该文件建立起了联系,这个联系就被称为链接

因此文件系统本身是一个有向无环图,而不是一棵树,虽然这导致维护的复杂,但是是必要的

认识一下i节点:保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index),它本质上是一个小型数据结构

硬链接:在硬链接中,磁盘块不列入目录,而是列入i节点,不同目录下的文件名是指向同一个i节点的,上图!

图中应该可以比较直观的理解硬链接,其所有者是文件最开始在哪个目录下创建的,但是多了个计数器,计数器的作用就是记录一共有几个文件名都是指向这个i节点的,只有当计数为零,该i节点才会被删除(i节点中含有文件在磁盘中存储的位置,删除i节点==删除该文件在磁盘中存储的内容,个人理解,有错请指正),所以硬链接其实并不是存了两份相同的文件

符号链接:它是通过让系统建立一个类型为LINK的新文件,并把该文件放到共享它的目录下,使得B与C的一个文件存在链接(B、C是什么看图),在这个新文件中只包含了它所在链接的文件的路径名,当B去读该链接文件时,操作系统查看到要读的文件是LINK类型,则找到该文件所链接的文件的名字,并且去读那个文件,上图(自己画的,勿喷)!

总结:硬链接贡献一个i节点,共享同一个磁盘地址;符号链接是两个i节点,有两个磁盘地址,(我们还是假设B目录链接C目录下的文件)B目录下的LINK类型文件的磁盘地址存的是怎么去找C目录下文件的一些信息,C目录中才是正主信息的存放地,在B目录下修改文件时,也是对C目录下磁盘地址信息的修改

参考现代操作系统4.3.4共享文件与狂神说Linux

一些个人理解,如有错误,欢迎指正

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统中的硬链接和符号链接的不同 的相关文章

  • Java课程设计之学习成绩管理系统

    package System import java awt import java awt event import java io import javax swing import javax swing table Abstract
  • 终端连接控制(stty的编写)

    终端连接控制 stty的编写 一 背景 文件与目录在之前已经学习过了 文件中包含着数据 这些数据可以被读出 写入 也可以用以操作 但文件不仅仅是计算机唯一的数据来源 计算机的数据还可以来自于许多的外部设备 比如扫描仪 照相机 鼠标等输入设备
  • plsql更改用户登录密码

    ORACLE数据库系统是美国ORACLE公司 甲骨文 提供的以分布式数据库为核心的一组软件产品 是目前最流行的客户 服务器 CLIENT SERVER 或B S体系结构的数据库之一 比如SilverStream就是基于数据库的一种中间件 O
  • Tomcat7安装及配置教程

    Apache Tomcat7 0安装及配置教程 Apache Tomcat7 0官方网站链接 http tomcat apache org apache tomcat 7 0 73 windows x64 先解压下载的压缩包 然后在bin目
  • Linux系统的安装(在VM虚拟机上安装CentOS 7)

    工具准备 物理计算机一台 配置要求 操作系统 win10 64位 大家基本上都是 硬盘可用容量 20G以上 内存容量 4G以上 虚拟机安装包 VMware workstation full 12 5 下载链接 点我下载 提取码 9gha C
  • linux 如何创建卷组

    1 创建一个物理卷 Pvcreate dev sd1 dev sd2 dev sd3 dev sd4 2 用刚才创建的物理卷创建一个卷组 Vgcreate 卷组名 dev sd1 dev sd2 dev sd3 dev sd4 3 创建逻辑
  • pycharm内存不足时如何修改设置?

    Help gt Find Action gt type VM Options gt Click Edit Custom VM Options Pycharm 2016 2 will open the appropriate vmoption
  • Client-Server问题

    1 实验内容与要求 需要创建客户Client和服务器Server两个进程 它们通过管道进行通信 Client进程派生3个生产者线程 一个管道线程 共享一个20个slots的缓冲区 每个生产者线程随机产生一个数据 打印出来自己的id 进程 线
  • 设备管理过程

    复杂度2 5 机密度2 5 最后更新2021 04 19 AIX中对设备会有如下五个操作 define aix下能看到设备的定义 但驱动程序并没有加载或初始化 该设备不可用 lsdev看到设备时defined 很多逻辑设备 vg lv等 只
  • Linux 磁盘与文件系统管理(鸟哥私房菜)

    本文来自 http vbird dic ksu edu tw linux basic 0230filesystem php 第八章 Linux 磁盘与文件系统管理 系统管理员很重要的任务之一就是管理好自己的磁盘文件系统 每个分割槽不可太大也
  • nslookup命令详解

    nslookup命令用于查询DNS的记录 查看域名解析是否正常 在网络故障的时候用来诊断网络问题 nslookup的用法相对来说还是蛮简单的 主要是下面的几个用法 1 直接查询 这个可能大家用到最多 查询一个域名的A记录 nslookup
  • Linux,Network manager 导致节点异常重启

    推断是Network manager 导致的 原因待查今天在VmWare的虚拟机上装了个测试RAC 又遇到了一个摸不到头绪的问题CRS装好后 一旦登陆图形界面 节点就重启 事情就有这么巧不登陆图形界面 观察了1个小时没问题 一旦登陆后 立刻
  • Windows驱动开发(一)第一个驱动程序

    首先我们需要了解 在操作系统中 是分两种权限的 一种是内核态 我们也称为0环 一种是用户态 称之为3环 而在我们的电脑中 驱动程序是运行在内核态的 这意味着和操作系统内核是在同一权限的 而普通的应用程序的权限是最低的 高权限谁不想拥有呢 因
  • Linux常用命令记录

    文章目录 1 软件安装 安装软件 来自源服务器 安装 deb软件 来自本地 deb文件 修复依赖关系 卸载软件 2 文件 文件夹操作 删除文件夹 移动文件 文件重命名 3 程序查看 处理 进程查看 查看端口占用情况 强制终止程序 4 解压文
  • 内存管理——分页分段

    一 分页存储管理 1 页面与页框 1 页面 将一个进程的逻辑地址空间分成若干个大小相等的片 称为页面或页 并为各页加以编号 2 页框 相应于页面 把内存空间分成和页面相同大小的若干个存储块 称为 物理 块或页框 frame 3 页内碎片 在
  • 操作系统常见面试题

    1 什么是进程 Process 和线程 Thread 有何区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动 进程是系统进行资源分配和调度的一个独立单位 线程是进程的一个实体 是CPU调度和分派的基本单位 它是比进程更小的能
  • 如何快速构建CMBD系统-glpi

    脚本后续更新及迭代将由kkitDeploy项目代替 https github com luckman666 kkitdeploy server 请大家持续关注kkitDeploy 一 CMBD系统构建步骤 起初 开发这套CMBD系统是为了帮
  • MacOS中清除原有ssh公钥方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 用ssh的跳转登录服务器后 ssh会把你每个你访问过计算机的公钥 public key 都记录在 ssh known hosts 当下次访问相同计算机时 SSH会核对公钥
  • Common块和Bss段的区别

    昨天看 程序员的自我修养 链接 装载与库 发现不是很理解为什么要用common块 然后仔细看了一番 有了自己的理解 common块 用来存放弱符号 而全局未初始化变量是弱符号 但是难道不是应该存放在 bss段吗 为什么要有common块呢
  • 【操作系统xv6】学习记录4-一级页表与二级页表

    占位

随机推荐

  • 每天读一遍,不久你就会变

    在平凡枯燥简单的工作中 做无可取代的人 再烦 也别忘记微笑 再急 也要注意语气 再苦 也别忘坚持 再累 也要爱自己 低调做人 你会一次比一次稳健 高调做事 你会一次比一次优秀 成功的时候不要忘记过去 失败的时候不要忘记还有未来 有望得到的要
  • cadence allegro番外:制作含热风焊盘、反焊盘的过孔

    前言 需要先参考下列文章 padstack editor制作过孔 cadence allegro番外 制作flash焊盘 在以上文章中 已经制作了一个可用于两层板的过孔 但是在多层板中 过孔是需要链接或避让负电层的 因此需要在过孔中添加热风
  • 麒麟v10 curl报错:SSLv3_client_method version OPENSSL_1_1_0 not define

    curl及yum大致错误 usr bin cmake3 relocation error usr lib64 libcurl so 4 symbol SSLv3 client method version OPENSSL 1 1 0 not
  • 【STM32 学习】电源解析(VCC、VDD、VREF+、VBAT)

    VCC 电源电压 GND 电源供电负电压 通常接地 VDD 模块工作正电压 VSS 模块工作负电压 VREF ADC参考正电压 VREF ADC参考负电压 VBAT 电池或其他电源供电 VDDA 模拟供电正电压 VSSA 模拟供电负电压 一
  • c++11:动态内存与智能指针

    为了更容易 同时也更安全 地使用动态内存 新的标准库提供了两种智能指针 smart pointer 类型来管理动态对象 智能指针的行为类似常规指针 重要的区别是它负责自动释放所指向的对象 新标准库提供的这两种智能指针的区别在于管理底层指针的
  • CV::Mat数据拷贝 memcpy 踩坑

    1 cv mat 初始化 cv Mat img1 h w CV 8UC3 cv Mat img1 h w CV 8UC3 data 一般cv mat 初始化后数据内存 data 段都是连续的 可以用isContinuous 函数判断存储是否
  • Git克隆、拉取最新代码、上传代码到远程仓库

    文章目录 工作区 暂存区 版本库 1 提交代码到仓库 2 pull拉取最新代码 3 克隆 拉取代码 解决冲突 4 git 关联仓库并上传代码 5 关联已有仓库并提交代码 6 git记住某个仓库的账号密码 工作区 暂存区 版本库 工作区 就是
  • sqli-labs靶场Less-15

    1 访问首页 Less 15 index php 这里的传参点是表单中的uname passwd 判断是否是数字形传参 判断是否有单引号闭合 判断是否是双引号闭合 判断是否单引号 括号闭合 判断是否是双引号 括号闭合 如果以上都不适 哪以上
  • type object ‘Path‘ has no attribute ‘home‘

    报错 根据堆栈定位 是matplotlib init py文件里面562行位置报错的问题 讲道理 应该没有问题来着 进入到matplotlib init py文件 然后悬停Path和home 发现 emmm 文件居然不一样 好的 在我尝试更
  • OpenCV缺陷检测

    新手上路 欢迎高手指点 原图 OpenCV缺陷检测代码 An highlighted block include head h int main Mat img imread image 1204 bmp assert im data if
  • python是面向对象还是面向过程的

    Python虽然是解释型语言 但从设计之初就已经是一门面向对象的语言 对于Python来说一切皆为对象 正因为如此 在Python中创建一个类和对象是很容易的 当然如果习惯面向过程或者函数的写法也是可以的 Python并不做硬性的限制 Py
  • python连接sqlsever_使用Python连接到Microsoft SQL Server

    我试图通过python连接到SQL以在Microsoft SQL服务器上的某些SQL数据库上运行一些查询 从我的在线研究和在这个论坛上 最有前途的图书馆似乎是pyodbc 所以我做了以下代码 import pyodbc conn pyodb
  • 【C#学习笔记】Hello World

    using System namespace ConsoleApplication class Program static void Main string args Console Write Hello World Console R
  • Class.forName()用法详解

    一 CLASS类概念 Class也是一个Java类 保存的是与之对应Java类的meta信息 元信息 用来描述这个类的结构 比如描述一个类有哪些成员 有哪些方法等 一般在反射中使用 详细解释 Java 源程序 java 文件 在经过 Jav
  • mysql 查询不出结果_mysql 执行查询SQL 一直执行不出结果

    今天执行一个mysql 语句 一直在 执行 执行了5分钟了 还是没有出来结果 每个组织下包括 同级或者下级的 注册店铺数 查询 历史每一天的每个组织下的当天存在的门店数 select dt time startDate o brand id
  • Spring Cloud 序列化和反序列化过程定制(Jackson)

    现在都是基于Spring Cloud Feign进行微服务的调用 并且序列化的过程都封装完成的 只是自己可以定制序列化的方式 但是为了调用的时候能方便的找到问题所在等 基本都会使用json Jackson等 方式的序列化 虽然性能比较差 但
  • 学习笔记-弗洛伊德算法

    弗洛伊德算法解决最短路径问题 弗洛伊德算法和迪杰斯特拉算法都可以求解最短路径的问题 但区别是迪杰斯特拉会求出某个顶点到其他顶点的最短路径 而弗洛伊德算法会求出各个顶点到各个顶点的最短路径 最终结果采用一个二维表表示 而迪杰斯特拉算法只需要用
  • 文件读写的并发操作分析

    前言 涉及到多进程 线程间对文件的并发读写 首先说明一下比较常见的多进程读写方法是在保证数据不混乱的前提下 让某一个进程专门负责写该文件 其它进程负责往该进程发消息 通常在日志系统中 开启一个专门的进程 线程进行文件的写操作 其他进程 线程
  • Windows下用pip安装lib时报错的简单解决思路

    今天在Windows下用pip尝试安装Python爬虫库Scrapy 但是安装的时候报错 不过看命令行里也能运行scrapy命令 以为没问题 结果写了个简单爬虫 不停地报各种错 怀疑可能是这个系统中的pip版本问题 想了想 可以先重装pip
  • 操作系统中的硬链接和符号链接的不同

    硬链接和符号链接 这里没有介绍它们的功能和优点缺点 太多博客已经写过了 主要是解释了它们的原理 出现硬链接和符号链接的原因 我们需要共享文件 如果一个共享文件同时出现在属于不同用户的不同目录下 工作起来就会很方便 但是 怎么解决不同用户下对