标签:
文件系统:提供了在线存储和访问计算机操作系统和所有用户的程序与数据机制。文件系统由:文件和目录结构组成。
文件:操作系统提供的信息存储的统一接口。操作系统对存储设备的各种属性加以抽象,从而定义了逻辑单元(文件),再将文件映射到物理设备上。
文件是记录在外存上的相关信息的具有名称的集合。从用户角度而言,文件是逻辑外存的最小份分配单元。
文件属性:
文件属于抽象数据类型,相关文件操作:
文件打开信息:
文件锁:允许一个进程锁住文件,以防止其他进程访问它。
共享锁(shared lock):类似读者锁,可供多个进程并发获取;
专用锁(exclusive lock):类似于写者锁,只有一个进程可获取此锁。
操作系统可提供强制(mandatory)或建议(advisory)文件加锁机制。
目录概述:目录可看做符号表,它能将文件名称转换成目录条目。
定义目录逻辑结构的常用方案:
为实现共享和保护,大多数系统采用文件(或目录)拥有者(或用户)和组 的概念。拥有者是目录最高控制权的用户,可以改变属性和授权访问。组属性定义对文件拥有相同权限的用户子集。
远程文件的共享方式:
1. 用户通过程序(ftp)可实现在机器之间进行文件的人工传输。
2. 分布式文件系统(DFS),远程目录可直接从本机上访问。
3. 万维网
ftp可用于匿名访问和验证访问。匿名访问允许用户在没有远程系统账号的情况下传输文件。
1. 客户机-服务器模型
远程文件系统允许一台计算机安装一台或多台远程机器上的一个或多个文件系统。 NFS(网络文件系统)
2. 分布式信息系统
为了便于管理客户机-服务器服务,分布式信息系统也称为分布式命名服务,用来提供用于远程计算所需的信息的统一访问。域名系统(DFS)为整个Internet提供了主机名称到网络地址之间的转换。
3. 故障模式
一致性语义(consistency semantics):是评估文件系统对文件共享支持的一个重要准则
通过访问控制(controlled限制可进行的文件访问类型控制。
解决保护问题最为常用的方法是根据用户身份就行控制。实现基于身份访问的最为普通方法是为每个问价和目录增加一个访问控制列表(access-control list,ACL),以给定每个用户名及其所允许的访问控制类型。
文件系统提供了在线存储和访问包括数据和程序在内的文件内容的机制。文件系统永久地驻留在外存上,外存可以永久存储大量数据。
磁盘提供大量的外存空间来维持文件系统,磁盘的两个特点,使其成为存储多个文件的方便介质:
1. 可以原地重写
2. 可以直接访问磁盘上的任意一块信息。
为了改善I/O效率,内存与磁盘之间的I/O转移是以块为单位的,每块为一个或多个扇区,根据磁盘驱动器的不同,扇区从32~4096B不等,通常为512B.
文件系统由不同的层组成:应用软件->逻辑文件系统->文件组织系统->基本文件系统->I/O控制->设备
I/O控制为最底层,由设备驱动程序和中断处理程序组成,实现内存与磁盘之间的信息传输。
基本文件系统:只需向合适的设备驱动程序发送一般命令就可对磁盘上问了块进行读写。
文件组织模块:知道文件及其逻辑块和物理块。
逻辑文件系统:管理元数据,元数据包括文件系统的所有结构数据,而不包括实际数据(或文件内容)。逻辑文件系统通过文件控制块来维护文件结构。文件控制块(file control block,FCB)包含文件的信息,如拥有者,权限,文件内容的位置。
文件系统结构:
磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。
磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
分区可以是“生的”(raw),即没有文件系统,或者“熟的”(cooked)即含有文件系统。“生”磁盘(raw disk)用于没有合适文件系统的地方。
根分区(root partition):把偶偶操作系统内核或其他系统文件,在引导时装入内存。
采用数据结构和子程序,可以分开基本系统调用的功能和实现细节。因此文件系统实现包括三个层次:
第一层:文件系统接口:open(),read(),write()和close()以及文件描述符等待。
第二层:虚拟文件系统(VFS),它有两个目的:
第三层:文件系统类型或远程文件系统协议。
Linux VFS定义的4中主要对象类型是:
目录分配和目录管理算法的选择对文件系统的效率、性能和可靠性有很大的影响。
磁盘空间分配方法:
链接分配(linked allocation):解决了连续分配的所有问题。采用连接分配,每个文件是磁盘块的链表。目录包括文件的第一个指针和最后一个指针。每块都有指向下一块的指针。优点:没有外部碎片,无需说明文件大小,无需合并磁盘空间。缺点:只能有效的用于文件的顺序访问,不能有效支持文件的直接访问;其次,指针需要空间。解决办法:将多个块组成簇(cluster),并按簇而不是块来分配,有效改善磁盘访问 时间,但增加了内部碎片;其次,是可靠性问题,指针出错,解决方案:双向链表。
一个采用链表分配的变种是:文件分配表(FAT)的使用。用于MS-DOS和OS/2操作系统。每个卷的开始部分用于存储该FAT.每块都在该表有一项,该表可以通过块号码来索引。
索引分配:通过把所有的指针放在一起,解决了直接访问问题。每个文件都有索引块,这是一个磁盘地址的数组。索引分配支持直接访问,且没有外部碎片,但由于要存储每个文件的索引快,所以比较浪费空间。
如何确认索引块的大小:
空闲空间表:
NFS是用于通过局域网(或广域网)访问远程文件的软件系统的实现和规范。
NFS设计的目标之一是允许在不同机器、操作系统和网络结构的异构环境中工作。NFS规范与这些无关,因此允许其他实现。RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
NFS规范区分两种服务:
1. 由安装机制所提供服务(安装协议)
2. 远程文件访问协议(NFS协议)
安装协议(mount protocol):在客户机和服务器之间建立初始逻辑链接。
磁盘(magnetic disk):为现代计算机系统提供了大容量的外存。
磁盘驱动器通过一组称为I/O总线的线与计算机相连。有多种可用总线,包括EIDE(enhanced integrated drive electronics),ATA(advanced technology attachment),串行ATA(serial ATA,SATA),
USB(universial
交换空间管理:虚拟内存使用磁盘空间作为内存扩展。交换空间设计和实现的目的主要是为虚拟内存提供最佳吞吐量。
交换空间可以有两个位置:
1. 在普通文件系统上加以创建:实现简单,但效率低,遍布目录结构和磁盘分配数据结构需要时间和过多磁盘的访问。
2. 交换空间可以创建在独立的生(raw)磁盘分区上。只需要一个独立的交换存储管理器以分配和释放块。
磁盘冗余阵列(Redundant Arrays of Independent Disks,RAID):有“独立磁盘构成的具有冗余能力的阵列”之意。磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
镜像提供高可靠性,但昂贵;分散提供了高数据传输率,但并未改善可靠性。
通过磁盘分散和“奇偶”位可以提供多种方案以在地代价环境下提供冗余。
计算机有两个主要任务:I/O操作与计算处理。
中断(interrupt):基本中断机制工作如下,CPU硬件有一条中断请求线(Interrupter-request line,IRL)。CPU在执行完每条指令后,都将检测IRL。当CPU检测到已经有控制器通过中断请求线发送了信号,CPU将保存当前状态并且跳转到内存固定位置的中断处理程序(interrupt-controller),中断处理程序判断中断原因,进行必要处理,重新恢复状态,最后执行中断返回指令以便使CPU返回中断以前执行状态。
中断机制接受一个地址,用来从一个集合内选择特定的中断处理程序。对对大多数系统结构,这个地址时一个称为中断向量(interrupt vector)的表中偏移量。该向量包含了特殊中断处理程序的内存地址。向量中断机制的目的是用来减少单个中断处理需要,这些中断处理搜索所有可能的中断源以决定哪个中断需要服务。中断链接(interrupt chain),即中断向量内的每个元素都指向中断处理程序列表表头。
中断机制也实现了中断优先级(interrupt priority),该机制能使CPU延迟处理低优先级中断而不屏蔽所有中断,也可以让高优先级中断抢占低优先级中断处理。
直接内存访问(direct-memory access,DMA)控制器:一种专用处理器,对于需要做大量传输的设备,用其来观察状态位并按字节来向控制器寄存器送入数据。在开始DMA传输时,主机向内存中写入DMA命令块。该块包括传输的源地址指针,传输的目的地指针,传输字节数。CPU将该命令块的地址写入到DMA后就继续其他工作。DMA控制器则继续下去直接操作内存总线,无需主CPU帮助,就可以将地址放到总线以开始传输。
隐藏了硬件差异。
设备驱动程序的作用是为内核I/O子系统隐藏设备控制器之间的差异,就如同I/O系统调用通用类型封装了设备行为,为应用程序隐藏了硬件差异。
内核提供了许多与I/O相关的服务。许多服务如调度,缓冲,高速缓存,假脱机,设备预留及错误处理是由内核I/O子系统提供的,并建立在硬件和设备驱动程序结构之上。I/O子系统还负责保护自己免受错误进程和恶意用户的危害。
现代操作系统通过对请求与物理设备控制器时间的多级查表获取设备控制器的端口地址或内存映射地址。
标签:
原文地址:http://blog.csdn.net/u010177286/article/details/51602468