• coursera 《现代操作系统》 -- 第十周 文件系统(2)


    身份验证 Authentication

    知道用户是谁。通过账号密码、Id 这样的识别出来。

    访问控制 Permission

    知道用户是谁后。

    主动控制

    记录用户ID和对应的访问权限 --> 记录可访问该文件的用户ID

    文件没有记录的用户ID则不可以访问。

    权限表

    没有记录的文件名则用户不可以访问。

    记录了文件名,但没有对应权限,也不能执行对应操作。

    u 代表所有者(user)
    g 代表所有者所在的组群(group)
    o 代表其他人,但不是u和g (other)
    a 代表全部的人,也就是包括u,g和o
    r 表示文件可以被读(read)
    w 表示文件可以被写(write)
    x 表示文件可以被执行(如果它是程序的话)
      其中:rwx也可以用数字来代替
    r ------------4
    w -----------2
    x ------------1
    - ------------0

    那么我们常见的以下的一些权限就很容易都明白了:
    -rw------- (600) 只有所有者才有读和写的权限
    -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
    -rwx------ (700) 只有所有者才有读,写,执行的权限
    -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
    -rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
    -rw-rw-rw- (666) 每个人都有读写的权限
    -rwxrwxrwx (777) 每个人都有读写和执行的权限

    UNIX 的文件访问控制

    文件系统的性能

    瓶颈主要为磁盘,因为磁盘的速度远远落后于内存

    分析问题的过程:

    问题:减少磁盘请求时间

    1. 访盘请求呢通常是由三个时间组成:寻道时间、 旋转延迟时间、 和数据传送的时间。 

      从软件层面考虑,我们能做的就是:减少寻道时间,减少旋转延迟时间

    2.1 如何减少寻道时间

      分析寻道时间:根据磁盘地址:台号+柱面号+盘面号+扇区号 找到对应的块。

    由于要先获取 i 节点,再获取 i 节点对应的数据,所以 i 节点与对应的数据块的寻道时间越短越好。那么,放在i节点后面最好。

    2.2 如何减少旋转延迟时间

      分析旋转延迟时间:磁头要等到数据块经过时才能读取,所以我们设计好,数据块在磁道的排列

    缓存的使用

    1. 因为存在速度差异,如 CPU --> 内存 --> 磁盘。

    2. 局部性原理

    如何实现:

    在速度更快介质的里面,建立一个下级介质的缓存。缓存大小比较小,所以需要替换策略。

    从硬盘耗时入手

    减少寻道时间

    磁盘调度

    通过调度磁盘访问序列,达到减少寻道时间、延迟时间的目的。(感觉计算的很多调度都属于数学问题,是否可以让数学方面的人设计,然后程序员实现?)

    还要考虑请求等待的问题,要让请求在一定期限内完成。

    练习1

    理解题目中的名词

    链接结构

    索引结构、物理地址、块地址以及启动磁盘之间的关系

    顺序结构

    错题

    8。

    有4个访问第66柱面的访盘请求,其访问要求如下:

    请求号柱面号磁头号扇区号
    66 1 4
    66 4 2
    66 4 4
    66 2 7

    下列哪一种执行顺序可以获得最小的平均服务时间?

    ②、①、④、③

    ①、②、③、④

    ①、②、④、③

    ②、①、③、④

    先弄懂磁盘结构

    所有磁头是否是共同进退的?

    主要看柱面号与扇区号

    扇区是有顺序的,比如读了1扇区,读完后就在2扇区了,想要继续读1扇区,只能等待转完一圈。所以相同扇区的顺序应该隔开

    10。【多选题】(有问题)

    设计文件系统时应尽量减少访问磁盘的次数,以提高文件系

    统的性能。下列各种措施中,哪些可以减少磁盘服务时间?

    当前目录

    磁盘碎片整理

    块高速缓存

    磁盘的旋转调度

    内存映射文件

    假设磁头在65号柱面上操作时,有其他访问请求到达,其柱面(磁道)号为85、46、114、16和116。当系统完成65号柱面(磁道)的操作后,若采用最短寻找时间优先(SSTF)磁盘调度算法,为完成这些请求,磁头需要移动的柱面(磁道)数是

    149

    139

    181

    159

    使用 Python 编写的 SSTF

    # -*- coding: utf-8 -*-
    from collections import OrderedDict
    
    __author__ = 'Simon'
    
    """使用 Python 实现 SSTF 磁盘调度算法
    思路:
    计算移动到各个磁道的距离
    生成字典,形式为 `目标磁道: 当前磁道到目标磁道的距离`
    以`当前磁道到目标磁道的距离`排序,生成一个 OrderedDict
    
    将当前磁道移动到目标磁道,
    从目标磁道列表中删除目标磁道,
    移动距离加上`当前磁道到目标磁道的距离`
    
    循环上述过程,直到目标磁道列表为空
    """
    
    track_list = [85, 46, 114, 16, 116]
    current_track = 65
    
    
    def find_shortest_track(current_track, a_list):
        a_dict = {num: abs(num - current_track) for num in a_list}
        ordered_dict = OrderedDict(sorted(a_dict.items(), key=lambda t: t[1]))
        return ordered_dict
    
    
    def f(current_track, a_list):
        ans = 0
        ordered_dict = find_shortest_track(current_track, a_list)
        while ordered_dict:
            t = list(ordered_dict.items())
            next_track, movement = t[0]
            ans += movement
            current_track = next_track
            a_list.pop(a_list.index(current_track))
            ordered_dict = find_shortest_track(current_track, a_list)
        return ans
    
    print(f(current_track, track_list))
    # >>> 149
    

      

  • 相关阅读:
    小熊派4G开发板初体验
    空间换时间,查表法的经典例子
    C语言、嵌入式应用:TCP通信实践
    【实践】基于RT-Thread的智慧路灯案例实验分享
    STM32串口打印的那些知识
    【RT-Thread笔记】BH1750软件包的使用
    【RT-Thread笔记】OneNet软件包的使用
    串口通讯你真的会了吗?不妨看看这些经验
    三小记(2)
    audio标签实现简单的自定义播放器
  • 原文地址:https://www.cnblogs.com/jay54520/p/6667300.html
Copyright © 2020-2023  润新知