coursera 《现代操作系统》 -- 第十周 文件系统(2)
身份驗證 Authentication
知道用戶是誰。通過賬號密碼、Id 這樣的識別出來。
?
訪問控制 Permission
知道用戶是誰后。
主動控制
記錄用戶ID和對應(yīng)的訪問權(quán)限 --> 記錄可訪問該文件的用戶ID
文件沒有記錄的用戶ID則不可以訪問。
權(quán)限表
沒有記錄的文件名則用戶不可以訪問。
記錄了文件名,但沒有對應(yīng)權(quán)限,也不能執(zhí)行對應(yīng)操作。
?
u 代表所有者(user)
g 代表所有者所在的組群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被讀(read)
w 表示文件可以被寫(write)
x 表示文件可以被執(zhí)行(如果它是程序的話)
其中:rwx也可以用數(shù)字來代替
r ------------4
w -----------2
x ------------1
- ------------0
那么我們常見的以下的一些權(quán)限就很容易都明白了:
-rw------- (600) 只有所有者才有讀和寫的權(quán)限
-rw-r--r-- (644) 只有所有者才有讀和寫的權(quán)限,組群和其他人只有讀的權(quán)限
-rwx------ (700) 只有所有者才有讀,寫,執(zhí)行的權(quán)限
-rwxr-xr-x (755) 只有所有者才有讀,寫,執(zhí)行的權(quán)限,組群和其他人只有讀和執(zhí)行的權(quán)限
-rwx--x--x (711) 只有所有者才有讀,寫,執(zhí)行的權(quán)限,組群和其他人只有執(zhí)行的權(quán)限
-rw-rw-rw- (666) 每個人都有讀寫的權(quán)限
-rwxrwxrwx (777) 每個人都有讀寫和執(zhí)行的權(quán)限
UNIX 的文件訪問控制
?
文件系統(tǒng)的性能
瓶頸主要為磁盤,因為磁盤的速度遠遠落后于內(nèi)存
分析問題的過程:
問題:減少磁盤請求時間
1. 訪盤請求呢通常是由三個時間組成:尋道時間、?旋轉(zhuǎn)延遲時間、 和數(shù)據(jù)傳送的時間。?
從軟件層面考慮,我們能做的就是:減少尋道時間,減少旋轉(zhuǎn)延遲時間
2.1 如何減少尋道時間
分析尋道時間:根據(jù)磁盤地址:臺號+柱面號+盤面號+扇區(qū)號 找到對應(yīng)的塊。
由于要先獲取 i 節(jié)點,再獲取 i 節(jié)點對應(yīng)的數(shù)據(jù),所以 i 節(jié)點與對應(yīng)的數(shù)據(jù)塊的尋道時間越短越好。那么,放在i節(jié)點后面最好。
?
2.2 如何減少旋轉(zhuǎn)延遲時間
分析旋轉(zhuǎn)延遲時間:磁頭要等到數(shù)據(jù)塊經(jīng)過時才能讀取,所以我們設(shè)計好,數(shù)據(jù)塊在磁道的排列
?
?
緩存的使用
1. 因為存在速度差異,如 CPU --> 內(nèi)存 --> 磁盤。
2. 局部性原理
如何實現(xiàn):
在速度更快介質(zhì)的里面,建立一個下級介質(zhì)的緩存。緩存大小比較小,所以需要替換策略。
?
?
從硬盤耗時入手
減少尋道時間
?
磁盤調(diào)度
通過調(diào)度磁盤訪問序列,達到減少尋道時間、延遲時間的目的。(感覺計算的很多調(diào)度都屬于數(shù)學問題,是否可以讓數(shù)學方面的人設(shè)計,然后程序員實現(xiàn)?)
還要考慮請求等待的問題,要讓請求在一定期限內(nèi)完成。
?
練習1
?
理解題目中的名詞
鏈接結(jié)構(gòu)
索引結(jié)構(gòu)、物理地址、塊地址以及啟動磁盤之間的關(guān)系
順序結(jié)構(gòu)
?
錯題
8。有4個訪問第66柱面的訪盤請求,其訪問要求如下:
| ① | 66 | 1 | 4 |
| ② | 66 | 4 | 2 |
| ③ | 66 | 4 | 4 |
| ④ | 66 | 2 | 7 |
下列哪一種執(zhí)行順序可以獲得最小的平均服務(wù)時間?
②、①、④、③
①、②、③、④
①、②、④、③
②、①、③、④
先弄懂磁盤結(jié)構(gòu)
所有磁頭是否是共同進退的?
主要看柱面號與扇區(qū)號
扇區(qū)是有順序的,比如讀了1扇區(qū),讀完后就在2扇區(qū)了,想要繼續(xù)讀1扇區(qū),只能等待轉(zhuǎn)完一圈。所以相同扇區(qū)的順序應(yīng)該隔開
?
10。【多選題】(有問題)設(shè)計文件系統(tǒng)時應(yīng)盡量減少訪問磁盤的次數(shù),以提高文件系
統(tǒng)的性能。下列各種措施中,哪些可以減少磁盤服務(wù)時間?
當前目錄
磁盤碎片整理
塊高速緩存
磁盤的旋轉(zhuǎn)調(diào)度
內(nèi)存映射文件
?
假設(shè)磁頭在65號柱面上操作時,有其他訪問請求到達,其柱面(磁道)號為85、46、114、16和116。當系統(tǒng)完成65號柱面(磁道)的操作后,若采用最短尋找時間優(yōu)先(SSTF)磁盤調(diào)度算法,為完成這些請求,磁頭需要移動的柱面(磁道)數(shù)是
149
139
181
159
使用 Python 編寫的 SSTF
?
# -*- coding: utf-8 -*- from collections import OrderedDict__author__ = 'Simon'"""使用 Python 實現(xiàn) SSTF 磁盤調(diào)度算法 思路: 計算移動到各個磁道的距離 生成字典,形式為 `目標磁道: 當前磁道到目標磁道的距離` 以`當前磁道到目標磁道的距離`排序,生成一個 OrderedDict將當前磁道移動到目標磁道, 從目標磁道列表中刪除目標磁道, 移動距離加上`當前磁道到目標磁道的距離`循環(huán)上述過程,直到目標磁道列表為空 """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
轉(zhuǎn)載于:https://www.cnblogs.com/jay54520/p/6667300.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的coursera 《现代操作系统》 -- 第十周 文件系统(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt 5.0中HeaderView的se
- 下一篇: Windows 服务程序编写