文件管理2《第四章》

目录的实现:线性表,散列表
文件的实现
外存分配方式(连续分配、链接分配、索引分配);
连续分配(Continuous Allocation)要求为每一个文件分配一组相邻接的盘块。把逻辑文件中的 记录顺序地存储到邻接的各物理盘块中,这样所形成的文件结构称为顺序文件结构,此时的 物理文件称为顺序文件。
索引分配
1.单级索引分配
链接分配方式虽然解决了连续分配方式所存在的问题,但又出现了下述另外两个问题:
(1) 不能支持高效的直接存取。
(2) FAT 需占用较大的内存空间。
2.多级索引分配
当 OS 为一个大文件分配磁盘空间时,如果所分配出去的盘块的盘块号已经装满一个 索引块时,OS 便为该文件分配另一个索引块,用于将以后继续为之分配的盘块号记录于其 中。应为这些索引块再建立一级索引,称为第一级索引,即系统再分配一个索引块,作为第 一级索引的索引块,将第一块、第二块……等索引块的盘块号填入到此索引表中,这样便形 成了两级索引分配方式。如果文件非常大时,还可用三级、四级索引分配方式。
文件存储空间的管理方法
1.空闲表法

  1. 空闲表
    空闲表法属于连续分配方式,它与内存的动态分配方式雷同。
  2. 存储空间的分配与回收
    空闲盘区的分配与内存的动态分配类似,同样是采用首次适应算法、循环首次适应算法等。 在内存分配上,虽然很少采用连续分配方式,然而在外存的管理中,由于这种分配方式具有 较高的分配速度,可减少访问磁盘的 I/O 频率,故它在诸多分配方式中仍占有一席之地。
    2.空闲链表法
    空闲链表法是将所有空闲盘区拉成一条空闲链。根据构成链所用基本元素的不同,可把链表
    分成两种形式:空闲盘块链和空闲盘区链。
    (1) 空闲盘块链。这是将磁盘上的所有空闲空间,以盘块为单位拉成一条链。
    (2) 空闲盘区链。这是将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链。
    3.位示图法(14、15、16)
    (1).位示图
    位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对 应的盘块空闲;为“1”时,表示已分配。有的系统把“0”作为盘块已分配的标志,把“1” 作为空闲标志。
    (2).盘块的分配
    根据位示图进行盘块分配时,可分三步进行:
    顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲时)。
    将所找到的一个或一组二进制位转换成与之相应的盘块号。假定找到的其值为“0”的二
    进制位位于位示图的第 i 行、第 j 列,则其相应的盘块号应按下式计算: n 代表每行的位数
    b = n(i - 1) + j
    (3) 修改位示图,令 map[i,j]=1。
    3.盘块的回收
    盘块的回收分两步:
    (1) 将回收盘块的盘块号转换成位示图中的行号和列号。转换公式为:
    i = (b - 1)DIV n + 1 j = (b - 1)MOD n + 1
    (2) 修改位示图。令 map[i,j] =0。
    4.成组链接法
    空闲盘块的组织
    (1) 空闲盘块号栈用来存放当前可用的一组空闲盘块的盘块号(最多含 100 个号),以及栈中 尚有的空闲盘块号数N。顺便指出,N还兼作栈顶指针用。例如,当N=100时,它指向S.free(99)。 由于栈是临界资源,每次只允许一个进程去访问,故系统为栈设置了一把锁。图左部示出了空闲盘块号栈的结构。其中,S.free(0)是栈底,栈满时的栈顶为 S.free(99)。
    (2) 文件区中的所有空闲盘块被分成若干个组,比如,将每 100 个盘块作为一组。假定盘上共有 10 000 个盘块,每块大小为 1 KB,其中第 201~7999 号盘块用于存放文件,即作为文件区,这样,该区的最末一组盘块号应为 7901~7999;次末组为 7801~7900……;第二组的盘块号为 301~400;第一组为 201~300,如图 6-23 右部所示。
    (3) 将每一组含有的盘块总数 N 和该组所有的盘块号记入其前一组的第一个盘块的
    S.free(0)~S.free(99)中。这样,由各组的第一个盘块可链成一条链。
    文件保护。 口令保护 ,加密保护(强), 访问控制(差)
    为保证文件的安全性,可以采取哪些措施
    可以采取文件的保护和保密措施
    保护措施一般可以从两个方面考虑:即防止系统故障(包括软硬件造成的破坏)和防止用户共享文件造成的破坏。前者可以采用建立副本和定时存储的方法,后者可以采用树型目录文件,存取控制表,规定文件使用权限等方法。
    保密措施:隐藏目录文件,设置口令,使用密码等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值