当前位置:文档之家› 操作系统概论第5章 文件管理

操作系统概论第5章 文件管理


磁盘物理块的编号blk与物理地址(柱面号i、磁头号j、 扇区号k)的对应关系可以规定为: blk = i×m×n + j×n + k i = 0,1,2, 、、、,l -1;l为柱面数(磁道数) j = 0,1,2, 、、、,m-1;m为盘面数 k = 0,1,2, 、、、,n-1;n为扇区数
引导块(包括磁盘参数表和引导程序)
5.3.2 文件的物理结构 • *注:
• 1、连续结构(见书205页图8.8) 文件的内容存放在一系列连续编号的外存物理块中。 连续结构与磁带(顺序存取)相对应。 优点:一旦知道了文件在文件存储设备上的起址和文 件长度,就能很快地进行存取,因为文件的逻辑块 号到物理块号的变换可以非常简单地完成。 缺点:连续文件结构在建立文件时必须在文件说明信 息中确定文件信息长度,且以后不能动态增长。而 且在文件进行某些部分的删除后,又会留下无法使 用的零头空间。因此,连续文件结构不宜用来存放 用户文件、数据库文件等经常被修改的文件。
第五章 文件管理
5.1 概述
• 文件:具有名字的一组有序信息 • 文件(管理)系统:负责管理和存取文件信 息的软件机构 • 文件系统的主要功能:按名存取 • 按名存取文件系统设计者要考虑的问题:
• • • • • • 文件的目录结构 文件的逻辑结构和物理结构 文件存储空间的管理 内存打开文件结构 文件的共享、保密、保护 文件系统的用户界面及其实现
打开文件时或者共享已在内存的该文件的inode,或者为其分配一个 空闲inode并将外存inode信息读入内存。
• 内存inode • 外存inode struct inode struct dinode { int i_mode; 各种属性(文 { int i_mode; 各种属性(文件类型、 存取权限等) 件类型、存取权限等) char i_ilink; 连接此文件的 char i_ilink; 连接此文件的目录项数 (静态共享计数) 目录项数(静态共享计数) char i_uid; 文件主标识 char i_uid; 文件主标识 char i_gid; 文件组标识 char i_gid; 文件组标识 char i_sizeo; 文件长度二进制数字 char i_sizeo; 文件长度二 高8位 进制数字高8位 char *i_sizeo; 文件长度二进制数字 char *i_sizeo; 文件长度二 低16位 进制数字低16位 int i_addr[8]; 文件索引表 int i_addr[8]; 文件索引表 char i_flag; 各种标记 int i_atime[2];文件最近使用 时间 char i_count; 内存inode访问计数 int i_mtime[2];文件最近修改 char i_dev; 文件所在(逻辑)设备号 时间 char i_number; 文件的外存inode编号 } char i_laster; 为了向前读记载上次读的 物理块号 } inode[NINODE];
off=0 (a) off=3 (b) off=5 (c)
流式文件是基本的,必须由OS实现。 (操作系统向用户提供read(、、、) 和write(、、、) 系统调用来读写流式文 件)
• 记录式:把文件看成是记录读序列。 在流式的基础上由其它软件系统(例如数据库管理系统)来构造。
以小组为单位分工合作:设计一个文件系统
• 一个文件卷有100万个物理块,每块512B • 每个文件控制块大小为128B • 在其上最多允许建立1万个目录或文件,采用多级目录 结构 • 设备管理模块的bread(dev,pn)(把dev号设备上的 pn号物理块读入函数返回值指向的系统缓冲区) 可以调 用 • 设备管理模块的bawrite(bufp)(将bufp所指向的系统 缓冲区内容写到磁盘上) 可以调用
/
da
链接 a b dba
db
c
da
x
这时文件 “/da/b”的绝 对路径名有2 个, 相对路径 名有5个。 解 除”/da/b”的 两个链接相当 于删除文件.
a
x
b
a
x
y
。。。。。。
8.5.3 便于共享的文件目录(自己看书P213)
5.3文件的逻辑结构和物理结构 5.3.1 文件的逻辑结构
• 用户头脑中文件的结构(或者说是文件在用户头脑中的逻辑映象) • 字符流式:把文件看成是一个字符流。又称为(字符)流式文件。 每次读写文件都是从读写指针当前指向位置向后读写。 例如:一个流式文件内容为“ABCDEFGH 、、、” (a) 打开后读写指针值off=0; (b) 执行语句read(fd,abuf,3)读出的字符串为“ABC”,读写指针值 off=3; (c) 再执行语句read(fd,abuf,2)读出的字符串为“DE”,读写指针 ABCDEFGH 、、、 ABCDEFGH 、、、 ABCDEFGH 、、、 值off=5;
1)小组集体讨论确定总体设计方案(主要是数据结构设计)及 各部分的工作流程,分工画出open(、、、)、read(、、、) 、 write (、、、) 系统调用及文件存储空间分配释放程序的工作流 程图;组长负责画出总体工作流程及数据结构,并合成小组的 所有文档) 2)以小组为单位上台讲解,每个成员都要接受各种提问(都要 清楚整个系统的设计方案及各部分的工作原理和流程
答:读3次
• 3、索引结构(索引文件)
• 文件的内容存放在一系列不连续的外存物理块中, 文件的逻辑块号与外存的物理块号的对应关系存 放在文件索引表中。(参见书207页图8.10)
• 文件太大,索引表很长怎么办? 解决方法:多重索引(参见书207页图8.11 ) • 链接结构地址变换(由逻辑块号变换为物理块号) 需要读很多次磁盘,效率低怎么办? 将链接指针集中起来(例如,DOS和WINDOWS 系统采将链接指针集中在FAT中)
引导(程序)块 专用块(记录卷的资源数据)
物理块号:
管理区 0 1 2 、、、 k+1 k+2
m
n
• UNIX文件系统有多个可装卸的文件卷组成,其中 一个为主文件卷,其它为子文件卷。子文件卷连接 在主文件卷目录树的某个空目录结点上。 (mount和unmount是装和卸文件卷的命令)。 • UNIX系统文件分类: 1)普通文件(字符流文件) 2)目录文件(每个目录结点一个,存放着一个目 录表) 3)特别文件(UNIX系统在目录/dev下为每个 I/O设备建立一个特别文件,其中存放着此设备 的物理特性、使用方式等信息)
• DOS系统以扇区(512个字节)为单位进行读写。 • 以512字节的整数倍为单位进行空间分配的。
• 1、连续结构(见书205页图8.8)
连续文件结构
• 2、连接结构(串联文件)
• 文件的内容存放在一系列不连续的外存物理块中, 这些物理块通过指针连接起来。(参见书206页 图8.9)
问:要找到3号逻辑块应该在哪个物理块上需要读几次磁盘?
5.5.2 inode(文件控制块)及文件目录 • 2、内存inode struct inode { int i_mode; 各种属性(文件类型、存取权限等) char i_ilink; 连接此文件的目录项数(静态共享计数) char i_uid; 文件主标识 char i_gid; 文件组标识 char i_sizeo; 文件长度二进制数字高8位 char *i_sizeo; 文件长度二进制数字低16位 int i_addr[8]; 文件索引表 (以上为dinode结构数据项 ) char i_flag; 各种标记 char i_count; 内存inode访问计数(动态共享计数) char i_dev; 文件所在(逻辑)设备号 char i_number;文件的外存inode编号 char i_laster; 为了向前读记载上次读的物理块号 } inode[NINODE];
物理块号:
0
管理区 1 、、、
h h+1
n
FAT为文件分配表,既记录文件存储区的使用情况,有记录文件的 连接指针 引导(程序)块 专用块(记录卷的资源数据)
物理块号:
管理区 0 1 2 、、、 k+1 k+2
m
n
5.2.2文件控制块(FCB)
• 由用于标识、定位、说明和控制一个文件的所有 信息组成的数据结构。 • 基本上包括下列信息:文件名、用户名、存放方 式、物理位置、文件长度、创建时间、最后修改 时间、共享说明、文件类型、存取权限、 、、、、 • 文件与文件控制块一一对应,文件控制块是文件 存在的唯一标志
5.2.3文件的目录
• 文件目录项:由找出一个文件所需的信息组成 • 文件目录表:由多个文件目录项组成
文件目录项的组成方案一:文件控制块充当文件目录项
文件名 用户名 物理位置 、、、
文件目录项的组成方案二:由文件和文件控制块地址组 成(文件目录表尽可能小) 查找一个文件先查找文件 文件名 文件控制块地址 目录表,找出其文件控制 块的地址,再根据这个地 址取出文件控制块内容。 方案一把文件目录表从外存读入内存花得时间比方案二多; 但按方案二要获得找到文件的控制块内容还需要再读一次外存。
5.2 文件卷、文件控制块和文件目录结构 5.2.1 文件卷
一个磁带、硬盘(分区)或软盘等,由一系列连续 编号的物理块(通常为一个扇区)组成。
引导块 物理块号: 0 1
管理区 2 k+1 k+2
文件存储区 n
* 一个(计算机文件)系统中通常有多个文件卷 (例如
Windows系统中的C盘、D盘、E盘等,也就是多个硬盘分区)
*提问:
• 1. 文件目录表的位置? 在管理区 • 2. 查找文件目录表是否在外存进行查找? 不能,查找,匹配等动作只能在内存中进 行,将表读入到内存之后再查找。 • 3. 读外存与查找的效率差别? 差许多数量级,读外存相当慢。 速度级别:内存ns,磁盘ms
相关主题