操作系统原理(三)——文件系统(File system)

文件系统(File system)

1. 文件

  首先要说文件的定义,文件是进程创建的信息逻辑单元。

  由于磁带和光盘的性能较低,磁盘使用的较多。这里讨论文件储存在磁盘中的情况。磁盘可被认为是固定块儿大小的线性序列。

  在操作系统看来,文件就是一个个字节流,操作系统不管这个文件的内容(不管它是.mp3音频文件,或者.jpg图片文件,在应用程序看来才有这种区分)。文件在操作系统眼中只有3种:普通文件、目录文件、特殊文件。

  文件的命名:

    在Linux中,文件名大小写敏感;目录分隔符“/”绝对不能出现在文件名中。

    在Windows中,文件名大小写不敏感;盘符“:”绝对不能出现在文件名中(其实还有很多符号不能出现在文件名中...Linux不清楚其他限制)。

  应用程序识别文件类型:

    Windows:扩展名;

    Linux:文件头部。

2. inode

  文件系统中,有一个叫inode的结构,它与真实的文件一一对应,用来记录这个文件的各种属性:权限、所有者、创建时间、最近修改时间等等。

2.1 inode的作用

  已经提过inode用来记录文件属性,更用来记录文件在磁盘中的位置,要找到文件必须通过它的inode。每一个inode都有唯一的编号。目录文件的内容就是文件名和其对应的inode。没错,文件名是储存在它的上层目录中的,所以对文件夹有写权限的用户可以任意删除此文件夹中的内容,即使这个用户对被删除的文件没有任何权限。

  inode中还保存着文件的大小,以及文件在系统中的储存位置,那么它怎么储存文件在磁盘上的位置呢?进一步看inode的结构。

2.2 inode的结构

  一个文件的可能会占一个、多个或很多很多的块儿。在ext2文件系统中,一个磁盘块儿的大小为1K,一个inode占用128Bytes,其中60个字节用来存指针,指向文件在磁盘中的位置。每个指针需要4个字节,共15个指针。文件可能占用很多很多的块儿,15个指针被设计为:

  前12个指针:直接指针,指向文件在磁盘中的位置,可表示最大12K的文件;

  第13个指针:间接指针,指向一个磁盘块,这个内存块中储存着1024 / 4 = 256个直接指针,容量256K;

  第14个指针:二级间接指针,指向一个磁盘块,这个内存块中储存着1024 / 4 = 256个间接指针,容量256 * 256K = 64M;

  第15个指针:三级间接指针,指向一个磁盘块,这个内存块中储存着1024 / 4 = 256个二级间接指针,容量256 * 256 * 256K = 16G;

  故ext2文件系统最大支持12K + 256K + 64M + 16G ≈ 16G的文件。

3. 硬连接(Hard links)和软连接(Soft links)

  连接用于文件共享。连接分为硬连接和软连接。

  硬连接,多个文件名对应同一个inode。当一个inode对应的文件名个数为0时,这个inode和对应的文件才会被真正删除。即若文件a和b指向同一个inode,这时删除文件a,这个文件并不会被真正删除,因为还有文件名b指向这个inode。硬链接不能跨磁盘,不能跨文件系统。

  软连接,又叫符号连接(symbolic link),创建一个文件,这个文件包含了另一个文件的路径名,这个文件对应一个inode。即文件a指向一个inode,创建一个软连接b指向a。这时删除a,文件会被真正删除。b依然存在,但是已经失效。符号连接只是一个引用,或者一个快捷方式。符号连接可以跨磁盘,可以跨文件系统。

  

  

时间: 2024-08-24 09:53:52

操作系统原理(三)——文件系统(File system)的相关文章

操作系统原理之文件系统(第五章)

一.文件 1.?件系统的?户接?包括?件的命名.类型.属性和对?件的操作 2.?件命名:所有操作系统都允许?1-8个字?组成的字符串 3.?件扩展名:多数操作系统都?持?件名?圆点隔开分为两部分,圆点后?的部分称为?件扩展名 4.?件结构: ?结构字节序列 (流式?件) 固定?度记录序列 树形结构 5.?件类型 ******************************************?件存取***************************************** *****

node之文件系统File System

一.文件读取 文件读取又分为同步读取和异步读取 //1.文件同步读取 const bufferStr = fs.readFileSync('./file/test.txt'); console.log(bufferStr); // 因为没有声明encoding 所以返回的是二进制数据 //<Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64 21> const str = fs.readFileSync('./file/test.txt',{ encoding:'u

[Objective-C] 013_文件系统(File System)

在前面三篇关于数据持久化,我们都用涉及到文件(plist文件,数据库文件),它们都是把它们存储在document目录下.iOS的文件机制是沙盒机制,应用只能访问自己应用目录下的文件.iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内.默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录. Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下,iTun

三、file system

时间: Linux时间 -- 系统时间:硬件时间 date(系统时间): clock(hwclock,硬件时间): FHS:filesystem hierarchy standard (文件系统目录标准),多数Linux版本采用这种文件组织形式,类似于windows操作系统中c盘的文件目录,FHS采用树形结构组织文件. FHS定义了两层规范:第一层是根目录(/)下面的各个目录应该要放什么文件数据,例如/etc应该要放配置文件等,第二层则是针对/usr和/var这两个目录的子目录的定义,例如/va

【整理学习HDFS】Hadoop Distributed File System 一个分布式文件系统

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时,它和其他的分布式文件系统的区别也是很明显的.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用.HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的.HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的.HDFS是Apac

HTML5之本地文件系统API - File System API

HTML5之本地文件系统API - File System API 2014-06-03 17:54 19991人阅读 评论(0) 收藏 举报 目录(?)[+] 新的HTML5标准给我们带来了大量的新特性和惊喜,例如,画图的画布Canvas,多媒体的audio和video等等.除了上面我们提到的,还有比较新的特性 - File System API,它能够帮助我们来突破沙箱访问我们本地的文件系统,从而有效的弥补桌面和web应用之间的鸿沟.在今天这篇文章中,我们将会介绍基本的File system

NFS - Network File System网络文件系统

NFS(Network File System/网络文件系统): 设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务): NFS只是一种文件系统,本身没有传输功能,是基于RPC协议实现的,才能达到两个Linux系统之间的文件目录共享: NFS为C/S架构: NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享. NFS在文件传送或信息传送过程中依赖于RPC协议.

Ubuntu&amp;Linux系统出现文件系统只读Read-only file system 的快速解决方法

问题描述: 周末运行盘平台服务程序,周一来操作系统卡顿,主进程已退出,重启进程时提示Read-only file system:新建目录和其他chmod -R等等操作都提示Read-only file system. 问题原因: 重启系统,提示根分区error,原因是磁盘出现文件系统错误. 解决方法: 使用fsck手动修复,具体操作如下: 切换到root用户,运行fsck.ext4 -y /dev/vdb1 说明:文件系统采用fsck.ext4,/dev/vdb1是系统/根分区.运行完毕后reb

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps