LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

Linux中一切皆文件,从分区和目录结构说起

2023年8月2日 296点热度

文件系统定义

在计算机出现之前似乎就有文件系统的概念了,此时的文件系统指的是用于管理(储存和检索)纸质文件的系统,而在计算机发明以后,文件系统逐步指的是管理储存介质的系统,它通过简单的插口给用户,便捷用户使用储存设备。

在学习Linux的时侯,我们一般会见到这样一句话,Linux中一切皆文件,也就是说,不管是普通的文件和目录,还是包括块设备、管道、socket等,也都是交给文件系统去管理的。文件系统是操作系统中负责管理持久数据的子系统,换言之,也就是负责把用户的文件存到c盘硬件中,它是一个c盘上的目录结构,是一个组织文件的方式,但是在一个c盘上,可以包含一个或则多个文件系统。

下边,我们从用户的角度和操作系统的角度两个层面来探讨文件系统的相关概念。

用户角度要认识Linux的文件系统,从分区和目录结构说起,首先我们先来看下windows,这是大多数人使用最多的一个操作系统,当打开我的笔记本的时侯,映入眼睑的是大致是这样一个一张图:

image-253663也就是说在windows下,c盘被分为了C盘,D盘。。。。这样的一个目录结构。那对于Linux呢,它的目录结构是长啥样,它有一个根目录,而系统下的所有目录都是从根目录分离出去的linux,我们可以在Ubuntu终端运行如下命令来查看Linux的目录结构。

tree-L1/

上述中,tree表示将当前目录以树的结构展示,-L表示的是要显示当目录的第几层,1表示的是要显示到第一层,最后面的/表示的也就是Linux的根目录,也就是说当前命令就是显示根目录下第一层目录的信息,最终得到的结果如下所示:

image-251803为了更好地理解每位目录所代表的意思,我们看如下所示的内容:

|----bin---------------->文件系统的起始位置,称之为根

|----boot---------------->储存系统启动时读取的文件,包括系统核心文件

|----dev---------------->储存设备文件插口,如复印机,硬碟等外围设备

|----etc---------------->储存与系统设置和管理相关的文件,如用户帐号、密码等

||

|----home----------------->储存用户专属目录

|----lib----------------->储存一些共享的函数库

|----misc----------------->一个空目录,供管理员储存公共杂物

|----proc----------------->储存系统核心和执行程序之间的信息

|----root----------------->系统管理员(超级用户)专用目录

|----sbin----------------->与/bin类似,储存用于系统引导和管理命令,一般供root使用

|----tmp----------------->临时目录,供任何用户储存临时文件

|----usr----------------->此目录包含许多子目录,拿来储存系统命令和程序等信息

|----var----------------->储存常常变动的文件,如日志文件,临时文件,电子邮箱

说到这,就有必要再说一下Linux下的路径问题了,在Linux中,Linux的路径分为绝对路径和相对路径

说完了路径,接出来要表述的就是Linux的文件类型的,Linux内一切皆文件,这么对于Linux来说,其具有什么文件类型呢,其主要有如下四种:

最后,在平常使用操作系统的时侯,可能会涉及到挂载的操作,那挂载是哪些意思呢?Linux启动的时侯,首先挂载的是根文件系统,然后可以手动或则自动挂载其他文件系统,这种文件系统要挂载到挂载点上,与虚拟文件系统和通用块设备层构建联系。

挂载,指的就是将设备文件中的顶尖目录联接到Linux根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。

linux创建一个只读用户_linux系统创建只读用户_linux只读权限

上述就是基于用户的角度对文件系统进行了一个概述,接出来从操作系统的角度,更进一步地探讨操作系统。

操作系统角度文件系统的层次在上述中,论述挂载的时侯说到一个概念,就是说Linux在启动的时侯,首先挂载的是根文件系统,之后再手动或则自动挂载其他文件系统,这也是Linux中支持不同文件系统的缘由,而支持各类不同文件系统的这些机制又是哪些呢?说到这儿,就有必要提及Linux的虚拟文件系统了,再表述它的概念之前,我们先以宏观的角度来看一下Linux下的文件系统的一个结构:

image-240091由上图可以晓得,整个文件系统体系分为了三个层面,用户层,内核层,硬件层,用户层是通过API通过系统调用调用的方法访问虚拟文件系统。在内核层,我们可以看见虚拟文件系统下联接了各种类型的文件系统,其是对不同的文件系统的具象,为下层应用提供了统一的API插口;上图内核层还有一层是各个文件系统之下的一层,这一层的作用是隐藏了不同硬件设备之间的细节,为内核提供了统一的IO操作插口。下边我们对整个文件系统从下到上对各个层的作用进行一个探讨:

文件的使用上述中,我们介绍了文件系统的层次,这么基于这样一个层次,我们又应当怎样使用文件呢?右图是一个使用文件的流程图:

image-258026与其对应的代码也比较简单:

fd=open(name,flag);/*打开文件*/

...

write(fd,...);/*写数据*/

...

close(fd);/*关掉文件*/

上述就是往一个文件中写数据的步骤,使用open系统调用打开文件,open的参数中包含文件的路径名和文件名,使用write写数据,其中write使用open所返回的文件描述符,使用完文件后,用close系统关掉文件,防止资源的泄漏。

在打开了一个文件后,操作系统会跟踪进程打开的所有文件,也就是说操作系统为每位进程维护一个打开文件表,文件表里的每一项代表的是文件描述符,所以说文件描述符是打开文件的标示。

image-242481操作系统在打开文件表中维护着打开文件的状态和信息:

文件系统的IO类型依据文件系统的读写差别,可以将IO分为四种类型:

此处标准库缓存指的是借助栈、队列等一些数据结构进行的资源调度,而不是页缓存。无论是否是缓冲IO,就会通过系统调用页缓存来降低IO次数

按照是否借助操作系统的页缓存,可以把文件I/O分为直接I/O与非直接I/O

一般,我们的IO都是非直接I/O

按照应用程序是都阻塞自身运行,可以把文件I/O分为阻塞I/O和非阻塞I/O

linux创建一个只读用户_linux系统创建只读用户_linux只读权限

一般情况下I/O都是阻塞的。网路编程中是非阻塞的I/O,用在网路套接字的I/O中

按照是否等待响应结果,把文件分为同步IO和异步IO

文件的储存Linux中所有文件都有一个惟一与之对应的索引节点linux系统创建只读用户,索引节点记录了文件的元数据,操作系统不是通过文件名,而是通过索引节点来管理文件,用目录项来描述文件之间的关系。

索引节点,也被称之为是inode,拿来记录文件的元数据linux系统创建只读用户,元数据就包括:node编号、文件大小、访问权限、修改日期、数据的位置等。

目录项,也被称为dentry,拿来记录文件的名子、索引节点表针及与其他目录项的关联关系。多个关联的目录项,也就构成了文件系统的目录结构。

因而,索引节点相当的于文件的表针,目录项维护着文件的树型关系

下边是文件储存各个部份逻辑关系的一个示意图:

image-257280上图中,超级块拿来储存着整个文件系统的状态linux运维博客,索引节点区拿来储存索引节点,数据块区拿来储存文件的数据,她们之间的关系在图中也很清不仅,就不进行赘言了。

总结Linux是一个很庞大也很优秀的系统,在嵌入式行业也应用广泛,笔者对于Linux的接触不深,这也是近来对于学习Linux文件系统时的一个总结,假如文中出现问题,欢迎诸位及时给我提出来呀,我将不胜感激~

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 存放 操作 文件 目录 系统
最后更新:2023年8月2日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
ARM-Linux应用开发和单片机开发的不同ARM的应用 Linux下如何查看内核信息、发行版信息的信息? 《Linux内核编程》入门篇:降维为繁 Linux网卡驱动安装及配置指南 大专计算机有哪些课程,专业的1对1答疑! SamsungNote2Verizoni605onAndroid在Android系统上安装linux发行版 MPV的高级应用——Ubuntu最佳应用列表里的应用 手机上可以安装一套完整的Linux系统吗? Ubuntu上安装SMplayer.6.10-PPA源在CentOS5.5下安装使用 centos启动图形界面的方法.x1,关闭界面 Linux下进程与线程概念重构 Linux中的十大开源播放器C编写 多进程和多线程的区别,你知道几个? Linux发行版中可用的7款最佳开源视频播放器 Linux系统安装网卡驱动的具体操作流程进行说明 如何在Linux上安装视频播放器installvlc 晚上暴露于蓝光,睡眠质量大打折扣 如何安装便携式WiFi驱动程序?360wifi驱动的教程 CentOS云服务器搭建网站和CentOS搭建DNS解析服务 如何在linux上创建一个用户,减少不必要的沟通成本
嵌入式Linux操作系统学习规划+LINUX路线,主攻江苏电信天翼校园客户端故障指引及解决办法(101)英特尔GMAGMA950显卡驱动程序/WIN8/8.1电信校园网宽带用USB数据线共享给电脑无线上网国防科大开源操作系统:它只是一个吉祥的象征10个常用Linux文本查看命令及其详细说明和使用示例Linux嵌入式系统内核裁剪与定制方法的介绍情况淘宝教育热卖C语言编程开发C++程序设计零基础入门课程从CPU、内存、硬盘、显卡等这些方面安装Linux系统的最低配置Linux通过chkconfig设置开机启动服务创建的几种常见方式(技术分析)Linux多线程的使用与操作系统的区别通常rar命令由一个主命令加若干选项(可选)构成RedHatLinux中自动运行程序中的应用linux 读写文件 关于Linux内核的神秘面纱,你知道几个?使用wget实用程序的有用命令行工具的使用怎么设置linux开机项自启动?方式是怎样的?嵌入式Linux应用层与驱动层要想学习关于Linux内核的交叉编译步骤和方法:步骤、方法STM32嵌入式linux开发流程及应用程序分析-STMlinux下有哪些文件在介绍lsof命令实用用法介绍?
Linux游戏起源于最受欢迎的游戏平台:Steam Linux系统怎么装Window7或XP?绿茶小编用真实案例 WSL2:安装Ubuntu和Windows10双系统的奇妙改变 关于Linux应用程序开机自动启动设置方法- 掌握Linux基础命令-上海怡健医学系统 Linux嵌入式开发的小白最常见的几个问题? 玩转Linux:换个桌面,畅享不同体验! 变量置为昨天的日期,并将其转换为Unix时间戳 Linux系统中用于管理和控制系统服务的强大工具介绍 Linux虚拟机上jdk的安装方法有哪些呢? Windows是最好的操作系统,Ubuntu想(打)引(去)战(吧) Python程序员深度学习的“四大名著”服务很不错 Linux中有一些命令,可以用来替换文件中的内容 玩蛇网推荐图文教程:python列表Linux系统补全输出重定向历史记录 找个Linux,把U盘当硬盘用就可以了 Ubuntu这款这款.10版本镜像文件下载地址获取地址! 1.任务描述现在你已经学会了如何创建一个新用户和删除一个 新手重装win7系统步骤和教程,你知道怎么操作吗 du下所有的文件和文件夹(不含子目录),统计符号链接所指向的大小 如何在Linux系统中使用命令查看Linux发行版版本信息
标签聚合
虚拟机 linux服务器 文件 内核 应用 文件目录 命令 操作 软件 linux系统
书籍
课程
技术群
技术干货大合集↓
  • 2023年10月 / 8篇
  • 2023年9月 / 90篇
  • 2023年8月 / 93篇
  • 2023年7月 / 94篇
  • 2023年6月 / 90篇
  • 2023年5月 / 93篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.