Linux的ext4文件系统学习笔记

补充:设备独立性

Linux中,设备驱动以文件形式表示,用户操作逻辑设备就是操作文件,而不是具体的物理设备,也就是说,用户操作的是功能,是黑箱,而不是真正的实体。

APP操作的都是逻辑设备,而逻辑设备到物理设备,是系统自动完成。

就像虚拟地址由MMU转换为物理地址。

文件系统、分区和挂载

Linux有一个完整的文件系统,文件系统下的不同目录,可以分布在不同的磁盘分区,而联系的方式就是挂载

同时,挂载方式也比较自由,比如根目录 /挂载在分区1,然后根目录下的子目录 /home可以挂载在分区2.

在这里插入图片描述

ls与du命令查看文件大小有差异的原因

一般来说,du命令查看的文件大小,是大于等于ls查看的,而我们日常查看的文件实际大小,都是ls命令。

ls查看的是文件的实际大小,而du查看的是分配给文件的内存大小

这为什么有区别呢?因为分配给文件的时候,是一块一块分配的,而不是一个字节一个字节分配的,这也就是意味着,如果没有占满一块,也需要分配一块,这也就是ls和du的差异来源。

通常来说,我们用的一块是4KB,因此du查看的都是4k的整数倍。

在这里插入图片描述
我们可以看到其实际大小小于4k,但是占用了4k的空间。

The du command shows how much disk space is used for the given file.

In contrast, the ls command shows the size of the file. The space used can be larger than the file size, depending on the filesystem used.

inode & datablock

再进一步解释一下,Linux的ext4文件系统,实际存储文件的时候,就像火车头一样,使用

  • 车头:1个i节点
  • 车厢:多个数据块

然后将车头、车厢都勾起来,就能够存储一个文件的基本信息和数据信息了。

在这里插入图片描述
其中,inode存储的是橘色部分的信息,而文件名存储在当前文件夹的父文件夹(文件)的inode中,也就意味着,对于文件夹结点,它存储了这些基本信息,还存储了其子目录的文件名。

而文件内的数据,则存储在datablock中。

在这里插入图片描述

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

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

相关文章

html基础元素案例笔记(1)

这是代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>CSS FlexBox test</title><link rel"stylesheet" type"text/css" href"./css/index.css"></head><body>…

C语言中的struct和union区别

参考&#xff1a;Difference between Structure and Union in C 二者区别 struct 这里不做详细说明&#xff0c;因为参考链接中都写明了。只做一些重点强调。 struct中声明的变量&#xff0c;在分配空间的时候&#xff0c;struct结构空间大小&#xff0c;大于等于其内部所有…

C语言多文件编译链接为1个可执行文件的简单原理

参考1&#xff1a;C header files and compilation/linking 参考2&#xff1a;计算机系统基础&#xff08;一&#xff09;袁春风 &#xff08;符号链接部分&#xff09; 我们现在有一个简单的工程&#xff0c;有这么几个文件 1.t1.h extern int x;void tt();t1.c #include &…

Java读写二维数组到文件

1. 创建文件 使用了File类中的createrNewFile方法。 public static boolean createFile(String filename){try{File file new File(filename);file.createNewFile();return true;} catch (IOException e) {e.printStackTrace();return false;}}查阅文档可知&#xff0c;若文件…

如何掌握java API的方法

如何掌握方法的使用&#xff1f; 查文档文档不一定看得懂&#xff0c;亲自试一试就知道了&#xff01; 这俩方法没啥好说的&#xff0c;自己体会即可&#xff01; 注意&#xff01;先看原版英文文档&#xff0c;然后自己试一试&#xff0c;就能更加理解了&#xff0c;然后&a…

Leetcode1512. 好数对的数目 抽出本质原型 利用范围条件

解法1&#xff1a;暴力枚举 class Solution {public int numIdenticalPairs(int[] nums) {int count 0;for(int i 0;i < nums.length; i){for(int j i 1; j < nums.length; j){if(nums[i] nums[j])count;}}return count;} }没啥可说的&#xff0c;就是小学数学问题…

leetcode面试题 10.01. 合并排序的数组

直接排序 直接使用Java已有的方法进行排序&#xff0c;这一招…大意了&#xff01; 这题简单&#xff0c;就是个基本的排序&#xff0c;后面难题&#xff0c;可能这只是一小步&#xff0c;内个时候直接用排序算法比较合适&#xff0c;这个不合适。。 class Solution {public…

IA-32 Architecture: the function of segment regitster(CS DS SS ES)

对于IA-32架构&#xff0c;与8086不同&#xff0c;段寄存器不再是像以前一样&#xff0c;直接作为段基址&#xff0c;因为32位的寄存器直接就可以表示4GB大小&#xff0c;不需要再偏移&#xff0c;因此段寄存器的含义也发生了相应的变化。 在IA-32架构里&#xff0c;段寄存器是…

x86异常处理与中断机制(1)概述中断的来源和处理方式

参考《计算机组成》&#xff08;北京大学 MOOC&#xff09; 1 异常与中断的来源&#xff08;为什么需要中断&#xff09; 首先&#xff0c;说明一下异常和中断这两个概念。 它们两个唯一的区别&#xff0c;就是&#xff0c;没有什么区别。只是不同的地方不同的时间不同的人的…

【C language】typedef的使用:结构体、基本数据类型、数组

typedef基本数据类型 typedef int a; a abc;后面的a abc就等价于int abc typedef结构体 typedef struct a {int a;int b; } abc;abc aaa;对于上述&#xff0c;abc aaa;就等价于struct a aaa; 简而言之&#xff0c;typedef的本质&#xff0c;就是构建等价关系。 第一个例…

【C language】动态数组的创建和使用

在C语言中&#xff0c;使用malloc函数创建动态数组&#xff0c;使用一个指针指向它&#xff0c;使用下标进行访问。 unsigned long *a (unsigned long *)malloc(2 * sizeof(int)); a[0] 1000; a[1] 2000; printf("%d %d\n", a[0], a[1]); free(a);上述例子&…

x86异常处理与中断机制(2)中断向量表

补充&#xff1a;事件不仅包含中断和异常&#xff0c;还包含系统调用&#xff0c;这个属于用户主动请求的事件。 上一节&#xff0c;只有一个溢出异常&#xff0c;那么&#xff0c;如果很多异常、中断呢&#xff1f;&#xff08;中断向量表&#xff09; 另外&#xff0c;之前0…

x86异常处理与中断机制(3)中断处理过程

上一节讲完了根据中断类型号找中断服务程序的过程&#xff0c;现在着重说明一下更加完整的中断处理过程吧。 本节以8086时代的中断处理过程为例进行说明&#xff0c;主要分两大部分 硬件处理软件处理 需要注意&#xff0c;这不是绝对的&#xff0c;得看实际情况&#xff0c;…

Linux 0.11 内核解析:中断相关(1)asm.s文件中断处理分析

0 源代码 有两个版本的&#xff0c;一个是带中文注释&#xff0c;Intel格式的&#xff1b;一个是不带注释是AT&T格式的。 Linux 0.11 中文注释版 Linux 0.11 源码&#xff0c;基于《Linux内核完全注释》赵炯 1 asm.s 文件 我们先假设该文件处理的中断是无特权过渡的情况…

【精华文】C语言结构体特殊情况分析:结构体指针 / 基本数据类型指针,指向其他结构体

参考链接&#xff1a;Structure pointer pointing to different structure instance 注&#xff1a;可以查看此篇的问题和唯一的回复&#xff0c;那是相对正确的&#xff0c;不要看comment&#xff0c;有很多错误。 我是拒绝分析这种问题的&#xff0c;因为似乎没有人会这么乱用…

enum in c language

今天说说C语言中的枚举。 参考&#xff1a;Enumeration (or enum) in C 1 定义 定义一个枚举类型很容易&#xff1a; enum aa { a1, a2, a3 };这里 enum是关键字aa是枚举变量&#xff0c;也就是我们自定义类型a1,a2,a3是枚举成员 然后怎么使用呢&#xff1f; 首先&#…

信号量SIGCHLD的使用,如何让父进程得知子进程执行结束,如何让父进程区分多个子进程的结束

本教程基于 Ubuntu 20.10 gcc 10.2.0. 示例程序如果不能正常编译和执行&#xff0c;说明您系统和工具版本与我的不匹配&#xff0c;请自行查阅资料。 0 概述 先给出该信号的描述&#xff1a; SignalValueDescriptionSIGCHLD17Child status has changed (POSIX). Signal sent …

使用gdb调试多进程程序、同时调试父进程和子进程

参考: [1] GDB debugging multi-process programs [2] Debugging programs with multiple processes 根据这两篇参考链接&#xff0c;完全可以实现使用gdb同时调试父进程和子进程。 接下来说明一下可能遇到的坑 gdb8.1版本有bug&#xff0c;设置完set detach-fork-on off&…

Linux安装Ncurses库

参考&#xff1a;How To Install Ncurses Library In Linux 针对Ubuntu说明一下&#xff1a; wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.2.tar.gz&#xff0c;至于最新版本&#xff0c;自己看官网&#xff0c;修改一下版本号即可。tar xzf ncurses-6.2.tar.gzcd nc…

gdb 10.2的安装

参考 [1] GDB-10.2 [2] README for GDB release 个人系统 Ubuntu20.10。 注意gdb10.2需要c11语法&#xff0c;需要安装g 下载安装包wget https://ftp.gnu.org/gnu/gdb/gdb-10.2.tar.xz解压缩tar -xvzf gdb-10.2.tar.xz进入解压之后的目录mkdir buildcd build配置&#xff0c;…