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 = 65def 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_dictdef f(current_track, a_list):ans = 0ordered_dict = find_shortest_track(current_track, a_list)while ordered_dict:t = list(ordered_dict.items())next_track, movement = t[0]ans += movementcurrent_track = next_tracka_list.pop(a_list.index(current_track))ordered_dict = find_shortest_track(current_track, a_list)return ansprint(f(current_track, track_list)) # >>> 149
轉載于:https://www.cnblogs.com/jay54520/p/6667300.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的coursera 《现代操作系统》 -- 第十周 文件系统(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt 5.0中HeaderView的se
- 下一篇: Anaconda简介以及安装