zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    BadUSB 利用
    java 将函数作为参数传递
    odoo12 修行提升篇之 常用的高阶函数 (二)
    odoo12 修行提升篇之 异步定时任务 (一)
    odoo12 修行基础篇之 利用kanban做分析 点击跳转分析模型列表 (九)
    odoo12 修行基础篇之 kanban (八)
    odoo12 修行基础篇之 记录批处理 (七)
    odoo12 修行基础篇之 列表的筛选和分组 (六)
    odoo12 修行基础篇之 添加记录编码 (五)
    odoo12 修行基础篇之 添加工作流和操作记录 (四)
  • 原文地址:https://www.cnblogs.com/jay54520/p/6667300.html
Copyright © 2011-2022 走看看