第四章文件系统2Word文件下载.docx
《第四章文件系统2Word文件下载.docx》由会员分享,可在线阅读,更多相关《第四章文件系统2Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
这样,1K字节盘块可放64个目录项(每个目录项16字节)
1.磁盘索引结点(i结点)P239
磁盘中有专门的索引结点块(例如,1K字节盘块,每个索引结点需64个字节,可放16个索引结点)
i结点、文件目录、文件本身分别存放。
2.内存索引结点P239
OS在系统区设置内存索引结点区。
当文件打开时,要将磁盘索引结点信息拷贝到内存索引结点中,这样对该文件的访问就可以通过内存索引结点进行。
内存索引结点内容除了磁盘索引结点信息外还增加一些信息,如内存索引结点编号,状态,访问计数等。
当文件关闭时,要回收内存索引结点。
四、文件目录的组织
1.单级目录:
将所有的目录项放在一张线性表(或hash表)中。
缺点:
查找速度慢
·
不允许重名
不便于文件共享
状态位
物理地址
文件其它属性
Alpha
Report
Text
图8-8单级目录
Wang用户目录
Test
2.多级目录(树型目录)
为缩小查找目录的范围,将目录分级
用户名
指向子目录指针
Wang
Zhang
Gao
Zhang用户目录
优点:
查找速度快
Gao用户目录
Beta
Device
Misx
不同目录文件名可以相同
可使用不同文件名访问共享文件
图8-9两级目录结构
1
A
B
C
2
D
3
F
E
GA
AC
6789
AHF
5
J
N
K
13
M
1011
15161718192021
图8-10多级目录结构
3.路径名
使用树型目录时,需要用某种方法指明文件名。
如文件J(12)
(1)绝对路径名:
从根目录到文件的路径:
B/F/J
(2)相对路径名:
指定一个目录为当前工作目录如F(值班目录),文件J相对路径名为J。
所有路径名,若不是从根目录开始,都是相对于工作目录的。
五、目录查询技术
1.线性查找法、hash法、二分查找法。
2.设置当前工作目录(当前工作目录文件在内存中),可减少查找目录的时间。
3.查询目录的读盘次数:
与目录所在的层次有关
与目录文件结构有关。
(索引、链式)
例1.索引文件(目录文件、普通文件)查找读盘次数。
问:
在根目录下访问文件/usr/ast/mbox至少读盘几次?
406块是
/user/ast的目录文件
26
。
6
64
grants
92
books
60
mbox
81
minix
17
src
结点26是
/user/ast/目录文件索引结点
496
132#块是
/user的目录文件
.
..
19
dick
30
erik
51
jim
ast
45
bal
结点6是
/user目录
文件索引结点
132
根目录
4
bin
7
dev
14
lib
9
etc
usr
8
tmp
结点60是
/use/ast/mbox
590
780
690
图8-11查找/usr/ast/mbox的步骤
读盘次数:
(目录文件也是索引文件)
根目录在内存中,查到usr的索引结点号6,读磁盘索引结点——1次
由索引结点得到usr目录文件放在132盘块中,读132盘块——2次
由usr目录文件中查到ast的索引结点26,读磁盘——3次
由ast的索引结点得到/usr/ast的目录文件在406盘块中,读盘406盘块——4次
由/usr/ast的目录文件查到mbox的索引结点60,读盘——5次
由索引结点得到文件/usr/ast/mbox的一系列块号,至少读1次——共6次
结论:
若目录文件本身也是索引文件,则每查一级目录文件必须读盘2次(读索引结点,再读目录文件)。
例2.链接文件读盘次数
某文件系统中,硬盘物理块大小为512字节。
有文件A,包含589个记录,每个记录255个字节,每个物理块放2个记录。
文件A所在的目录为多级树型结构,每个目录项占127个字节,每个物理块放4个目录项,根目录的第一块常驻内存。
root
(bitdevetcboot)unixusrtmp
mikepaulmaryzhangyouhe
file1dir1dir2
ABCDE
1.若文件的物理结构采用链式存储方式,链占2个字节,那么要将文件A全部读入内存,至少需要多少次读盘?
目录检索读盘(目录文件也是链式文件)
每个盘块放4个目录项,根目录第一块在内存中
读盘1次:
将根目录的下一块读入内存、查到/usr
读盘2次:
将下一级目录第一块读入、you在目录的下一块,再读盘,查到/usr/you
将下一级目录读入、查到/usr/you/dirl
将dirl目录文件读入,查到A的第一块地址。
文件A共589个记录,占295块盘块,文件A全部读入内存需读盘295次.
共计:
5(查目录共5次读盘(目录也是链式存储))+295=300次
2.如果要读文件A的第487记录,需读盘几次?
(1)A为隐式链接文件
487记录在第244块上(逻辑块号),隐式链接文件必须从第一块读,共读盘244次+5(查目录读盘)=249次
(2)A为显式链接文件
沿链查找的过程在内存的FAT表中进行不需读盘,当找到244块对应的物理块后可直接读盘(一次)。
共读盘1+5=6次
例3.若A为连续文件,读第487记录(目录仍为上述链式文件)
连续文件可根据文件所在的起始盘块号和相对块号直接确定物理块号。
共读盘:
1+5=6次。
4.7文件共享
一、早期实现文件共享的方法
1.绕弯路法
在当前的目录下访问其他目录的文件
例。
在F下访问J:
.E.J
(3)(17)(“”表示一个父目录)
访问A:
..C.A
(9)
2.连访法
为提高对共享文件的访问速度,把两个文件目录项链接。
如,文件17:
把两个文件目录项(如K和J)链接:
在不同的目录下用不同的名字访问同一个文件。
在F下访问A:
.D.F
(3)(9)
在文件说明中增加:
连访属性,共享计数。
66789
5
1011
3.利用基本文件目录实现文件共享
在文件系统中设置一张基本文件目录表,每个文件都有一个唯一标识符(整数)(系统赋予的内部编号)和文件的说明信息。
目录文件中只包含文件的符号及唯一的标识符。
不同目录中不同的文件名,若文件标识符相同,则代表同一个文件(共享)。
如Wang中Bete和zhang中Alpha
ID
物理位置
5
∶
空闲文件目录
符号名
主目录
MFD
wang
Zhang的SFD
Mist
Oaf
Sqrt
的SFD
Wang的Beta(也是Zhang的Alpha)
OafReportMist
图8-12利用基本文件目录实现文件共享
二、基于索引结点的共享方式
图8-13包含共有共享文件的文件系统
共享目录(文件)、
共享文件应把该文件链接到两个(或多个)目录中,
?
如与链接。
如何链接
①物理地址分别存放在各自的文件目录中
Wang用户文件目录
盘块
Zhang用户文件目录
若文件目录中包含文件物理地址,链接时把物理地址复制到目录中。
问题:
一个用户添加新的盘块难以处理。
②共享索引结点:
文件修改时只需修改索引结点
Testr
索引结点
count=2
文件物理地址
Lee用户文件目录
Testt
图8-14基于索引结点的共享方式
③共享文件删除问题:
设置共享计数器
当共享计数count=0时才能删除
若文件主不使用共享文件时,也不能删除共享文件(其他用户仍使用)
B的目录
C的目录
Owner=c
Count=1
Count=2
链接前建立链接后拥有者删除文件后
图8-15进程B链接前后的情况
三、利用link类型的文件实现文件共享
C(文件主)Testt的索引结点
B
C.Testt
link类型文件Testr
只有文件主C才拥有指向索引结点的指针
要共享某一文件在本目录下创建一个link类型的文件Testr,该文件中只存放共享文件的路径(符号链)——如同间接访问。
访问共享文件要先读link文件,再按路径多次读盘。
网络文件的共享可用此方式。
此方式在文件主删除文件后,其他共享文件的用户不能访问。
4.8文件系统的安全性
安全和保护的问题:
(1)确保未被授权用户无法读取或修改某些文件
(2)保护计算机信息的特定操作系统机制
一、防止数据丢失
1.数据丢失的原因
灾祸,存储介质物理损坏。
硬件或软件故障:
CPU误操作通信故障、程序故障。
人的失误:
不正确的数据输入,磁盘安装故障。
2.备份
硬盘备份(P279)
数据1
的拷贝区
数据0
硬盘0硬盘1
CPU
图9-19利用两个硬盘互为后备系统的示意
(1)完全转储:
全部备份
(2)增量转储:
只转储已经变化的文件
二、用户验证
1.口令
口令安全问题:
防止口令文件被解密。
对每一个口令赋予一个几位随机数,当口令改变时,随机数也改变,再将口令和随机数加密。
鼓励用户挑选好的口令:
定期改定口令(一次性口令),
查问----问答,系统给出问题,把答案加密存放。
2.物理鉴定:
测量难以伪造的物理特征。
签名分析
手指长度测量
指纹
声音波纹
3.防止入侵者的对策
规定每个用户只允许在指定时间在指定的终端上登录
设置陷阱捕获入侵者。
三、保护机制
1.保护域进程允许访问的对象放在保护域中。
静态联系和动态联系。
P249
静态联系:
不同阶段对文件的使用权限相同。
动态联系:
进程运行在不同的阶段从一个保护域切换到另一个保护域。
F3[R]
F4[RWE]Priter1[W]
F5[RW]
F6[RWE]
Ploter2[W]]
Printer
域1域2域3
F1[R]
F2[RW]
图8-16三个保护域
2.访问矩阵
访问矩阵用来记录某个对象属于哪一个域
对象
域
文件1
文件2
文件3
文件4
文件5
文件6
打印机1
绘图仪2
D1
R
R.W
D2
R,W,E
W
D3
R:
读;
W:
写;
E:
执行
图8-17一个保护矩阵
进程在执行时,可以从一个域切换到另一个域。
例如,当进程执行系统调用时,从用户态切换到核心态。
用户态和核心态的进程有不同的访问对象集,如内核部分可以访问物理内存的所有页面。
访问整个磁盘和其他保护资源。
具有切换权的保护矩阵
域D1
域D2
域D3
R,W
S
执行;
S:
切换
图8-18具有切换权的保护矩阵
允许从D1切换到D2
允许从D2切换到D3
不允许从D3切换到D2
3.访问矩阵的修改
(1)拷贝权P250图8-19把某个域的访问权(加*号者)扩展到同一列的其它域中。
D1
W*
R*
转换拷贝权
限制拷贝
(2)所有权:
利用所有权来增加或删除访问权
O,E
R*,O
R*,O,E
O,R*,W*
R*,O,W
(3)控制权:
用于改变矩阵内一行中各项的访问控制权。
control
R,E
4.访问矩阵的实现
访问矩阵规模大且有很多空项,大多数域只存取很少的对象,大而空的矩阵浪费了大量的存储空间。
按行或按列存储矩阵,而且只存储非空元素。
(1)访问控制表(Accesscontrollist)
访问矩阵按列(对象)进行划分,为每一列建立一张访问控制表(ACL)
假设有四个用户(uid)Jan,Else,Jelle和Maaike。
他们分别属于用户组system,staff,student下列为一些文件的访问控制表:
文件名(用户、用户组、权限)
File0:
(Jan,*,RWX)
File1:
(Jan,system,RWX)
File2:
(Jan,*,RW-),(Else,staff,RW-),(Maaike,*,RW-)
File3:
(*,student,R--)
File4:
(Jelle,*,---),(*,student,R--)
(无权访问)
可以把每个文件的ACL放在一个单独的磁盘块中,并在文件的i结点中包含这个磁盘块号。
对象的拥有者随时都能改变对象的访问控制表,他可以禁止原先允许的访问。
但改变ACL很可能不会影响当前正在使用该对象的用户(当前打开该文件的用户)。
(2)访问权限表(capabilities)
访问矩阵按行进行划分,每一行(每个(域)进程)构成一张访问权限表
类型
权利
对象
文件
打印机
R——
RWE
RW—
—W—
指向文件3的指针
指向文件4的指针
指向文件5的指针
指向打印机1的指针
图8-22访问权限表
访问权限表不允许用户进程直接访问,有三种方式保护:
①将访问权限表放到系统区,只允许OS对它访问;
②将访问权限表加密后放到用户空间
③对每个对象建立一个标识位,标明该对象是否要访问权限表。
大多数系统同时采用访问控制表和访问权限表
当进程第一次访问一个对象时,先检查访问控制表。
若进程有合法访问该对象权利,便把该对象连接到进程的访问权限表。
4.9文件的操作
一、建立文件
creat(文件名、文件属性、设备号)
功能:
在指定的软盘或硬盘上建立一个文件。
OS处理:
为该文件建立一个目录,填上文件名和基本属性。
有的系统还为文件分配所需的部分或全部文件空间。
文件被建立后,只要不删除它,就一直存在。
有的系统把建立文件的要求隐含在“写命令”中。
二、删除文件
Delete(文件名)
将文件从文件系统中删除
删除文件的目录项,回收该文件所占用的存储空间。
三、打开文件
Open(文件名)
为执行读、写操作做好准备,把有关的目录信息抄到主存中。
有的系统把“打开”文件隐含在“读命令”中。
1.依据文件的路径查找文件。
2.在内存中申请一个活动的文件控制块(如unix中的内存索引结点),将外存中文件控制的信息复制到内存的文件控制块中。
3.在内存中建立进程和打开文件的通路并设置文件指针
OS为每个用户规定了可以同时打开的文件数目
进程PCB表内存文件控制块(内存索引结点)
打开文件表
F1
F2
….
从文件索引结点复制文件的
基本信息。
文件读写指针
文件打开后,可不必再查找文件,从内存的文件控制块中可得到文件的控制信息。
四、关闭文件
close(文件名)
当对文件的操作完成后,需关闭文件切断用户与该文件的联系。
1.撤消内存中该文件的目录信息(回收内存文件控制块)。
2.若文件已被修改,应该内存中的文件控制块的信息写回到该文件的目录(或磁盘索引结
点)。
3.将缓冲区信息写入文件。
五、读、写文件
根据读写指针指的逻辑地址读、写文件。
Read(A,5)
(0)验证访问权限
(1)根据文件逻辑结构,确定第5个记录起址。
(2)算逻辑块号根据文件物理结构查找物理块号。
(3)由设备驱动程序读该块。
(4)由块内位移读记录。
补充习题
4.1P241图8—10中,问
(1)可否将目录5中的文件C改名为A?
为什么?
(2)在一段时间里,用户主要频繁使用文件18,19,为了使操作方便和提高速度,应如何处理?
(3)若根目录常驻内存,目录文件指出下一级的文件,若下一级为目录文件,则给出目录文件的第一块地址,若为普遍文件,则给出FCB地址,目录文件组成链接文件,普通文件为索引文件:
a.在主目录下要求读文件18的某一页时,至少应启动磁盘几次?
(假定读/B/E/M时不用先打开,且文件18是第一次读)?
b.若13为值班目录,读18中某一页,至少应读几次磁盘?