通俗易懂讲解Linux文件系统

合集下载

LINUX文件系统详解

LINUX文件系统详解

LINUX文件系统详解一、物理磁盘到文件系统文件系统是用来存储文件内容、文件属性、和目录。

这些类型的数据如何存储在磁盘块上的呢?unix/linux使用了一个简单的方法。

如图所示.它将磁盘块分为三个部分:1)超级块,文件系统中第一个块被称为超级块。

这个块存放文件系统本身的结构信息。

比如,超级块记录了每个区域的大小,超级块也存放未被使用的磁盘块的信息。

2)I-切点表。

超级块的下一个部分就是i-节点表,第个文件都有一些属性,如文件的大小、文件所有者、和创建时间等,这些性质被记录在一个称为i-节点的结构中。

所有i-节点都有相同的大小,并且i-节点表是这些结构的一个列表,文件系统中每个文件在该表中都有一个i-节点。

3)数据区。

文件系统的第3个部分是数据区。

文件的内容保存在这个区域。

磁盘上所有块的大小都一样。

如果文件包含了超过一个块的内容,则文件内容会存放在多个磁盘块中。

一个较大的文件很容易分布上千个独产的磁盘块中,至于文件系统是如何跟踪这些磁盘块的,在第四节再讲。

二、创建一个文件的过程我们现在知道文件的内容和属性是分开存放的,那么又是如何管理它们的呢。

现在我们以创建一个文件为例来讲解。

在命令行输入命令:$ who > userlist当完成这个命令时。

文件系统中增加了一个存放命令who输出内容的新文件,那么这整个过程到底是怎么回事呢?文件有属性和内容,内核将文件内容存放在数据区,文件属性存放在i-节点,文件名存放在目录。

图2显示了创建一个文件的例子,假如这个新文件要3 个存储块来存放内容。

四个步骤如下:1)存储属性也就是文件属性的存储,内核先找到一块空的i-节点。

图2中。

内核找到i-节点号47。

内核把文件的信息记录其中。

如文件的大小、文件所有者、和创建时间等2)存储数据即文件内容的存储,由于该文件需要3个数据块。

因此内核从自由块的列表中找到3个自由块。

图2中分别为627、200、992,内核缓冲区的第一块数据复制到块627,第二和第三分别复制到200和992.3)记录分配情况,数据保存到了三个数据块中。

简要介绍linux操作系统中的文件系统

简要介绍linux操作系统中的文件系统

简要介绍linux操作系统中的文件系统在Linux 操作系统中,文件系统是操作系统中用于组织和管理文件和目录的重要组成部分。

Linux 支持多种不同的文件系统类型,包括常见的ext2、ext3、ext4、NTFS 等。

Linux 的文件系统采用了类Unix 的文件系统层次结构,整个文件系统被组织为一个树形结构,以根目录(/)为起点。

在该树形结构中,每个文件和目录都有一个唯一的路径名来标识它们的位置,该路径名由根目录开始逐级构建而成。

Linux 中的文件系统还有一个重要特性,即一切都是文件。

不仅文件和目录本身是文件,设备、套接字、管道等也都被当做文件来处理。

这种设计思想使得Linux 的文件系统变得非常灵活和易于管理。

此外,Linux 的文件系统还包括许多特殊的目录和文件,这些目录和文件对于系统的正常运行和管理非常重要。

其中一些重要的目录包括:- /bin:二进制文件目录,存放用户级别的命令和工具;- /boot:Linux 内核和系统引导文件的目录;- /dev:设备文件目录,包含系统中所有的设备文件;- /etc:系统配置文件目录,包含大量的配置文件;- /home:用户家目录的根目录;- /lib:共享库目录,包含系统所需的共享库;- /mnt:一般用于挂载文件系统,例如挂载U 盘等设备;- /proc:虚拟文件系统目录,包含系统运行时的进程信息和其他信息;- /root:管理员(root)的家目录;- /sbin:超级用户级别的命令和工具;- /tmp:临时文件目录,用于存放临时文件;- /usr:包含系统软件、库、文档等的目录树。

总的来说,Linux 文件系统具有良好的层次结构、灵活的设计思想和丰富的特殊目录和文件,这使得Linux 操作系统成为了一个非常强大、安全和可靠的操作系统。

简要介绍linux操作系统中的文件系统

简要介绍linux操作系统中的文件系统

简要介绍linux操作系统中的文件系统
Linux操作系统中的文件系统是指Linux系统中用于管理文件和目录的一种机制。

它是Linux系统中最重要的组成部分之一,也是Linux系统的核心之一。

Linux文件系统的设计是为了提供高效、可靠、安全的文件存储和管理机制。

Linux文件系统采用了一种层次化的目录结构,这种结构类似于树形结构,根目录为“/”,所有的文件和目录都是从根目录开始的。

Linux文件系统中的每个文件和目录都有一个唯一的路径名,这个路径名是由根目录开始的所有目录名和文件名组成的。

Linux文件系统中的文件和目录都有一些特殊的属性,如文件的读、写、执行权限、文件的所有者和所属组等。

这些属性可以通过命令行工具或图形界面工具来进行设置和修改。

Linux文件系统中的文件和目录可以分为两类:普通文件和特殊文件。

普通文件包括文本文件、二进制文件、脚本文件等,而特殊文件包括设备文件、管道文件、符号链接等。

设备文件是Linux文件系统中的一种特殊文件,它用于管理硬件设备,如磁盘、打印机、键盘等。

Linux文件系统中的文件和目录可以通过命令行工具或图形界面工具来进行管理。

常用的命令行工具包括ls、cd、mkdir、rm等,而常用的图形界面工具包括Nautilus、Dolphin等。

Linux操作系统中的文件系统是Linux系统中最重要的组成部分之一,它提供了高效、可靠、安全的文件存储和管理机制,为Linux 系统的稳定性和安全性提供了坚实的基础。

简要介绍linux操作系统中的文件系统

简要介绍linux操作系统中的文件系统

简要介绍linux操作系统中的文件系统Linux操作系统中的文件系统是指用于组织和管理数据的一种结构化方式。

在Linux系统中,文件系统被用来存储文件、目录和其他数据,并提供对这些数据的访问和管理。

Linux操作系统中的文件系统是基于层次结构的。

文件系统的最顶层是根目录(/),所有其他文件和目录都位于根目录下。

根目录下包含了许多子目录,每个子目录又可以包含更多的子目录,形成了一个层次结构。

这种层次结构的设计使得用户可以方便地组织和管理文件和目录。

Linux操作系统支持许多不同类型的文件系统。

常见的文件系统包括Ext4、XFS、Btrfs等。

每种文件系统都有自己的特点和优势,用户可以根据自己的需求选择适合的文件系统。

例如,Ext4是Linux 系统中最常用的文件系统,它提供了高性能和稳定性;而Btrfs则是一种新型的文件系统,支持快照、压缩和数据校验等高级功能。

Linux操作系统中的文件系统还支持许多特性和功能。

例如,Linux 文件系统支持文件权限控制,可以为每个文件和目录设置不同的权限,以保护数据的安全性。

Linux操作系统中的文件系统还支持磁盘配额、磁盘挂载和磁盘格式化等功能。

用户可以通过设置磁盘配额来限制每个用户对磁盘空间的使用;通过挂载磁盘来将外部存储设备连接到文件系统中;通过格式化磁盘来清空磁盘并准备好用于存储数据。

总的来说,Linux操作系统中的文件系统是一个重要的组成部分,它为用户提供了方便的文件和目录管理功能。

通过了解文件系统的特点和功能,用户可以更好地利用Linux系统存储和管理数据。

在日常使用中,用户可以根据自己的需求选择适合的文件系统,并合理地设置文件权限和管理文件链接,以保护数据的安全性和完整性。

linux管理命令和文件系统的概述

linux管理命令和文件系统的概述

linux管理命令和文件系统的概述Linux管理命令和文件系统的概述Linux操作系统是一个强大且灵活的开源操作系统,广泛应用于服务器和嵌入式系统。

为了有效地管理和组织文件系统,Linux提供了一系列管理命令和工具。

本文将逐步介绍这些管理命令和Linux文件系统的基本概述。

一、Linux文件系统的概述Linux文件系统是一种组织和存储文件和目录的方法。

它定义了文件和目录的命名、组织和访问方式。

Linux支持多种文件系统,包括ext2、ext3、ext4、XFS等。

这些文件系统都有不同的特性和用途,常用的是ext4文件系统。

1. 文件和目录的基本概念在Linux中,文件是数据和信息的集合,可以是文本文件、二进制文件或设备文件。

而目录则用于组织和管理文件,类似于文件夹的概念。

2. 文件系统的分层结构Linux文件系统采用分层结构,最顶层是根目录(/),下面是一系列的子目录。

这种分层结构使得文件系统的管理更加有序和灵活。

3. 文件和目录的权限控制Linux文件系统使用权限位来控制对文件和目录的访问权限,包括读(r)、写(w)和执行(x)权限。

文件和目录的权限可以分别被拥有者、所属组和其他用户控制。

4. 文件和目录的扩展属性除了基本的权限控制,Linux文件系统还支持扩展属性。

通过扩展属性,可以为文件或目录附加额外的元数据,如最后访问时间、修改时间或文件所有者等。

二、Linux管理命令的概述为了有效地管理Linux文件系统,我们需要使用一些管理命令和工具。

下面是一些常用的Linux管理命令的概述:1. ls命令ls命令用于列出文件和目录的详细信息。

通过不同的参数,ls命令可以显示文件大小、权限、所有者、修改时间等信息。

2. cd命令cd命令用于切换当前工作目录。

通过cd命令,可以进入指定的目录或返回上一级目录。

如cd /home进入/home目录。

3. pwd命令pwd命令用于显示当前工作目录的路径。

通过pwd命令,可以确认当前所在的目录位置。

简要介绍linux操作系统中的文件系统

简要介绍linux操作系统中的文件系统

简要介绍linux操作系统中的文件系统Linux操作系统中的文件系统是操作系统中的一个重要部分,它负责管理文件的存储和组织。

Linux文件系统采用了一种层次化的结构,以便更有效地管理文件和目录。

本文将介绍Linux文件系统的基本原理和常见文件系统类型。

在Linux中,文件系统是由多个不同的目录和文件组成的层次化结构。

每个文件系统都有一个根目录,所有其他文件和目录都是在根目录下创建的。

文件系统通过使用目录和文件来组织数据,并提供了一种访问和管理这些数据的方法。

在Linux中,文件系统采用了一种类似树状结构的组织方式。

在文件系统的顶层是根目录,用“/”表示。

根目录下包含了各种子目录和文件,每个子目录又可以包含更多的子目录和文件,以此类推。

这种层次化的结构使得用户可以轻松地组织和管理文件。

在Linux中,常见的文件系统类型包括Ext2、Ext3、Ext4、XFS、Btrfs等。

其中,Ext2是最早的Linux文件系统之一,它提供了基本的文件存储和管理功能。

Ext3是Ext2的升级版本,增加了日志功能以提高文件系统的稳定性。

Ext4是Ext3的进一步改进,支持更大的文件和更快的文件系统检查。

XFS是一种高性能的日志文件系统,适用于大型文件和高性能计算环境。

Btrfs是一种新型的文件系统,支持快照、压缩和数据校验等高级功能。

不同的文件系统类型适用于不同的应用场景,用户可以根据需求选择合适的文件系统。

除了常见的文件系统类型之外,Linux还支持网络文件系统(NFS)、分布式文件系统(GFS、Lustre)等。

这些文件系统可以在不同的计算机之间共享文件和数据,为分布式系统提供了便利。

Linux文件系统是Linux操作系统中的一个重要组成部分,它负责管理文件的存储和组织。

通过层次化的结构和不同的文件系统类型,Linux文件系统提供了灵活的文件管理和高性能的存储功能。

用户可以根据需要选择适合的文件系统类型,并合理组织和管理文件,以提高系统的性能和稳定性。

理解Linux的硬盘分区和文件系统

理解Linux的硬盘分区和文件系统

理解Linux的硬盘分区和文件系统Linux操作系统是一种广泛应用于计算机领域的自由与开源的操作系统。

为了在硬盘上高效地存储和管理数据,Linux使用了硬盘分区和文件系统的概念。

通过合理划分硬盘空间以及选择合适的文件系统,用户可以实现对数据的组织和管理。

本文将深入探讨Linux中的硬盘分区和文件系统的相关知识,帮助读者更好地理解和运用。

一、硬盘分区硬盘分区是将物理硬盘划分为一个或多个独立的逻辑区域,每个分区可以独立进行格式化和管理。

这种分区方式可以提高硬盘使用的灵活性和效率。

1.1 主分区和扩展分区在Linux中,硬盘的分区类型主要分为两种:主分区和扩展分区。

主分区最多可以有4个,而扩展分区最多只能有1个。

主分区的大小可以随意划分,而扩展分区则可以被划分为多个逻辑分区。

1.2 虚拟文件系统(VFS)虚拟文件系统(VFS)是Linux中定义的一种文件系统抽象层。

它向上提供了一组统一的文件操作接口,向下支持各种不同的文件系统类型,使得用户可以方便地与各个文件系统进行交互。

通过VFS的支持,用户不必关心底层各个文件系统的细节,可以统一管理和访问不同文件系统中的文件。

二、文件系统文件系统是操作系统用来管理和存储文件的一种机制,它定义了文件在物理介质上的组织形式以及文件操作的规则。

Linux中有多种文件系统可供选择,每种文件系统都有其特点和适用场景。

2.1 ext4文件系统ext4是Linux中最常用的文件系统之一,它是ext3文件系统的后续版本,提供了更高的性能和更大的最大文件系统大小。

ext4支持文件系统日志、面向文件的写入延迟、更高的文件系统容量等功能,适用于大多数常规应用场景。

2.2 XFS文件系统XFS是Linux中另一种常见的文件系统,它特别适用于大型文件和高性能存储环境。

XFS支持快速数据访问、较高的并发性能以及强大的空间管理能力,适合用于服务器环境中处理大量访问和高负载的数据。

2.3 Btrfs文件系统Btrfs是一种新型的文件系统,它具有快照、校验和、压缩等先进功能。

简述linux文件系统的类型

简述linux文件系统的类型

简述linux文件系统的类型Linux文件系统是指Linux操作系统中用来组织和管理文件的一种系统。

Linux文件系统的类型有很多种,每种文件系统都有其特定的特点和用途。

本文将对常见的几种Linux文件系统进行简要介绍。

1. ext文件系统ext文件系统是最早也是最常用的Linux文件系统之一,它是Linux 操作系统的默认文件系统。

ext文件系统有多个版本,包括ext2、ext3和ext4。

其中,ext4是最新版本,具有更好的性能和可靠性。

ext文件系统使用索引节点(inode)来管理文件和目录,支持文件和目录的权限控制、日志功能以及快速文件系统检查等特性。

由于其可靠性和稳定性,ext文件系统常被用于服务器和桌面应用。

2. XFS文件系统XFS文件系统是一种高性能的Linux文件系统,最早由SGI开发。

XFS文件系统采用了B+树来组织和管理文件和目录,具有较高的扩展性和可靠性。

它支持大容量存储、高并发访问和快速文件系统检查等特性,适用于大规模数据存储和高性能计算等场景。

XFS文件系统广泛应用于企业级服务器和大型数据库等领域。

3. btrfs文件系统btrfs文件系统是一种新型的Linux文件系统,它的设计目标是提供高性能、高可靠性和高可扩展性。

btrfs文件系统支持快照、压缩、在线扩容和数据校验等功能,能够有效地保护数据的完整性和安全性。

btrfs文件系统还支持RAID和数据镜像等高级特性,可以提供更好的数据冗余和故障恢复能力。

btrfs文件系统逐渐成为Linux发行版中的重要选择,但在生产环境中仍需谨慎使用。

4. ZFS文件系统ZFS文件系统是由Sun Microsystems开发的一种先进的文件系统,现在由Oracle维护。

ZFS文件系统采用了复制写(Copy-on-write)技术和存储池(Storage Pool)的概念,具有高度的可靠性和可扩展性。

它支持快照、压缩、数据校验、数据恢复以及自动存储池管理等功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux 文件系统基本概念Linux 在最初的设i|•是MINIX1文件系统,它只支持14字节的文件名, 它的最大文件只支持到64MBo 在MINIX 1之后的文件系统是exl 文件系统。

ext 系统相较于MINIX 1来说,在支持字节大小和文件大小上均有很大提升, 但是ext 的速度仍没有MINIX 1快,于是,ext 2被开发出来,它能够支持长 文件名和大文件,而且具有比MINIX 1更好的性能。

这使他成为Linux 的主 要文件系统。

只不过Linux 会使用VFS 曾支持多种文件系统。

在Linux 链接 时,用户可以动态的将不同的文件系统挂载倒VFS 上。

Linux 中的文件是一个任意长度的字节序列,Linux 中的文件可以包含任 意信息,比如ASCII 码、二进制文件和其他类型的文件是不加区分的。

为了方便起见,文件可以被组织在一个U 录中,U 录存储成文件的形式在 很大程度上可以作为文件处理。

U 录可以有子U 录,这样形成有层次的文件系 统,Linux 系统下面的根U 录是/,它通常包含了多个子U 录。

字符/还用于对 U 录名进行区分,例如/usr/cxuan 表示的就是根目录下面的usr tl 录,其中有 一个叫做cxuan 的子U 录。

下面我们介绍一下Linux 系统根口录下面的U 录名• /bin,它是巫要的二进制应用程序,包含二进制文件,系统的所有用户使用的命 令都在这里• /boot,启动包含引导加载程序的相关文件• /dev.包含设备文件,终端文件,USB 或者连接到系统的任何设备• /etc,配置文件,启动脚本等,包含所有程序所需要的配置文件,也包含了启动 /停止单个应用程序的启动和关闭shell 脚本• /home,本地主要路径,所有用户用home U 录存储个人信息• /lib,系统库文件,包含支持位于/bin 和/sbin 下的二进制库文件• /lost+found,在根U 录下提供一个遗失+査找系统,必须在root 用户下才能査 看当前U 录下的内容• /media,挂载可移动介质• /mnt,挂载文件系统• /opt,提供一个可选的应用程序安装U 录• /proc.特殊的动态U 录,用于维护系统信息和状态,包括当前运行中进程信息 root 用户的主要U 录文件夹巫要的二进制系统文件系统和用户创建的临时文件,系统重启时,这个U 录下的文件都会被删/usr,包含绝大多数用户都能访问的应用程序和文件 /var,经常变化的文件,诸如日志文件或数据库等在Linux 中,有两种路径,一种是绝对路径(absolute path),绝对路径告 诉你从根U 录下查找文件,绝对路径的缺点是太长而且不太方便。

还有一种 是相对路径(relative path),相对路径所在的LI 录也叫做丄作tl 录(working directory)。

如果/usr/local/books 是工作U 录,那么shell 命令cp books books-replica就表示的是相对路径,而cp /usr/Iocal/books/books /usr/local/books/books-replica/root » /sbim /tmp,则表示的是绝对路径。

在Linux中经常出现一个用户使用另一个用户的文件或者使用文件树结构中的文件。

两个用户共孕同一个文件,这个文件位于某个用户的U录结构中,另一个用户需要使用这个文件时,必须通过绝对路径才能引用到他。

如果绝对路径很长,那么每次输入起来会变的非常麻烦,所以Linux提供了一种链接(link)机制。

举个例子,下面是一个使用链接之前的图bindevetclibusrcxuan以上所示,比如有两个工作账户jianshe和cxuan, jianshe想要使用cxuan账户下的A U录,那么它可能会输入/usr/cxuan/A »这是一种未使用链接之后的图。

使用链接后的示童如下bindevetclibusrcxuan2现在,jianshe可以创建一个链接来使用cxuan下面的U录了。

' 当一个U录被创建出来后,有两个U录项也同时被创建出来,它们就是.和,前者代表工作U录自身,后者代表该U录的父U录,也就是该U录所在的U录。

这样一来,在/usr/jianshe中访问cxuan中的U录就是../cxuan/xxxLinux文件系统不区分磁盘的,这是什么意思呢?一般来说,一个磁盘中的文件系统相互之间保持独立,如果一个文件系统U录想要访问另一个磁盘中的文件系统,在Windows中你可以像下面这样。

DVDc两个文件系统分别在不同的磁盘中,彼此保持独立。

而在Linux中,是支持挂载的,它允许一个磁盘挂在到另外一个磁盘上, 那么上面的关系会变成下面这样挂在之后,两个文件系统就不再需要关心文件系统在哪个磁盘上了,两个 文件系统彼此可见。

Linux 文件系统的另外一个特性是支持加锁(locking)O 在一些应用中会出 现两个或者更多的进程同时使用同一个文件的1W 况,这样很可能会导致竞争条 件(race condition)o 一种解决方法是对其进行加不同粒度的锁,就是为了防止某 一个进程只修改某一行记录从而导致整个文件都不能使用的情况。

POSIX 捉供了一种灵活的.不同粒度级别的锁机制,允许一个进程使用一 个不可分割的操作对一个字节或者整个文件进行加锁。

加锁机制要求尝试加锁 的进程指定其要加锁的文件,开始位置以及要加锁的字节Linux 系统提供了两种锁:共学锁和互斥锁。

如果文件的一部分已经加 上了共享锁,那么再加排他锁是不会成功的;如果文件系统的一部分已经被加 了互斥锁,那么在互斥锁解除之前的任何加锁都不会成功。

为了成功加锁、请 求加锁的部分的所有字节都必须是可用的。

在加锁阶段,进程需要设计好加锁失败后的1W 况,也就是判断加锁失败后 是否选择阻塞,如果选择阻塞式,那么当已经加锁的进程中的锁被删除时,这 个进程会解除阻塞并替换锁。

如果进程选择非阻塞式的,那么就不会替换这个 锁,会立刻从系统调用中返回,标记状态码表示是否加锁成功,然后进程会选 择下一个时间再次尝试。

加锁区域是可以重叠的。

下面我们演示了三种不同条件的加锁区域。

A 的共享锁 10 如上图所示,进程A 和B 和C 同时加了共享锁,那么第六字节和第七 字节是共享锁。

11如上图所示, 的共学锁在第四字节到第八字节进行加锁A 的共享锁11如上图所示, 锁进程在 A 和B 上同时加了共享锁,其中6・8字节是重叠10 A 的共享锁 B 的共享锁C 的共享锁如果此时一个进程尝试在第6个字节处加锁,此时会设置失败并阻塞,山 于该区域被ABC 同时加锁,那么只有等到ABC 都释放锁后,进程才能加 锁成功。

Linux 文件系统调用许多系统调用都会和文件与文件系统有关。

我们首先先看一下对单个文件 的系统调用,然后再来看一下对整个U 录和文件的系统调用。

为了创建一个新的文件,会使用到creot 方法,注意没有6这里说一个小插曲,曾经有人问UNIX 创始人Ken Thompson,如果有机 会重新写UNIX r 你会怎么办,他回答自己要把creat 改成createo这个系统调用的两个参数是文件名和保护模式fd = creat("aaa"jnode);这段命令会创建一个名为aaa 的文件,并根据mode 设置文件的保护位。

这些位决定了哪个用户可能访问文件、如何访问。

creat 系统调用不仅仅创建了一个名为aaa 的文件,还会打开这个文件。

为了允许后续的系统调用访问这个文件,这个creat 系统调用会返回一个非负 整数,这个就叫做文件描述符(file descriptor)r 也就是上面的fd 。

如果在已经存在的文件上调用了 creat 系统调用,那么该文件中的内容会 被清除,从0开始。

通过设置合适的参数,open 系统调用也能够创建文件。

下面让我们看一看主要的系统调用,如下表所示系统调用描述 position = lseek(fd, offset, whence) s = slat(naine, &buf) s = fstat(fd, &buf)创建一个管道 s = fcntl(fd,…) 文件加锁等其他操作为了对一个文件进行读写的前提是先需要打开文件,必须使用creat 或者 open 打开,参数是打开文件的方式,是只读、可读写还是只写。

open 系统调 用也会返回文件描述符。

打开文件后,需要使用close 系统调用进行关闭。

close 和open 返回的fd 总是未被使用的最小数量©什么是文件描述符?文件描述符就是一个数字,这个数字标示了计算机操 作系统中打开的文件。

它描述了数据资源,以及访问资源的方式。

当程序要求打开一个文件时,内核会进行如下操作•授予访问权限aaa fd = creat(naine,mode)fd = open(file,...) 打开文件读、写或者读写关闭一个打开的文件n = read(fd, buffer, nbytes) 从文件中向缓存中读入数据n = write(fd, buffer, nbytes) 从缓存中向文件中写入数据移动文件指针获取文件信息获取文件信息• 在全局文件表(global file table )中创建一个条U (entry )•向软件提供条u 的位置文件描述符由唯一的非负整数组成,系统上每个打开的文件至少存在一个文件 描述符。

文件描述符最初在Unix 中使用,并且被包括Linux, macOS 和 BSD 在内的现代操作系统所使用。

当一个进程成功访问一个打开的文件时,内核会返回一个文件描述符,这 个文件描述符指向全局文件表的entry 项。

这个文件表项包含文件的inode 信 息,字节位移,访问限制等。

例如下图所示 文件描述符默认悄况下,前三个文件描述符为STDIN (标准输入)、STDOUTC 标准输 出)、STDERR (标准错误)。

标准输入的文件描述符是0 标准输出的文件描述符是I 与错误有关的默认数据流是 在简单聊了一下文件描述符后,我们继续回到文件系统调用的探讨。

在文件系统调用中,开销最大的就是read 和write To read 和write 都 有三个参数•文件描述符:告诉需要对哪一个打开文件进行读取和写入•缓冲区地址:告诉数据需要从哪里读取和写入哪里•统计:告诉需要传输多少字节这就是所有的参数了,这个设计非常简单轻巧。

虽然儿乎所有程序都按顺序读取和写入文件,但是某些程序需要能够随机 访问文件的任何部分。

与每个文件相关联的是一个指针,该指针指示文件中的 当前位置。

相关文档
最新文档