目录 c语言文件操作: linux文件系统调用: open: 标志位传参: 虚拟文件系统: write: close: 跨平台性: c语言文件操作: 先来简单回顾一下c语言的文件操作,...linux文件系统调用: 在linux中,我们还可以使用系统调用来对文件进行修改,我们来认识几个系统调用接口: open: 我们先在linux下查一下这个函数的系统调用手册...虚拟文件系统: 回到open函数,可以注意到之前的代码,open函数有一个返回值,这个返回值是这个文件的文件标识符,一个进程,可能会打开很多文件,当一个文件被打开会创建一个struct files来描述这个文件...这套文件系统被称为虚拟文件系统 。 所以我们的操作系统在对文件进行操作时,只认文件描述符fd!!! write: 这里传fd的作用,想必不需要我多讲了,这个函数功能应该很明了了。...open和文件描述符,因为linux只认文件描述符。
1 前言 之前我们学习了 操作系统中文件操作的系统调用接口 了解了文件描述符 重定向的使用与底层原理 了解什么是缓冲区 但是这些都是文件被进程打开后才有的操作,那么其余文件呢???...(如何管理磁盘文件) 5.1 了解文件系统 有了上面的线性大地址,我们就可以开始构建出文件系统了。...在每个分区内部分组,然后写入文件系统的管理数据,称之为格式化!!! Linux 文件系统特定: 文件属性 与 文件内容 分开存储。...GDT(Group Descriptor Table):块组描述符,描述块组属性信息:块多大,有多少个Datablock,使用了多少个… 其本质是管理字块的部分 超级块(Super Block):存放文件系统...而Linux系统会进行路径的缓存,来方便我们的寻找工作。 我们一般使用的云服务器会有一个虚拟磁盘vda,系统中会有许多分区。
Linux是一个基于Unix的操作系统,具有强大的文件系统功能。Linux文件系统是在硬盘上组织和存储数据的一种结构,通过文件系统可以管理文件、目录、权限等信息。...在Linux中,文件系统被组织成一个树形结构,称为文件系统层次结构(Filesystem Hierarchy Standard,FHS),该标准规定了Linux操作系统中各级目录的名称和用途,使得Linux...根目录 根目录(/)是Linux文件系统中的最顶层目录,所有其他的目录和文件都是从根目录开始构建的。在根目录下可以存放各种文件和目录,如用户目录、系统文件、配置文件等。.../proc /proc目录是Linux系统中一个特殊的目录,用于提供进程和系统信息的虚拟文件系统。.../mnt /mnt目录是Linux系统中用于挂载文件系统的目录,通过挂载可以将其他文件系统的内容挂载到/mnt目录下,使得这些文件系统可以被访问。
Linux 文件系统是 Linux 操作系统中的重要组成部分,它是文件和目录的组织方式,为用户提供了一个良好的管理和访问文件的方式。...Linux 文件系统具有以下特点:一切皆文件:在 Linux 文件系统中,一切都被视为文件,包括硬件设备、目录、文件、管道等等。这种一切皆文件的思想使得 Linux 文件系统非常灵活。...Linux 文件系统层次结构Linux 文件系统层次结构定义了一组标准目录和文件,使得用户和程序员可以更容易地找到和管理文件。这些目录和文件通常被存储在根目录下。...Linux 文件系统格式Linux 文件系统可以使用多种格式来存储数据,包括 ext2、ext3、ext4、ReiserFS、XFS等。...以下是一些常见的 Linux 文件系统格式:ext2:是 Linux 文件系统的最早版本,它是一个简单的文件系统,不支持日志和数据恢复功能。
Linux文件系统 在Linux系统中所有的设备都统称为文件,所以同样必须要去学习下linux文件系统到底是何物??? 进入系统后我们使用命令ls -ll 就可以查看根目录下所有文件的信息 ?...二进制文件:linux中可执行文件(命令) ? 数据格式文件(一种特殊的文件 data) ? 2、d目录文件 ls -ld 可以显示所有目录文件 3、b块设备文件 ?...二:文件的扩展名 同样linux系统中的文件也有扩展名,不过意义不大,只是为了区分不同的文件 linux中常见的扩展名类型有以下几种: 1、.tar .tar.gz .tgz .zip 这类表示压缩文件...Inode:索引节点,linux中存储设备或分区被格式化为文件系统后,一般都会分成二个部分,第一部分就是inode,第二部分为block,inode存储的是文件的属性信息,我们可以使用ls -i查看Inode
文件系统 磁盘 磁盘的物理结构 磁盘的储存结构 磁盘的逻辑结构 文件系统 分治 inode与数据块 软硬链接 什么是软硬连接 文件与引用计数 文件的三大时间 动静态库 什么是库 库的使用 静态库...Super Block:超级块对象,保存的是整个文件系统的信息。 如果想清空哪个盘里面的所有数据内容,其实就相当于重写文件系统。一个磁盘,第一步是分区,第二部就是格式化,也就是写入文件系统。...文件系统的信息有分区的使用状态,分区的每个组的状态和信息。 既然这么重要,为何放在这里呢?其实在大部分文件系统中,块组前几个开头就是Super Block,这就相当于备份。...inode与数据块 文件 = 内容 + 属性 Linux中,文件的属性和内容是分批存储的。 保存文件属性的叫inode块:具体大小跟文件系统的版本有关,我的是ext3,128字节。...Group Descriptor Table:块组描述表,对应分组的宏观属性信息。 在查找一个文件的时候统一用的是inode编号,它可以跨组的,不同的组里面是不同的,但是不能跨分区。
一、Linux文件系统 1.创建 int creat(const char *filename,mode_t mode) 参数mode是存储文件的权限 2.打开 int open(const char*...SEEK_CUR:相对文件读写指针的当前位置 SEEK_END:相对文件末尾 offset可取负值 lseek(fd,0,SEEK_END)文件的返回值长度 5.关闭 int close(int fd) 二、C库文件系统
Linux 文件系统 操作系统中,用来管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。...RAW RAW文件系统是一种磁盘未经处理或者未格式化产生的文件系统。...一般来说有这几种可能造成正常文件系统变成RAW文件系统: 没有格式化 格式化中途取消 硬盘出现坏道 硬盘出现不可预知的错误 EXT EXT是扩展文件系统,目前最新的版本是5.0....HFS(+) 苹果电脑上的文件系统。 Linux里的文件系统 不同于Windows系统有盘符的概念(C盘、D盘等),Linux里只有一个盘符,是从 " / " 开始的,只有它是没有上级目录的。.../media Linux系统自动识别的一些设备,比如U盘、光驱等,当识别后,linux会把识别的设备挂载到这个目录下。
进程是操作系统种调度的实体,对进程拥有资源的描述称为进程控制块(PCB, Process Contrl Block)。...通过 task_struct 描述进程 内核里,通过 task_struct 结构体来描述一个进程,称为进程描述符 (process descriptor),它保存着支撑一个进程正常运行的所有信息。...task_struct 结构体内容太多,这里只列出部分成员变量,感兴趣的读者可以去源码 include/linux/sched.h头文件查看。...将 init_task 进程描述符地址赋值给 x5,并保存到 sp_el0。...下面再看下 init_thread_union 和 init_task 的定义: #include/linux/sched/task.h extern union thread_union init_thread_union
1、文件目录结构 /:是Linux系统的根目录 /bin:存放用户经常使用的命令 /boot:启动加载程序的静态文件 /dev:设备文件目录,不能单独分区 /etc:系统配置文件目录 /home:普通用户的家目录.../opt:存放第三方软件服务 /proc:伪文件系统,内核映射文件,不能单独分区 /srv: 用来存储本机提供的服务或数据 /sys:伪文件系统,跟硬件设备相关的属性映射文件,不能单独分区 注意: /...etc,/bin,/sbin,lib目录存放的是系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在跟文件系统的分区上 /usr/bin、/usr/sbin、/usr/lib提供操作系统核心功能...,/usr可以单独分区 /usr/local目录下的内容都是第三方软件,建议单独分区 2、绝对路径 绝对路径是指从根目录开始描述的路径,也就是从/开始。...例如:/etc/sysconfig/network-scripts/ifcfg-ens33 3、相对路径 相对路径是指从当前位置开始描述的路径。
早在 1996 年,在真正理解文件系统的结构之前,我就学会了如何在我崭新的 Linux 上安装软件。这是一个问题,但对程序来说不是大问题,因为即使我不知道实际的可执行文件在哪里,它们也会神奇地工作。...如果你已经使用你的系统有一段时间了,这可能需要一段时间,因为即使你自己还没有生成很多文件,Linux 系统及其应用程序总是在记录、缓存和存储各种临时文件。文件系统中的条目数量会快速增长。...大多数 Linux 发行版都会向你显示与你在上图中看到的相同或非常类似的结构。 这意味着,即使你现在感到困惑,掌握这一点,你将掌握大部分(如果不是全部的话)全世界的 Linux 文件系统。...总结 尽管 Linux 发行版之间存在细微差别,但它们的文件系统的布局非常相似。 你可以这么说:一旦你了解一个,你就会都了解了。 了解文件系统的最好方法就是探索它。...很快你就会发现 Linux 文件系统及其布局的确很有意义,并且你会直观地知道在哪里可以找到应用程序,文档和其他资源。
而每个分区,都可以用以下的区域来表示 Boot Block: 是文件系统中的一个特殊块,位于文件系统的起始位置。...2.4 GDT和超级块 GDT(Group Descriptor Table):块组描述符,描述块组属性信息(该block组的分配信息和使用情况)。...确实会的,所以Linux提供了dentry缓存,将常用文件的inode信息缓存起来!! dentry缓存,简称dcache,是Linux为了提高目录项对象的处理效率而设计的。...问题3:为什么Linux不允许对目录建立硬链接??(重点!!) ...伙伴系统之伙伴系统概述--Linux内存管理 - 知乎 (zhihu.com)
我们今天的介绍顺序是,先简单搭建起来对文件系统的理解,再深挖细节问题。 那么,进入今日的话题吧!...简单理解文件系统 对于文件系统框架的搭建,我们可以先从这个指令进入: 即stat指令,查看文件的信息,这个信息,是文件的属性?还是文件的内容呢?...并且,我们知道,文件 = 内容 + 属性,对于文件内容属性而言,Linux特定的文件系统是将文件的属性和内容分开存储的,这点我们先记住。对于Data Blocks我们就探讨到这里。...对于剩下的两个,比如GDT,也就是Group Descriptor table,翻译过来叫做块组描述符,描述的是块组的属性信息,其实就是这个块的信息了,这更加体现了一种分治的思想。...我们先不管,我们只需要知道,Linux会缓存路径信息,从而我们可以通过文件 目录来修改对应内容。
Linux 中最普遍使用的文件系统是 Ext2,它也是 Linux 土生土长的文件系统。...为了提高目录访问效率,Linux 还提供了表达路径与 inode 对应关系的 dentry 结构。它描述了路径信息并连接到节点 inode,它包括各种目录信息,还指向了 inode 和超级块。...4、文件系统在内核中的表示 内核数据结构 Linux内核的VFS子系统可以图示如下: 文件与IO: 每个进程在PCB(Process Control Block)中都保存着一份文件描述符表,文件描述符就是这个表的索引...,每个表项都有一个指向已打开文件的指针,现在我们明确一下:已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体。...比如在用户程序中read一个文件描述符,read通过系统调用进入内核,然后找到这个文件描述符所指向的file结构体,找到file结构体所指向的file_operations结构体,调用它的read成员所指向的内核函数以完成用户请求
文件系统 文件系统是操作系统用于明确磁盘或者分区上相关文件的方法和数据结构,通俗的说法就是在磁盘上组织文件的方法。...linux有很多不同的文件系统,例如ext2、ext3、ext4、zfs、iso9660、vfat、msdos等等。...文件系统虽然多种多样,但是大部分linux系统都具有类似的通用结构,包括超级块(superblock)、i节点(inode)、数据块(datablock)、目录块(directory block)等。...在完成磁盘分区后,需要进行创建文件系统的操作,最后将分区挂载到系统中的某个挂载点才能使用。 创建文件系统 创建文件系统可以利用fdisk来创建。如果系统已经创建好了文件,则显示的是创建好的文件系统。...利用创建文件系统的格式,利用 mkfs.ext3 /dev/sdb1创建新的文件系统。其中ext3是文件系统格式。
在 Linux 系统中,除了普通的文件系统外,还存在一些伪文件系统,也称为虚拟文件系统或特殊文件系统。...这些文件系统不是真正的物理存储设备,而是一些特殊的文件和目录,它们提供了对系统资源的访问接口,如内存、进程、网络等。本文将介绍常见的 Linux 伪文件系统及其作用。...为了解决这个问题,Linux 内核引入了 /run 文件系统,它是一个临时文件系统,用于存储系统运行时的各种信息,如进程 PID 文件、服务套接字文件等。...为了避免将这些临时文件放在普通的文件系统中,占用过多的存储空间,而且会对文件系统的性能产生影响,Linux 系统引入了 /tmp 文件系统。...为了提高共享内存的读写性能,Linux 系统引入了 /dev/shm 文件系统,它使用内存作为存储介质,具有高速的读写性能和自动清空的特点。
一个 overlay 文件系统包含两个文件系统,一个 upper 文件系统和一个 lower 文件系统,是一种新型的联合文件系统。...overlay是“覆盖…上面”的意思,overlay文件系统则表示一个文件系统覆盖在另一个文件系统上面。 为了更好的展示 overlay 文件系统的原理,现新构建一个overlay文件系统。...文件树结构如下: 1、在一个支持 overlay文件系统的 Linux (内核3.18以上)的操作系统上一个同级目录内(如/root下)创建四个文件目录 lower 、upper 、merged 、work...Filesystem Size Used Avail Use% Mounted on overlay 20G 13G 7.8G 62% /root /merged 作用 Linux Overlay文件系统的作用是提供一种轻量级的文件系统层叠机制...总之,Linux Overlay文件系统的作用是提供了一种灵活且高效的文件系统层叠机制,可以在保持只读文件系统的完整性的同时,允许在可读写文件系统上进行修改和添加文件。
这个过程就叫建立文件系统 种类: 1 ext2与ext3是linux专门设计的硬盘文件系统一般称为扩展文件系统。Ext3增加了日志记录功能。...fdisk 分区在终端会显示打印信息 mkfs.ext4 /dev/XXX sfdisk [options] device 可以直接执行分区 2 swap文件系统 用于linux的交换分区,用来提供虚拟内存...由操作系统自行管理 3 vfat 是linux对DOS,windows系统下的FAT文件系统的一个统称 4 NFS文件系统 即网络文件系统,用于系统间通过网络进行文件共享, 不能建立在flash上,...这些特点使JFFS2文件系统成为目前Flash设备上最流行的文件系统格式,它的缺点就是当文件系统已满或接近满时,JFFS2运行会变慢,这主要是因为碎片收集的问题 它是在闪存上使用非常广泛的读/写文件系统...此外,YAFFS自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件系统操作。
Linux启动的时候,首先挂载的是根文件系统,之后可以自动或者手动挂载其他文件系统,这些文件系统要挂载到挂载点上,与虚拟文件系统和通用块设备层建立联系。...操作系统角度 文件系统的层次 在上述中,阐述挂载的时候说到一个概念,就是说 Linux在启动的时候,首先挂载的是根文件系统,然后再自动或者手动挂载其他文件系统,这也是Linux中支持不同文件系统的原因,...说到这里,就有必要提到Linux的虚拟文件系统了,再叙述它的概念之前,我们先以宏观的角度来看一下 Linux下的文件系统的一个结构: [image-20210606105240091] 由上图可以知道,...在打开了一个文件后,操作系统会跟踪进程打开的所有文件,也就是说操作系统为每个进程维护一个打开文件表,文件表里的每一项代表的是文件描述符,所以说文件描述符是打开文件的标识。...中所有文件都有一个唯一与之对应的索引节点,索引节点记录了文件的元数据,操作系统不是通过文件名,而是通过索引节点来管理文件,用目录项来描述文件之间的关系。
Linux操作系统中有一句话叫做“一切皆文件”,接下来我们就用一篇文章研究下Linux的文件系统!...1 文件系统概述Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。...在Linux中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上。一套Linux系统支持若干物理盘,每个物理盘可定义一个或者多个文件系统。...利用根节点,可以把一个文件系统挂在另一个文件系统的非叶节点上;数据区:用于存放文件数据或者管理数据。...以上内容来自百度百科:https://baike.baidu.com/item/Linux%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/109867472 Linux中文件系统层级关系
领取专属 10元无门槛券
手把手带您无忧上云