文件系统就是数据的储存结构.
不要以为你的硬盘储存东西很理所当然,没有文件系统,你存的只回是01010100011101010101010
你的答Windows文件系统就是NTFS FAT什么的.
Linux只是用了不同的.ext3 ext4 reiserFS 什么的.
2. Linux文件系统特点
Linux之所以能在嵌人式系统领域取得如此辉煌的成绩,与其自身的优良特性是分不开的。与其他操作系统相比,Linux具有以下一系列显著的特点。
1.模块化程度高
Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分;其独特的模块机制可根据用户的需要,实时地将某些模块插入或从内核中移走,使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。
2.源码公开
由于Linux系统的开发从一开始就与GNU项目紧密地结合起来,所以它的大多数组成部分都直接来自GNU项目。任何人、任何组织只要遵守GPL条款,就可以自由使用Linux 源代码,为用户提供了最大限度的自由度。这一点也正投嵌入式系统所好,因为嵌入式系统应用千差万别,设计者往往需要针对具体的应用对源码进行修改和优化,所以是否能获得源代码 对于嵌入式系统的开发是至关重要的。加之Linux的软件资源十分丰富,每种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。这一切就使设计者在其基础之上进行二次开发变得非常容易。另外,由于Linux源代码公开,也使用户不用担心有“后闸”等安全隐患。
同时,源码开放给各教育机构提供极大的方便,从而也促进了Linux的学习、推广和应用。
3.广泛的硬件支持
Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多种体系结构的微处理器。目前已成功地移植到数十种硬件平台,几乎能运行在所有流行的处理器上。
由于世界范围内有众多开发者在为Linux的扩充贡献力量,所以Linux有着异常丰富的驱动程序资源,支持各种主流硬件设各和最新的硬件技术,甚至可在没有存储管理单元MMU 的处理器上运行,这些都进一步促进了Linux在嵌入式系统中的应用。
4.安全性及可靠性好
内核高效稳定。Linux内核的高效和稳定已在各个领域内得到了大量事实的验证。
Linux中大量网络管理、网络服务等方面的功能,可使用户很方便地建立高效稳定的防火墙、路由器、工作站、服务器等。为提高安全性,它还提供了大量的网络管理软件、网络分析软件和网络安全软件等。
5.具有优秀的开发工具
开发嵌入式系统的关键是需要有一套完善的开发和调试工具。传统的嵌入式开发调试工具是在线仿真器(In Circuit Emulator,ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。在线仿真器的价格非常高,而且只适合做非常底层的调试。如果使用的是嵌人式Linux,一旦软硬件能支持正常的串口功能,即使不用在线仿真器,也可以很好地进行开发和调试工作,从而节省了一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain),能够很方便地实现从操作系统到应用软件各个级别的调试。
6.有很好的网络支持利文件系统支持
Linux从诞生之日起就与Internet密不可分,支持各种标准的Internet网络协议,并且很容易移植到嵌入式系统当中。目前,Linux几乎支持所有主流的网络硬件、网络协议和文件系统,因此它是NFS的一个很好的平台。
另一方面,由于Linux有很好的文件系统支持(例如,它支持Ext2、FAT32、romfs等文件系统),是数据各份、同步和复制的良好平台,这些都为开发嵌入式系统应用打下了坚实的基础。
7.与UNIX完全兼容
目前,在Linux中所包含的工具和实用程序,可以完成UNIX的所有主要功能。
但由于Linux不是为实时而设计的,因而这就成了Linux在实时系统中应用的最大遗憾。不过,目前有众多的自由软件爱好者正在为此进行不懈的努力,也取得了诸多成果
3. LINUX与UNIX区别在哪
大家听别人介绍自己的Ubuntu时,会听到“我的操作系统是Linux的”。其实,这样介绍是缺乏严谨性滴。我们只要知道两点,基本上就搞清楚Linux和Ubuntu的关系,以下是星创客老师对二者的区别细节分析:
1. 严格来说,Linux并不是操作系统,而是一个操作系统的内核,严谨一些可以说:linux 一般指 GNU 套件加上 linux 内核。
2. Ubuntu基于linux内核的桌面PC操作系统,术语上喜欢称Ubuntu是一个 linux 发行版(因为debian(其实也是一款操作系统) 是 linux 的一个发行版,而 ubuntu 是属于 debian 系列的一个分支,所以...)。
深入理解下:
1. Linux应用程序
一个好的操作系统会提供一套方便于用户使用系统的应用程序,如文本编辑器、办公套件、Internet工具、数据库等。
2. Linux文件系统
文件系统是文件存放在存储设备(如磁盘)上的组织方法。如EXT2、EXT3、FAT、FAT32、VFAT等。
3. Linux Shell
Shell是操作系统系统的用户界面,提供了用户与内核进行交互操作的一种接口,是一个命令解释器。它接收用户输入的命令并把它送入内核去执行。
4. Linux内核
内核是操作系统的核心。一个操作系统是需要执行一些任务,如请求内存资源、执行计算, 连接网络,等等. Linux内核就负责处理所有这样的请求,就像人的大脑一样。
Linux内核从功能上讲具有五大模块化功能:进程管理、内存管理、文件系统管理、设备控制和网络管理。
4.1 进程管理的体现:
Linux内核负责进程创建和销毁, 并完成进程之间的通信,以及进程的输入和输出.而且,进程管理控制了多个进程对Soc上的一个或者多个cpu资源的使用
4.2 内存管理
内存资源的使用策略对操作系统性能体现来说,尤为重要。 内核在有限的内存资源上,为每一个进程建立了一个虚拟地址空间。 内核的不同功能部分与内存管理子系统通过一套函数调用交互, 使得通信高效简单。
4.3 文件系统管理
Linux操作系统中,几乎任何东西都可看作为一个文件(一切皆文件). 内核中大量使用kobject等结构体,来把一堆非结构化的硬件组织成一种多层次的数据系统。另外, Linux 支持多个文件系统类型。如ext4等
4.4 设备控制
几乎任何一个操作系统最终都运行在一个物理平台上。内核中包含访问平台上硬件设备的驱动代码。
4.5 网络功能
大部分网络操作不会关联具体的进程,因为数据包的传输是异步事件。应用程序访问数据包之前,内核完成数据包的收集、标识和分发等任务。
如果想学习嵌入式linux可以去了解下星创客还不错。
4. Linux文件系统的演变
说起文件系统的演变与发展,不得不从最早期的 Minix 操作系统开始说起。
Minix(MINI-UNIX) 是早期的一个迷你版本的 「类UNIX操作系统」 ,由荷兰阿姆斯特丹自由大学计算机科学系的塔能鲍姆教授自行开发的可以与UNIX操作系统兼容的一个操作系统,因其小型,该操作系统被命名为 MINIX 。
MINIX 系统在设计之初,采用程序模块化的思想,将一众程序放在用户空间运行,而不是在操作系统的内核中运行。如 「文件系统」 和 「存储器管理」 等程序均是如此。
受 MINIX 操作系统的影响,早期的Linux操作系统也曾采用由塔能鲍姆教授开发的MINIX的文件系统。
然而,不只因为早期的 MINIX 操作系统并为真正意义上的开源软件(在保护著作的前提下进行收费),而且基于 MINIX 的内部使用16位的偏移量,使文件系统能够支持的最大空间只有64MB,支持的最大文件名为14字符,导致后来 Linux 操作系统转而开发出了 ext(Extended File System) 第一代可扩展文件系统。
ext(Extended File System) 为Linux系统最早的扩展文件系统,采用 「UNIX文件系统」 的元数据结构,克服了 「MINIX」 操作系统性能不佳的问题。
ext 文件系统采用 虚拟文件系统(VFS) ,最大可支持2GB的文件系统。与 MINIX 文件系统不同的是, ext 可以使用最高2GB的存储空间并同时处理255个字符的文件名。
但,在 ext 文件系统中,文件创建时生成的 inode 信息是不变的,这导致文件发生修改后 inode 中储存的文件时间戳并不会发生变化;而且 ext 并不会为文件妥善分配空间,磁盘上的多个文件四散分布,严重制约了文件系统的性能。
ext 文件系统推出后不久,其开发者便意识到 ext 文件系统中存在很大缺陷( inode不变性 和 文件空间碎片化 ),并在一年后推出了 ext2 (Second Extened File System) 第二代扩展文件系统,用来代替 ext 文件系统。
ext2 吸取了 「UNIX文件系统」 的众多优点,并且因其良好的可扩展性( 为系统在磁盘上存储的数据结构预留了很多空间提供给开发者使用 ),在20世纪90年代众多文件系统中脱颖而出。
众多新的特性, POSIX(可移植操作系统接口) 、 访问控制表 等都是在这一代扩展文件系统上实现的。直至今天, POSIX 仍被众多操作系统所沿用。
不仅如此, ext2 还在 ext 的基础上进行了完善,能够最大支持的单个文件达到 2TB。
ext2 文件系统与20世纪90年代的众多文件系统一样,将数据写入到磁盘的过程中如果发生系统奔溃或断电,极容易导致文件损坏或丢失。
正是因为类似 ext2 等同时期的一众文件系统,在遭遇系统奔溃或断电时会出现文件损坏或丢失。尽管 ext2 文件系统拥有开机后对文件系统中文件的一致性校验,但校验的过程极为耗时,且校验的过程中,操作系统上的任何卷组都是不可访问的。
然而 ext2 遗留的问题在 ext3(Third Extended File System) 中得到了解决。
ext3 文件系统采用日志记录的方式,记录下了操作系统运行中的所有事件,这意味着即便遇到操作系统非正常关机后也无须对文件系统进行校验,从而防止了文件系统中数据丢失的可能。
尽管 ext3 使用日志系统进行记录文件系统的变化,但这并没有影响 ext3 文件系统处理数据的速度。基于日志系统在磁盘上的优化,在 ext3 中数据的传输效率是高于 ext2 的,并且可以通过重新设置日志的级别来提升文件系统的性能。
其次, ext3 在设计之初就吸收了 ext2 的很多思想,这使得 ext2 文件系统迁移到 ext3 变得极为便利。事实上, ext3 可以在从 ext2 迁移 ext3 的过程中,无须进行文件系统资料的备份,且无须担心升级后的数据恢复问题。
也正是因为 ext3 设计之初沿用了众多 ext2 的功能,这使得 ext3 缺乏变通。例如, 「inode的动态分配」 和 「可变块大小」 等问题并没有得到解决。不仅如此, ext3 文件系统在被挂载为写入时,无法对文件系统进行完整性校验。
第四代扩展文件系统( Fourth Extended File System, ext4 ) 是继 ext3 文件系统的后续版本,不仅支持 ext3 的日志文件体系 ,同样支持 大文件系统 ,不仅提高了文件系统对于存储碎片化的抵抗,而且改进了 inode固一化 的问题。
同时, ext4 文件系统在开发之初就考虑到很多问题,对众多问题的优化和改进也使得 ext4 拥有了众多新的特性。例如, 大文件系统 、 使用Extent文件存储的方式 、 预分配空间 、 延迟文件获取空间的时间 、 突破原有子目录限制 、 增加日志校验和 、 在线整理磁盘 、 文件系统快速检查 、 向下兼容其他ext文件系统`。
时至今天, ext4 文件系统已经成为Linux发行版默认使用的文件系统。
与 ext2 文件系统同一时期出现的,还有 xfs 文件系统。 xfs 文件系统是高性能的文件系统,最早在 IRIX 操作系统上开发,后期被移植到 Linux 操作系统上。现在所有的 Linux发行版 都支持 xfs 的使用。
相比 32位 Linux 的操作系统来说,64位 xfs 的文件系统能够支持的单个文件系统要远远超出 32位 操作系统。
xfs 对文件系统元数据提供了日志支持,当文件系统发生变化后,总是会保证源数据在数据块写入磁盘之前被写入日志中,磁盘中有一处缓冲区专门用来存放日志,从而不会影响正常的文件系统。
xfs 同样支持 「条带化分配」 。在条带化RAID阵列上创建 xfs 文件系统时,可以指定 条带化数据单元。通过配置条带化单元,使 数据分配、inode分配、日志等与RAID条带单元对齐,来提高文件系统的性能。
与 ext4 文件系统不同的是, xfs 文件系统还支持在线恢复。 xfs 文件系统提供了 xfsmp 和 xfsrestore 工具协助备份 xfs 文件系统中的数据。
以下为各文件系统的出现时间及特性:
参考自: https://zh.wikipedia.org/wiki/Ext4