15、文件系统3(操作系统笔记)

四、文件系统的安全性

这里我们讨论如何确保未经授权的用户不能存取某些文件?

4.1 文件保护机制

  • 用于提供安全性、特定的操作系统机制
  • 对拥有权限的用户,应该让其进行相应的操作,否则,应禁止
  • 防止其他用户冒充对文件进行操作

于是在实现的时候需要考虑用户身份验证和访问控制。对于用户身份我们可以采用比如密码、口令等方式。

4.2 文件的访问控制

有不同的访问控制手段,比如主动控制(使用访问控制表)和能力表(使用权限表)。

  • 主动控制
    每个文件一个
    记录用户ID和访问权限
    用户可以是一组用户
    文件可以是一组文件

  • 能力表
    每个用户一个
    记录文件名及访问权限
    用户可以是一组用户
    文件可以是一组文件

4.3 UNIX的文件访问控制

采用文件的二级存取控制,审查用户的身份、审查操作的合法性

  • 第一级:对访问者身份的识别
    对用户分类:

    • 文件主(owner
    • 文件主的同组用户(group
    • 其他用户(other
  • 第二级:对操作权限的识别
    对操作分类:

    • 读操作(r
    • 写操作(w
    • 执行操作(x
    • 不能执行任何操作(-

五、文件系统的性能

5.1 文件系统的性能问题

  • 磁盘服务:速度成为系统性能的主要瓶颈之一。因此,在设计文件系统时应尽可能减少磁盘访问次数

  • 提高文件系统性能的方法:
    目录项(FCB)分解、当前目录、磁盘碎片整理、块高速缓存、磁盘调度、提前读取、合理分配磁盘空间、信息的优化分布、RAID技术等等

5.2 提高文件系统性能:块高速缓存(BLOCK CACHE)

又称为文件缓存、磁盘高速缓存、缓冲区高速缓存。是指在内存中为磁盘块设置的一个缓冲区,保存了磁盘中某些块的副本。当对文件系统进行操作的时候:

  • 检查所有的读请求,看所需块是否在块高速缓冲中
  • 如果在,则可直接进行读操作;否则,先将数据块读入块高速缓存,再拷贝到所需的地方。
  • 由于访问的局部性原理,当一数据块被读入块高速缓存以满足一个I/O请求时,和可能将来还会再次访问到这一数据块。

5.3 如何实现块高速缓存

  • 块高速缓存的组织方式

    1

    说明:在块高速缓存中有若干个数据块,首先将这些块使用一个双向链表组织起来,当要访问这个链的时候就将其从此链中拿出来,然后挂接到链尾,而我们对于某个文件使用的块要检查其是否在高速缓存中,所以这里又使用块号进行散列以提高检查速度。

  • 块高速缓存的置换问题(修改LRU
    因为此缓存的空间肯定是不会很大的,所以当其满时我们需要对其进行置换。对于以后可能会再次使用的块我们将其放在链尾,而对于使用概率很小的块可能就需要将其剔除。

  • 块高速缓存的写入策略
    在文件系统中,我们需要考虑该块是否会影响文件系统的一致性。这里如前面所讲,不同的操作系统采用了不同的一致性解决方案。

  • 提前读取

    • 思路:每次访问磁盘,多读入一些磁盘块
    • 依据:程序执行的空间局部性原理
    • 开销:较小(只有数据传输时间)
    • 具有针对性

5.4 Windows的文件访问方式

一般有下面三种方式:

  • 不使用文件缓存

    • 普通方式
    • 通过Windows提供的FlushFileBuffer函数实现
  • 使用文件缓存(块高速缓存)

    • 预读取。每次读取的块大小、缓冲区大小、置换方式
    • 写回。写回时机选择、一致性问题
  • 异步模式

    • 不再等待磁盘操作的完成。
    • 使处理器和I/O并发工作

用户对磁盘的访问通过访问文件缓存来实现:

  • WindowsCache Manager实现对缓存的控制

    • 读取数据的时候预取
    • Cache满时,根据LRU原则清除缓存的内容
    • 定期更新磁盘内容使其与Cache一致(每秒)
  • write-back机制

    • 在用户要对磁盘写数据时,只更改Cache中的内容,由Cache Manager决定何时将更新反映到磁盘
      2

5.5 提高文件系统性能:合理分配磁盘空间

分配磁盘块时,把有可能顺序存取的块放在一起(尽量分配在同一柱面上,从而减少磁盘臂的移动次数和距离)

3

说明:我们读取文件系统时,每次都要先找到i节点区,然后再去找到文件位置,如果i节点区在最外道,而相关文件在最里道,则在读取的时候磁臂就需要不断的移动,这样显示效率低下。一种解决方案如(a),我们将i节点区和相关文件放在距离较近的磁道上;另一种是如(b),首先将磁道分成了若干组,然后将i节点区也划分成若干部分,每一组磁道都有一个i节点区,而每个文件都和其i节点区在同一组,这样磁臂也不需要很大的移动。

5.6 提高文件系统性能:磁盘调度

当有多个访盘请求等待时,采用一定的策略,对这些请求的服务顺序调整安排,从而降低平均磁盘服务时间,达到公平、高效的目的。

  • 公平
    一个IO请求在有限时间内满足
  • 高效
    减少设备机械运动带来的时间开销

一次访盘时间 = 寻道时间 + 旋转延迟时间 + 传输时间

  • 减少寻道时间
  • 减少延迟时间

5.7 磁盘调度算法

例子:假设磁盘访问序列:98、183、37、122、14、124、65、67,这些数字表示柱面号或磁道号。读写头起始位置为53。请计算磁头服务序列和磁头移动总距离(道数)。下面使用几种算法进行计算:

  • 1、先来先服务(FCFS
    按访问请求到达的先后次序服务

    • 优点:简单、公平
    • 缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。
      4

      磁道服务序列和访问序列一致,磁头移动总距离为640,平均80
  • 2、最短寻道时间优先(Shortest Seek Time First
    优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。

    • 优点
      改善了磁盘平均服务时间
    • 缺点
      造成某些访问请求长期等待而得不到服务


      5
  • 3、扫描算法(SCAN电梯算法)
    当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中遇到的访问请求进行服务,然后判断该方向上是否有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。其实是一种对距离和方向的折中算法。

    6

  • 4、单向扫描算法(C-SCAN
    这是对扫描算法的一种改进。

    • 总是从零号柱面开始向里扫描
    • 按柱面(磁道)位置选择访问者
    • 移动臂到达最后一个柱面后,立即带动读写磁头快速返回到零号柱面
    • 返回时不为任何的等待访问者服务
    • 返回后可再次进行扫描

主要的目的是减少了新请求的最大延迟。

  • 5、N-step-SCAN策略
    • 把磁道请求队列分成长度为N的子队列,每一次用SCAN处理一个子队列
    • 在处理某一个队列时,新请求添加到其他子队列中
    • 如果最后剩下请求数小于N,则它们全部都将在下一次扫描时处理
    • N值比较大时,其性能接近SCAN;当N = 1时,即FIFO

主要是为了解决磁头臂的粘性问题。

  • 6、FSCAN策略
    • 使用两个子队列
    • 扫描开始时,所有请求都在一个队列中,而另一个队列为空
    • 扫描过程中,所有新到的请求都放入另一个队列中
    • 对新请求的服务延迟到处理完所有老请求之后

主要是为了解决磁头臂的粘性问题。本算法及以上都是对磁臂移动的优化算法。

  • 7、旋转调度算法
    根据延迟时间来决定执行次序的调度。一般有三种情况:
    • 若干等待访问请求访问同一磁头上的不同扇区
    • 若干等待访问请求访问不同磁头上的不同扇区
    • 若干等待访问请求访问不同磁头上的相同扇区
      解决方案:
    • 对于前两种情况:总是让首先到达读写磁头位置下的扇区先进行传送操作
    • 对于第三种情况:这些扇区同时到达读写磁头位置下,可任意选择一个读写磁头进行传送操作

5.8 提高文件系统性能:信息优化分布

记录在磁道上的排列方式也会影响输入输出操作的时间。

7

说明:如果信息是按左边那样分布的,那么如果首先读到1号记录,然后花5ms处理,但是此时磁盘已经转到了4号记录,于是如果我们要处理2号记录,则必须将4、5、6、7、8都旋转过去之后才能处理2号记录;而如果信息是按右边那样分布的,当处理完1号记录,而此时磁盘也刚好旋转到了2号记录处,这样就能极大的提高文件系统的性能。

5.9 提高文件系统性能:记录的成组与分解

  • 记录的成组
    把若干个逻辑记录合成一组存放在一块的工作
  • 进行成组操作时必须使用内存缓冲区,缓冲区的长度等于逻辑记录长度乘以成组的块因子(成组的长度)。
  • 成组的目的:提高了存储空间的利用率;减少了启动外设的次数,提高系统的工作效率。
  • 记录的分解
    从一组逻辑记录中把一个逻辑记录分离出来

典型的例子就是目录文件的存储。

5.10 提高文件系统性能:RAID技术

起始就是独立磁盘冗余阵列(Redundant Arrays of Independent Disks),就是将多块磁盘按照一定要求构成一个独立的存储设备。目的就是提高可靠性和性能。在实现时,需要考虑存储系统的速度、容量、容错、数据灾难发生后的数据恢复。

  • 数据是如何组织的

    • 通过把多个磁盘组织在一起,作为一个逻辑卷提供磁盘跨越功能
    • 通过把数据分成多个数据块,并行写入/读出多个磁盘,以提高数据传输率(数据分条stripe
    • 通过镜像或校验操作,提供容错能力(冗余信息的保存)
    • 最简单的组织方式是镜像,最复杂的是块交错校验。
  • 例1:RAID 0 - 条带化

    • 数据分布在阵列的所有磁盘上
    • 有数据请求时,同时多个磁盘并行操作
    • 充分利用总线宽带,数据吞吐率提高,驱动器负载均衡


      8

      这种方式没有冗余信息保存,即无差错控制,性能是最佳的。

  • 例2:RAID 1-镜像

    • 最大限度保证数据安全和可恢复性
    • 所有数据同时存在与两块磁盘的相同位置
    • 磁盘利用率为50%
      9

      数据的安全性是最好的,但是磁盘利用率较低。
  • 例3:RAID 4-交错块奇偶校验

    • 带奇偶校验
    • 以数据块为单位


      10

      数据保存在前四块盘上,而校验信息保存在第五块盘上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容