读书笔记-现代操作系统-4文件系统-4.1文件4.2目录
2016-07-12 22:18
459 查看
4. 文件系统
长期储存大量信息的三个基本要求:1. 能够储存大量信息。
2. 使用信息的进程终止时,信息仍旧存在。
3. 必须能够使多个进程并发存取有关信息。
文件的概念:
文件是进程创建的信息逻辑单元。每个文件可以看成是一种地址空间。储存在文件中的信息必须是持久的。
总体上看,操作系统中处理文件的部分称为文件系统(file system)
4.1 文件
4.1.1 文件命名
文件是一种抽象机制,它提供了一种在磁盘上保存信息而且方便以后读取的方法。这种方法可以使用后不必了解储存信息的方法、位置和实际磁盘工作方式等有关细节。命名规则:
不同系统有不同命名规则,不过所有的现代操作系统都允许用1至8个字母组成的字符串作为合法的文件名。
通常也支持数字和一些特殊字符。
许多文件系统支持长达255个字符的文件名。
不区分大小写——MS-DOS
区分大小写——UNIX
这里需要说明一下:Windows 95 是 MS-DOS的文件系统,即FAT-16。Windows98 改进了一下是FAT-32。但是Windows的 NT 2000 xp vista是基于NT操作系统的NTFS有很多不同的性质。虽然也支持FAT类的文件系统。这本书里有很多Unix和MS-系统的介绍。以后基本都省略不会记录。以Linux记录为主
文件拓展名
在某些系统中拓展名只是一种约定。操作系统并不强制采用他们。对于可以处理多种类型的文件,这样的约定是有用的。
4.1.2 文件结构
无结构的字节序列操作系统不关心文件内容,见到的就是字节。含义在于用户程序解释。Unix和Windows都是这样的。
具有固定长度记录的序列
每个记录都有自己的内部结构。这是延续打孔时代大型计算机的风格
由一棵记录树构成
记录的固定位置上有一个键,按键进行排序。在一些商业系统上有效。
4.1.3 文件类型
通常至少有普通文件和目录,有些还有一些字符特殊文件(character special file)和块特殊文件(block special file)普通文件
包含有用户信息。
目录
管理文件系统结构的系统文件。
字符特殊文件
和输入输出有关。用于串行IO设备
块特殊文件
用于磁盘类设备。
普通文件
一般分为ASCII文件和二进制文件。
ASCII文件
由多行正文组成。每行用回车或换行或回车换行组成。
ASCII文件可以打印,还可以用任何文本编辑器进行编辑。
还可用作输入输出,如shell管道
二进制文件
二进制文件具有特殊的内部结构,只有使用该文件的程序才能理解。通常由5个段:
文件头:通常包括魔数(magic number,表明这个文件是一个可执行文件),然后是文件中各段的长度、执行的起始地址和一些标志位
正文
数据
重定位位
符号位:用于调试
所有操作系统必须能够识别他们自己的可执行文件类型。这是为了用户非法执行或改变文件。
4.1.4 文件存取
顺序存取随机存取文件(random access file)
每次read操作前都给出开始读文件的位置
用seek操作设置当前位置,在seek操作后,从这个当前位置顺序地开始读文件。(Unix和Windows)
4.1.5 文件属性
文件属性(attribute)和元数据(metadata)4.1.6 文件操作
createdelete
open
close
read
write
append
seek
get attributes
set attributes
rename
4.2 目录
4.2.1 一级目录系统
4.2.2 层次目录系统
4.2.3 路径名
绝对路径名(absolute path name)当前工作目录
每个进程都有自己的工作目录,改变之后不会互相影响,但是库过程例外所以尽可能不要改变库过程的工作路径。及时改变了也要改回原有的工作目录。
./..
当前路径和父路径
4.2.4 目录操作
createdelete
opendir
closedir
readdir
rename
link
这里说明下。连接技术允许在多个目录中出现同一个文件。这个系统调用指定一个存在的文件和一个路径名,并建立从该文件道路所指名字的连接。这样可以在多个目录中出现同一个文件。这种类型的链接为该文件的i节点(i-node)计数器的计数。有时称为硬链接(hard link)。使用两个文件名指向同一个内部数据结构(i-node)
与硬链接相对于的符号连接。所建立的文件名指向了命名另一个文件的小文件。当使用这个文件名的时候使用该新名字启动进程。符号连接的优点在于可以跨越磁盘的界限,甚至可以命名在远程计算机上的文件。不过符号连接的实现不如硬链接那样有效率
unlink
相关文章推荐
- 应用领航:盘点那些年我们一起追过的OS
- 无奇不有!盘点各国自己开发的操作系统
- 只需十分钟,结果大不同 |《深度思考》
- 《洋葱阅读法》读书笔记
- 可自定义oem的萝卜家园 Ghost XP 新春装机版 V200801 下载
- C#实现判断操作系统是否为Win8以上版本
- js获取本机操作系统类型的两种方法
- Jquery实战_读书笔记1―选择jQuery
- Linux操作系统添加新硬盘方法
- Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
- java如何获取本地操作系统进程列表
- Linux rdesktop操作系统下远程登录Windows XP桌面
- 32位操作系统认出超出4G内存的方法
- Linux rpm tar 操作系统下软件的安装与卸载方法
- 文件系统变为raw 无法访问的解决方法
- JavaScript 精粹读书笔记(1,2)
- JavaScript 权威指南(第四版) 读书笔记
- PHP 文件系统详解
- JavaScript 获取用户客户端操作系统版本
- jsp 获取客户端的浏览器和操作系统信息