- 内存不够,虚存空间在哪里?
- 外存(磁盘)如何能让系统在线存储和访问?
- 外存上的数据如何组织、保护和共享?
文件——记录——数据项
文件(抽象概念):具有文件名的一组相关信息的集合
数据项:组成文件的最小单位。数据项是最低级的数据组织形式,可分为基本数据项和组合数据项。基本数据项是用于描述一个对象某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,即原子数据,又称为数据元素或字段。组合数据项则由若干个基本数据项构成。
记录:记录是一组相关数据项的集合,用于描述一个对象某方面的属性。
文件逻辑结构
定义:从用户观点出发,所观察道德文件组织形式、使用户可以直接处理的数据和结构,独立于物理特性。(谁决定:操作系统或者程序)
①无结构(流式文件):字或字节的序列,对文件内信息不再划分单位,它是依次的一串字符流构成的文件。
②简单记录结构:行、固定长度、可变长度
③复杂结构 :是用户把文件内的信息按逻辑上独立的含义划分信息单位,每个单位称为一个逻辑记录(简称记录)
- 格式化文档
- 可重定位加载文件
顺序文件
定义:文件的排列、存取按顺序进行
(定长记录文件(初始时头记录长度)、变长记录文件)
缺点:增删不方便、只能顺序查找
适用场合:对文件批量存取,顺序介质
索引文件
定义:为变长记录文件建立一张索引表(或多级索引),用户通过关键字访问
优势:①查找的速率高;②扩展性好,增删方便
适用场合:对信息处理及时性要求高的场合
劣势:①索引表,额外开销;②两次访问(先访问索引表)
索引顺序文件
定义:顺序文件记录,并建立索引表,索引表项为各组的第一记录指针
优缺点:(索引文件和顺序文件的折中)
选取文件逻辑结构四个目标
查找速度快
修改文件时,对其它存储好的文件影响小
对文件管理结构(索引表)占空间少
方便用户使用
文件属性
名称,标识符(唯一标记文件系统的文件,通常是数字),类型(支持不同类型文件的系统所需要的信息),位置,大小,保护(访问权限),时间、日期和用户标识,扩展文件属性
这个可以自己操作一下,右键排序方式,选择更多
文件操作
对记录的操作:增删改查
对文件本身的操作
创建文件
删除文件
读文件
写文件
截断文件(truncate):把文件分成两个文件
设置文件的读/写位置
设置文件访问权限(设置密码,加密)
修改文件属性
压缩文件
移动文件位置
打开/关闭文件
文件类型
按用途份:系统、用户、库文件(提供给使用者一些开箱即用的变量、函数或类)
按照存取控制属性:只读文件、读写文件、只执行文件(.exe,.shell,.com,.php)
按照文件逻辑结构:有结构文件(上述的顺序文件、索引文件、顺序索引文件都是由结构文件)(ppt属于有结构文件)、无结构文件(流式文件)
按文件物理结构:顺序、链接、索引文件
按文件中数据形式:源文件(.java,.py,.cpp)、目标文件(obj)、可执行文件
按照使用期限来分:临时文件、永久文件、档案文件(存储起来长时间不使用)
unix文件分类:普通文件(r)、目录文件(d)(管理文件的系统文件)、特殊文件(s)(设备文件:字符设备文件、块设备文件)
文件系统
定义:用于操纵和管理各类文件,方便用户使用文件的软件集合
访问方法
顺序访问:文件信息按内存(如一条一条记录)进行处理
Read_next():读取文件的下一部分
Write_next()
reset(重置到begin位置)
(前两个先找到current position)
直接访问:允许程序按任意顺序进行读取和写入
Read(n):读取文件的第n条文件
Write(n)
Position_file(n)
使用场景:
顺序访问:顺序文件
直接访问:索引文件、索引顺序文件(先顺序,后索引)
磁盘上的文件可以采用的访问方法?
顺序访问和直接访问都可以
目录结构
- 定义:用于有效管理和组织文件的结构
- 方法:借助文件目录,可以讲每个文件的符号名与其所在存储空间地址联系起来
- 对目录管理的要求:
实现“按名存取”;
有较高的目录检索速度:合理组织文件目录
允许文件重名
提供文件共享功能 - 目录结构和文件都驻留在外存(如磁盘)上
设备目录需要提供什么信息?
名称、类型、地址、当前长度、最后访问时间、最后更新时间、创建者、保护信息……
对目录的操作?
创建、删除、重命名、查找、列表内容、遍历文件系统、复制、移动、排序、修改……
常见目录结构
单集目录结构
整个系统之间里一张目录表,为每个文件分配一个目录项
优点:
(1)结构简单,用线性表就可以记录,
(2)占用空间小
缺点:
(1)查找速度慢:N个目录,平均查找N/2个目录项
(2)不允许重名
(3)不能实现文件共享
两级目录结构
系统建立一张主文件目录MFD,为每个用户建立用户文件目录UFD,每个用户文件目录在MFD中分配一个目录项
优点:
(1)提高了查找速度
(2)不同用户文件允许重名
树形目录
在两级目录的基础上,允许用户创建自己的子目录并组织其文件
路径名:从根目录到文件之间的通路
当前目录
相对路径:从当前目录到文件之间的路径
绝对路径:从根目录到文件之间的路径
目录的增加和删除
增加:无重名mkdir
删除:不删除非空目录/可删除非空目录
无环图目录结构
目录结构中有共享的子目录和文件
优点:
可共享:链接方式实现、复制文件信息
更灵活
遍历图相对简单
其他需要考虑的问题:
多个绝对路径名?——别名问题
删除——悬挂指针问题
通用目录结构(General Graph Directory)
允许系统中存在环
如何保证无环结构?
仅可link到文件,不能link到目录
增加新链接时,测i用检测算法
缺点:
查找是对环要进行必要处理
删除:garbage collection
比较常见的是树形结构
文件共享
多个用户共享同一份文件,系统只保存文件的一个副本
共享方法:
- 绕弯路法
实现:系统设置当前目录指针,用户对当前目录下的文件直接访问,当需要访问其它目录下文件是,通过指定完成 - 连访法:
实现:建立目录间的链接,使目录项直接指向另一个目录项;在文件说明中增设“连访”属性标识物理地址是文件或目录项的指针;增设“用户计数”标识共享文件的用户数。 - 基本文件目录
实现:将源文件目录分为基本文件目录BFD和符号文件目录SFD。
(1)BFD:每个文件/目录有一个目录项,文件标识数、其他信息
(2)SFD:每个用户一个,目录项只是其文件名和文件标识数 - 基于索引节点的共享方式
实现:设置索引节点*,存储文件的物理结构、链接记数及其他文件属性;文件目录只包括文件名和该文件对应索引节点的指针
优点:任何对索引节点内容的修改对其他共享用户都是透明的 - 利用符号链接(symbolic Linking)实现文件共享
实现:设B为了共享C的文件F,在B中创建一个Link类型的新文件,新文件目录中只包含被链接文件F的路径名,称这种链接方法为符号链接
说明:只有文件主任的目录中有文件索引节点的指针,其它用户目录中只有路径名
文件保护:防止合法用户由于误操作而破坏文件
影响文件系统安全性的主要因素
①人为因素
②系统因素:系统部分软件、介质故障
③自然因素:存在磁盘中的数据,随时间变化发生溢出或消失
文件保护功能
- 防止未核准用户(非法用户)存取文件——文件保密
- 防止用户冒充另一个用户存取文件
- 防止核准用户(合法用户)误用文件
保护机制
- 存取控制机制
- 容错机制
- 后备系统
存取控制机制
保护域:进程可访问的对象
访问权:一个进程对某对象可执行操作的权限,表示为有序对(对象名,权集)
域:一组对象访问权的集合
进程和域的联系方式
- 静态联系:进程可用资源集是固定的
- 动态联系:进程可用资源集是可变的( 域转换机制 )
须知(Read to Know)原则:只允许进程去访问那些它必须去访问的对象
访问矩阵(Access Matrix)
定义:描述域及所属对象的矩阵(lampson)
- 访问矩阵中对象访问权由资源拥有者或管理者确定
- 通过设置域间切换开关实现进程与域的动态联系
实例:
拷贝权应用——将具有拷贝权的对象访问权拷贝到其它域中,使其它域中进程对同一对象具有相同访问权
- 转移拷贝权:原有进程失去访问权限;
- 限制拷贝:两者皆有访问权限,但后者不具有拷贝权限
访问矩阵为稀疏矩阵,可以采用:
访问控制表Access Control List——按列划分,(域,权集)表示——对象——记录在文件属性(FCB)
权能表Access Capability List——按行划分,(对象,权集)表示——进程——记录在进程控制块(PCB)
文件拥有者对文件进行保护
访问模式:读(R)、写(W)、执行(X)
用户分类:文件拥有者owner、和文件同属一族的用户group、其他用户other
构成九位权限位
比如
给定一个761,用九位表示111 110 001
表示对于文件拥有者owner来说,可读可写可执行
对于文件同属一族的用户group,可读可写不可执行
对于其他用户来说,只可执行
chmod:更改文件权限
chmod是一个计算机函数,功能是改变文件的读写许可设置,如果改变成功返回0,否则返回-1,函数原型是int chmod( const char *filename, int pmode)