文件IO

文件IO

1.FAT32和NTFS文件系统区别


1)什么是FAT32?

FAT是指文件分配表,它是一个文件系统,具有个人计算机的应用程序。FAT32是FAT的32位版本。此外,他后来被开发用于NTFS文件系统。FAT32为用户提供了更大的储存容量。

2)什么是NTFS?

NTFS是指新技术文件系统。它是Microsoft开发的专有日志文件系统。NTFS于1993年XNUMX月应运而生,其主要功能是作为Windows NT Family的默认文件系统。除了 Microsoft Windows,NTFS 还用作 Linux 和 BSD 的文件系统。 Linux 和 BSD 都提供免费和开源的 NTFS 驱动程序。 NTFS 使用 NTFS 日志来记录对卷的元数据更改。

3)FAT32和NTFS的区别

1.FAT32是一种较旧的文件系统,具有有限的文件大小和分区大小功能,而NTFS支持更大的文件和分区。

2.NTFS提供了FAT32所缺乏的更好的安全功能,例如文件夹秘密和访问权限。

3.NTFS支持高级功能,如磁盘配额和文件压缩,而FAT32不提供这些选项

4.FAT32的读写速度不及NTFS。

5.NFTS允许用户在断电或计算机关闭的情况下恢复数据。

4)FAT32和NTFS的参数对比

image

2.MMU如何将虚拟地址与物理地址进行交换


1)什么是MMU?

MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线仲裁以及存储体切换(bank switching,尤其是在8位的系统上)。

2)MMU是如何将虚拟地址与物理地址进行交换?

MMU通过页表来实现地址转换。页表是一个数据结构,它虚拟地址划分为固定大小的页,并将每个页映射到物内存中的一个或多个页帧。当访问一个虚拟地址时,MMU会根据页的映射关系将虚拟地址转为物理地址。
具体的虚拟地址(VA)到物理地址(PA)的转换过程下:
1,CPU生成一个虚拟地址(VA)并发送给MMU。
2,MMU从虚拟地址中提取出虚拟页号(VPN)和虚拟页偏移量(VPO)。
3,MMU使用虚拟页号作为页表的索引在页表中查找对应的页表项。
4,如果页表项有效,则从中获取对应的物理页号(PPN),生成页表条目(PTE)地址,并请求高速内存/内存向MMU返回PTE地址。
5,MMU将物理页号(PPN)与物理页偏移量(PPO)组合成物理地址(PA)。
6,MMU将物理地址返回给CPU,CPU可以使用该物理地址进行内存访问。

3.Linux系统目录和文件夹的区别


1)什么是Linux系统目录

在 Linux 中,目录本质上也是由 inode 和数据块构成的。

不过,目录和文件的数据块中存储的内容是不同的:

文件的数据块中存储的是文件的实际内容,比如文本、图片、音频、视频等。

目录的数据块中存储的是一系列目录项。每一个目录项包含一个文件名和一个 inode 号。这样,用户可以通过文件名找到文件,系统则通过 inode 号找到实际的文件内容。

这就是目录和文件在底层数据结构上的区别。总的来说,目录和文件都是由 inode 和数据块组成的,但是它们的数据块中存储的内容有所不同。

2)什么是文件

在 Linux 中,文件本质上是由 inode 和数据块构成的。

inode 是文件的元数据,包括了文件的所有者、权限、大小、创建和修改的时间戳等信息,以及指向实际存储文件数据的数据块的指针。每个 inode 有一个唯一的编号,系统通过这个编号来识别文件。

而数据块则是存储了文件的实际内容,比如文本、图片、视频等。

所以,一个文件在文件系统中的存在,实际上就是一个 inode 和一系列数据块的组合。inode 提供了关于文件的元数据和找到文件数据的路径,数据块则存储了文件的实际内容。

文件名和目录项则是在目录的数据结构中定义的。目录包含了一组目录项,每个目录项都是一个文件名和一个 inode 编号的对应关系。通过这种方式,用户可以通过文件名来访问文件,而系统通过文件名找到对应的 inode,进而找到文件的数据。

3)Linux系统目录和文件夹的区别

在 Linux 系统中,目录和文件的底层数据结构都是通过 inode (索引节点) 来进行管理的。inodes 存储有关文件系统对象(如文件和目录)的元数据,比如对象的所有者、权限、创建和修改日期以及物理数据位置等信息。

然而,目录和文件在这种管理方式中有着本质的区别:

文件:文件的 inode 存储了指向文件内容所在的数据块的指针,文件的内容就保存在这些数据块中。文件的 inode 还保存了文件的各种属性,如文件大小、创建时间、所有者等信息。

目录:目录的 inode 不是直接指向数据内容,而是指向一种特殊的数据结构,我们通常称之为目录项(Directory Entries)。每一个目录项包括两部分,一是文件名,二是指向该文件(或子目录)的 inode 的指针。所以,目录实际上是一个特殊的文件,它的内容是一种映射关系,即文件名到 inode 的映射。因此,目录可以包含其他文件或目录,这就构成了我们常见的文件系统的树状结构。

以上就是 Linux 下目录和文件的底层区别。目录的这种结构使得它可以包含文件和其他目录,从而形成复杂的文件系统。

原文链接:

Linux 下文件和目录的本质区别和组成_linux目录与文件的区别-CSDN博客

4.标准IO(库给你的函数)和系统IO(系统给你的函数)有什么区别


1)什么是系统IO与标准IO

1.系统IO:由操作系统直接提供的接口函数。

2.标准IO:由标准C库(第三方库)提供的接口函数(通过封装操作系统提供的系统IO,再给用户使用)

2)系统IO和标准IO的主要区别

1.系统IO:不带缓冲机制,系统IO可以操作普通文件与驱动文件

2.标准IO:带缓冲机制,标准IO只可以操作普通文件。提供多种的格式的输入输出如(字符串、整形......)

posted @ 2024-05-07 21:13  陳文鹏  阅读(13)  评论(0编辑  收藏  举报