技术标签: 深入理解操作系统原理 操作系统 文件系统
操作系统对系统的软件资源(不论是应用软件和系统软件)的管理都以文件方式进行,承担这部分功能的操作系统称为文件系统。
计算机系统对系统中软件资源:无论是程序或数据、系统软件或应用软件都以文件方式来管理。文件是存贮在某种介质上的(如磁盘、磁带等)并具有文件名的一组有序信息的集合。 文件名是由字符和数字组成的,例如MS-DOS中文件名由三部分组成,格式如下:[<盘符>] <文件名> [.扩展名]。格式 [ ] 中是可以省略,盘符为存放文件的磁盘驱动器号,如用A:和C:分别 表示软盘和硬盘驱动器;文件名由1∽8个字符组成。扩展名为由“.”开始的1-3个字符组成,如.EXE表示可执行的浮动代码文件,.TXT表示ASCⅡ码文本文件,.LIB表示库文件,.BAT表示批处理文件等。
UNIX 文件系统将文件分成普通文件、目录文件、设备文件(特殊文件)和符号连接文件(Symbolic link)等几类,UNIX把所有I/O设备作为特殊文件,对I/O设备操作模仿为对普通文件的存取,这样将文件与设备的I/O尽可能统一起来。
数据项是描述一个对象的某些属性的字符集,它是数据的基本单位,一个数据项有一个值。记录是一组相关数据项的集合,用于描述一个对象某方面的属性。 文件是具有文件名的一组相关记录的集合。数据库是相关数据的集合。
文件系统是操作系统中以文件方式管理计算机软件资源的软件和被管理的文件和数据结构(如目录和索引表等)的集合。
从系统角度来看,文件系统是对文件存储器的存储空间进行组织、分配和回收,负责文件的存储、检索、共享和保护。从用户角度来看,文件系统主要是实现“按名存取”,文件系统的用户只要知道所需文件的文件名,就可存取文件中的信息,而无需知道这些文件究竟存放在什么地方。
文件系统的类型:
(1)FAT文件系统(MS-DOS文件系统、msdos)
它是MS-DOS操作系统使用的文件系统,它也能由Windows98/NT、linux、SCO UNIX等操作系统访问。文件地址以FAT表结构存放,文件目录32B,文件名为8个基本名加上一个“.”和3个字符扩展名。
(2)扩展文件表系统(vfat)
它是Windows98使用的扩展的DOS文件系统,它在MS-DOS文件系统基础上增加了对长文件名(最多到256B)支持。
(3)NTFS(NT文件系统)
它是Windows NT操作系统使用的文件系统,它具有很强的安全特性和文件系统恢复功能,可以处理巨大的存储媒体,支持多种文件系统。
(4)ext2(二级扩展文件系统)
它是Linux操作系统使用的高性能磁盘文件系统,它是对Minux操作系统中使用的文件系统扩展(ext)的扩展。它支持256字符的文件名,最大可支持到4TB的文件系统大小。
(5)HPFS(高性能文件系统、hpfs)
它是OS/2操作系统使用的文件系统。
(6)S51K/S52K(sysv)
它是AT&T UNIX S V 操作系统使用的1KB/2KB文件系统。
(7)CD-ROM文件系统(iso9660)
它是符合ISO9660标准的支持CD-ROM的文件系统,它有High sierra CD-ROM和Rock Ridge CD-ROM二种类型。
(8)UDF通用磁盘格式文件系统
UDF(Universal Disk Format)文件系统是依据光学储存技术协会(Optical Storage Technology Association, OSTA)的通用磁盘格式文件系统规格1.02版所制定的。它提供了对 UDF格式媒体的只读访问(例如DVD光盘)。Windows98提供对UDF文件系统支持。
现代操作系统(如Windows 2000/XP、Linux、UNIX等)提供了对多种文件系统的支持。
(1)Windows 2000/XP
Windows 2000/XP支持FAT文件系统、NTFS、HPFS、CD-ROM文件系统等多种文件系统。 Windows 2000执行体内I/O系统分成I/O管理程序、文件系统驱动程序和盘驱动程序三层,不同的文件系统采用不同的文件系统驱动程序,系统用动态连接库对这些文件系统进行装入和卸出并适宜于将来的扩展。
(2)Linux
Linux支持ext、ext2、msdos、vfat、iso9660、hpfs等多种文件系统。Linux采用虚拟文件系统VFS支持许多不同类型的文件系统,VFS是物理系统与服务之间的一个接口层,它屏蔽各类文件系统的差异,给用户和程序提供一个统一的接口。使用命令mkfs创建各类文件系统。
文件的组织是指文件的构造方式,从用户观点出发观察到的文件组织结构称为文件的逻辑结构;而文件在外存上的存储组织形式称为文件的物理结构,又称文件的存储结构。
从用户观点出发观察到的文件组织结构称为文件的逻辑结构,逻辑结构的文件称逻辑文件。逻辑文件从结构上分成二种形式,一种是无结构的流式文件,另一种是有结构的记录式文件。
流式文件是指对文件内信息不再划分单位,它是依次的一串字符流构成的文件。记录式文件是用户把文件内的信息按逻辑上独立的含义划分信息单位,每个单位称为一个逻辑记录(简称记录)。所有记录通常都是描述一个实体集的,有着相同或不同数目的数据项,记录的长度可分为定长和不定长记录两类。
记录文件有顺序、索引、索引顺序、直接、分区和堆文件几种。
用户通过对文件的存取来完成对文件的修改、追加和搜索等操作。常用的存取方法有顺序存取法、随机存取法(直接存取法)和按键存取法三种。
UNIX、Linux和Windows等操作系统都采用顺序存取和随机存取两种方法。
文件在存储介质上的组织方式称为文件的存储结构或称文件的物理结构、物理文件。
外存分配方法有连续分配、链接分配、索引分配,相应物理文件有:顺序文件、链接文件、索引文件。
MS-DOS文件系统的文件物理结构采用FAT表结构。该结构为了克服链接文件随机读取任一逻辑块需要化费多次盘I/O操作的不足,将各盘块中的链接指针集中存放在盘的开始部分,构成一张表,称为FAT表。(这称为显式链接)FAT表每一项存放链接指针(下一个簇号),每个FAT表项占12位或16位,称为FAT12或FAT16。对于软盘因为容量小,簇数也少,采用12位FAT表,对于硬盘则采用16位FAT表。
FAT表文件系统原为小硬盘的目录结构而设计,由于簇的数目最多只能用16位表示,即最多只能有64K个簇,要用FAT表管理大的磁盘分区,只能采取增大每簇所包含的扇区数,一般根据磁盘的类型和容量大小来决定簇的大小。
为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的盘物理地址,这个数据结构称为文件控制块FCB,文件控制块的有序集合称为文件目录,即一个文件控制块FCB就是一个文件目录项。文件控制块FCB中包含的信息有以下三类:
目录结构的组织关系到文件系统的存取速度,关系到文件共享性和安全性,因此组织好文件的目录是设计文件系统的重要环节。
UNIX为了加快目录的寻找速度,UNIX将文件控制块FCB中文件名和文件说明分开。文件说明为索引节点,各文件索引节点集中存放在索引节点区,索引节点按索引节点号排序。而文件名与索引节点号构成目录项,UNIX S V 操作系统的文件名14个字节,索引节点2个字节,共16个字节构成目录项。同一级目录项构成目录文件,在文件区存放。
Linux目录文件中的目录项会变长,以保证系统支持文件名长度可变,最长达255个字符。目录项的前三项是定长的,包含以下信息:(1)索引节点号(4B);(2)目录项长度(2B);(3)文件名长度(2B)。目录项最后是文件名,目录项不能跨越二个块 。
每个文件有一个存放在磁盘索引节点区的索引节点,称为磁盘索引节点,它包括以下内容:(1)文件主标识符和同组用户标识符;(2)文件类型:是普通文件、目录文件、符号连接文件或特别文件(又分块设备文件或字符设备文件);(3)文件主,同组用户和其它人对文件存取权限(读R、写W、执行X);(4)文件的物理地址(5)文件长度(字节数);(6)文件链接数(7)文件最近存取和修改时间等。
文件共享是指不同的用户使用不同的文件名来使用同一文件。在用一般共享目录结构时,一用户增加文件的内容,只改变自己的文件目录,其它用户不知改变。
磁盘是常用的存储设备,它具有容量大,存取速度快,可以实现随机存取等优点,是现代操作系统的必需存储设备,也是实现虚拟存储器所必需的硬件。
一个物理磁盘在逻辑上可分为几个区域,分区信息存放在主引导块分区表中。分区表中保存磁盘各种分区起始和终止的磁头、柱面、扇区、总的扇区数等信息。在主引导块中有三种类型分区:主分区、扩展区和逻辑分区。主分区是常用的,加载一个操作系统所需文件安装其上,操作系统必须从主分区上引导,一个硬盘上只能有四个主分区。为了突破四个分区的限制,就要在四个分区中创建立一个扩展分区。扩展分区其实是一个逻辑盘,它不能格式化,也不能分配盘符。但可在扩展分区中创建一个或多个逻辑分区,(或称逻辑驱动器),每个逻辑分区分配一个盘符,可以格式化成一个特定的文件系统,MS-DOS、Windows98和WindowsNT可用fdisk命令将硬盘分区。
为了实现存储空间的分配和回收,系统应为存储空间设置相应的结构以记住存储空间的使用情况,并配以相应算法方便地对存储空间进行分配和回收,下面介绍几种常用的文件存储空间管理方法。
影响文件安全性的主要因素,第一是人为因素,即由于人们有意或无意的行为,而使文件系统中的数据遭到破坏或丢失;第二是系统因素,即由于系统的某部分出现异常情况,而造成对数据的破坏或丢失,特别是作为数据存储介质的磁盘,在出现故障或损坏时,会对文件系统的安全性造成影响;第三是自然因素,即存放在磁盘上的数据,随着时间的推移将可能发生溢出或逐渐消失。
为了确保文件系统的安全性,可针对上述原因而采取以下措施:
(1)通过存取控制机制来防止由人为因素所造成的文件不安全性。
(2)通过磁盘容错技术,来防止由磁盘部分的故障所造成的文件不安全性。
(3)通过“后备系统”来防止由自然因素所造成的不安全性。
文件系统对文件的保护常采用存取控制方式进行,所谓文件的存取控制就是不同的用户对文件的访问规定不同的权限,以防止文件被未经文件主同意的用户访问。
随着计算机应用范围扩大,在所有稍具规模的系统中,都从多个级别上来保证系统的安全性。
文件系统中不论硬件和软件都会因电源中断和变化,用户粗野和不慎的操作而发生损坏和错误,所以为使至关重要的文件系统万无一失,应对保存在辅存中的文件采取一些保险措施,这些措施中最简便方法是“定期转储”,使一些重要的文件有多个副本。
文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr
文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc
文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8
文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束
文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求
文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname
文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立
文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码
文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词
文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限
文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定
文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland