【總結】作業系統原理
(本文只是自己的學習總結,不一定正確,僅供參考)
文章目錄
- 作業系統原理
- 基本內容
- 基本特徵
- 執行機制
- 核心kernel/殼shell
- 分時作業系統/實時作業系統
- 網路作業系統/分散式系統
- 序列/並行/併發/分散式
- 同步/非同步
- 阻塞/非阻塞
- 讀/寫/執行
- 硬體平臺及系統位數定義
- 啟動
- 中斷interrupt/異常exception/系統呼叫systemcall
- 系統API
- 處理器管理
- 記憶體管理
- 檔案管理
- 裝置管理
- 作業系統分類
作業系統原理
基本內容
進行本地計算機或網路資源管理,合理分配計算、時間、儲存、頻寬等資源,提供與使用者進行互動的介面。
常見作業系統有實時作業系統ucos,非實時作業系統linux、windows等。
基本特徵
併發
在巨集觀時間上可以同時併發執行多個程序,但實際上在微觀的CPU時間上是序列進行的。
分時(時間片輪轉)
把處理器的執行時間分成很短的時間片,按時間片輪流把處理器分配給任務使用。
共享
某些硬體資源、某些儲存在記憶體上的資料可以由多個程序共享。
互斥共享
系統中的某些資源,如印表機、磁帶機,雖然它們可以提供給多個程序使用,但為使所列印或記錄的結果不致造成混淆,應規定在一段時間內只允許一個程序訪問該資源。
交替共享
系統中還有另一類資源,允許在一段時間內由多個程序“同時”對它們進行訪問。這裡所謂的“同時”往往是巨集觀上的,而在微觀上,這些程序可能是交替地對該資源進行訪問即
“分時共享”。典型的可供多個程序“同時”訪問的資源是磁碟裝置。
虛擬
作業系統把物理上的硬體資源虛擬成軟體上的表達(比如linux上所有的I/O裝置都虛擬成檔案),通過使用者介面展現給使用者。也可以把一個物理實體虛擬成多個(多個終端,硬碟分割槽等),把多個物理實體虛擬成一個(分散式)。
時分複用(虛擬處理器)
空分複用(虛擬儲存器,虛擬裝置)
非同步
程序以非同步方式執行,在微觀上不確定何時執行哪個程序。
執行機制
使用者態和核心態
時鐘管理
中斷機制
核心kernel/殼shell
分時作業系統/實時作業系統
分時作業系統把處理器的執行時間分成很短的時間片,按時間片輪流把處理器分配給任務使用,分時作業系統可以實現多個使用者通過終端同時共享一臺主機,實現人機互動。大多數常見的作業系統都是分時作業系統。
實時作業系統能對外部的資訊在規定的時間(比時間片的時間還短)內作出處理(比如飛機訂票系統、工業控制系統、導彈制導系統)。多用於工業生產控制以及特殊領域,比如ucOS-Ⅱ等。
網路作業系統/分散式系統
網路作業系統把計算機網路中的各臺計算機有機地結合起來,提供一種統一、經濟而有效的使用各臺計算機的方法,實現各個計算機之間的互相傳送資料。網路作業系統最主要的特點是網路中各種資源的共享以及各臺計算機之間的通訊。
分散式計算機系統是由多臺計算機組成並滿足下列條件的系統:系統中任意兩臺計算機通過通訊方式交換資訊;系統中的每一臺計算機都具有同等的地位,即沒有主機也沒有從機;
每臺計算機上的資源為所有使用者共享;系統中的任意若千臺計算機都可以構成一個子系統,並且還能重構;任何工作都可以分佈在幾臺計算機上,由它們並行工作、協同完成。用於管理分散式計算機系統的作業系統稱為分散式計算機系統。該系統的主要特點是:分佈性和並行性。分散式作業系統與網路作業系統本質上的不同之處在於分散式作業系統中,若干臺計算機相互協同完成同一任務。
分散式系統是去中心化、自適應、並行運算的。
序列/並行/併發/分散式
序列:同一時刻只能執行一項任務。單處理器單核的都是序列。
並行:同一時刻可以執行多項任務。多核或者多處理器可以並行執行。
併發:同一時間段可以執行多項任務。其在微觀的時刻可以是序列也可以是並行。
分散式:在並行基礎上,任務在物理裝置上是分開的。
同步/非同步
同步:多個任務情況下,一個任務A執行結束,才可以執行另一個任務B。只存在一個執行緒。
非同步:多個任務情況下,一個任務A正在執行,同時可以執行另一個任務B。任務B不用等待任務A結束才執行。存在多條執行緒。使用者程序觸發IO
操作以後便開始做自己的事情,而當IO 操作已經完成的時候會得到IO
完成的通知。
阻塞/非阻塞
阻塞和非阻塞是針對於程序在訪問資料的時候,根據IO操作的就緒狀態來採取的不同方式,說白了是一種讀取或者寫入操作方法的實現方式,阻塞方式下讀取或者寫入函式將一直等待,而非阻塞方式下,讀取或者寫入方法會立即返回一個狀態值。
以銀行取款為例:
阻塞 :
ATM排隊取款,你只能等待(使用阻塞IO時,Java呼叫會一直阻塞到讀寫完成才返回);
非阻塞 :
櫃檯取款,取個號,然後坐在椅子上做其它事,等號廣播會通知你辦理,沒到號你就不能去,你可以不斷問大堂經理排到了沒有,大堂經理如果說還沒到你就不能去(使用非阻塞IO時,如果不能讀寫Java呼叫會馬上返回,當IO事件分發器通知可讀寫時再繼續進行讀寫,不斷迴圈直到讀寫完成)
讀/寫/執行
讀:讀取查詢等操作,不影響內容。
寫:增刪改操作,會改變原來的內容。
執行:可執行的程式,能夠對其他檔案產生讀寫等操作。
硬體平臺及系統位數定義
ARM處理器平臺(RISC)
嵌入式硬體、手機等。
linux可編譯進ARM架構執行。
安卓天生支援ARM。
微軟Windows不支援ARM。
X86處理器平臺(CISC)
桌面電腦、伺服器,windows/macos/linux等大多基於x86。
amd64
——只支援64位軟體,因為AMD搶先研發出了64位處理器,所以命名為AMD64
x86_64
——主要支援64位軟體,也向下相容32位軟體
x86
——只支援32位軟體
x86的細分:
i386對應的是32位系統
i686是i386的一個子集,取消對舊版本的相容,是更新的版本
i386 適用於intel和AMD所有32位的cpu
i686適用於新的CPU,i3/i5/i7等全都支援
其他體系
MIPS、PowerPC等
啟動
1.BIOS
加電自檢,啟動出廠固化在主機板上BIOS程式,處理基本的IO操作,啟動顯示卡、硬碟、記憶體等基本計算機組分,載入Bootloader。
2.Bootloader
存放在硬碟起始位置的OS載入程式,首先載入到記憶體中,是一個微小作業系統,把硬碟中實際作業系統OS載入到記憶體中,把控制權移交給OS。
3.OS
拿到控制權後,即開啟正常OS啟動過程,以及啟動後的正常工作。計算機執行中OS會一直常駐記憶體。
中斷interrupt/異常exception/系統呼叫systemcall
中斷:也稱外中斷。由裝置發出,作業系統處理
異常:也稱內中斷。由程式執行過程中意想不到的事件發出,由作業系統丟擲異常然後進行對應的處理
系統呼叫:程式主動向作業系統發出服務請求,作業系統處理。一般封裝成系統API
系統API
封裝系統呼叫到更高層次,更加方便程式使用。
WIN32 API——windows系統
POSIX API——unix/linux/mac os系統
處理器管理
程序是作業系統上應用程式執行的基礎。
每一個應用程式程序都有唯一的程序PID。
一個程序就是一個應用程式執行的生命週期。
作業系統對程序進行自動管理。
程序(process)
一個程序是具有獨立功能的程式在一個數據集合上的一次動態執行過程。
動態性(動態建立執行結束);併發性(多程序);獨立性;制約性(訪問資料或資源存在互斥衝突)。
一個程序應該包括:程式的程式碼;程式處理的資料;指令計數器;堆疊空間;系統資源(比如佔用CPU、記憶體、網路、外設、開啟檔案等)。
程序管理
PID
作業系統為每一個程序生成一個PCB(程序控制塊,連結串列),其ID即程序唯一標識PID。
PID包含本程序PID、父程序PID、使用者名稱資訊。
狀態佇列
對每種程序狀態建立狀態佇列,管理程序狀態,進行程序排程。
程序狀態
(建立Start)
建立程序的三種事件:系統初始化;使用者發起建立;程序發起建立。建立PCB-PID。
程序建立新程序:通過系統呼叫。exec()——覆蓋父程序,對外顯示為同一程序;fork()——複製父程序的所有資料,建立新程序PID;wait()——等待子程序返回結果並輔助徹底結束子程序。
就緒Ready
已獲取所有需要的非計算資源,就差進入CPU進行計算執行了。
執行Running
獲取包括CPU的所有資源,進入執行。
微觀上,一個CPU核心同一時刻只能有一個程序處於執行狀態。CPU排程的時間片輪轉,會讓各種程序在就緒態和執行態不斷迴圈。
巨集觀上,同一時刻會有多個程序正在執行。
阻塞Blocked(等待Waiting)
程序發生某種事件(如I/O請求不能滿足等)暫停執行的狀態。
喚醒:只能被別的程序或作業系統喚醒,要麼直接執行,要麼進入就緒佇列隨後執行。
掛起Suspend
從記憶體轉移到外存等待。
阻塞掛起:優先進行阻塞掛起。
就緒掛起:沒有阻塞程序時,選擇優先順序低的程序掛起。
(結束Done)
自願正常退出;自願錯誤退出;致命錯誤,由作業系統強制退出;被其他程序強制退出。
程序自願退出:通過系統呼叫。exit()——銷燬自身佔用的所有資源,在使用者態內消失,但PCB-PID並未消失,成為殭屍態,需要通過父程序wait()輔助。
程序間通訊(IPC)
兩個程序之間的通訊,通訊資料包括髮送send和接受receive
直接通訊:共享記憶體
間接通訊:訊息佇列
訊號signal
軟體中斷,軟體程序收到訊號後進行各種處理。只傳遞簡單的訊號,不能傳遞資料。
管道pipeline
Unix/linux使用的策略,父程序向子程序傳遞位元組流。
Shell終端寫命令時可利用管道把輸入輸出重定向。
訊息佇列message queues
間接通訊,新建一個變數——訊息佇列,通訊雙方向訊息佇列傳送或接收資料實現通訊。傳遞的是有資料結構可解析的資訊。
共享記憶體shared memory
在記憶體中建立共享的地址區間,多個程序可共享,直接通訊。但有併發排程的問題,要建立互斥鎖機制。
套接字Socket
多用於網路通訊。
執行緒(thread)
執行緒是比程序更小的能獨立執行的基本單位,是程序的子單位。
一個正在執行的多執行緒程式在作業系統層面只有一個程序PID。
多執行緒幾乎只佔用一個程序的資源,可以減少計算機的開銷。
同一個程序內的所有執行緒共享記憶體資源(包括程式碼段、資料段、程序PID、檔案操作符),各執行緒獨享CPU暫存器和堆疊。
執行緒也可併發執行,也有就緒、執行、阻塞狀態。
程序是資源分配單位,執行緒是CPU排程單位。
程序由作業系統建立結束和排程,執行緒由程式自身建立結束和排程。
主執行緒/子執行緒
一個程序初始的執行緒就是主執行緒,子執行緒由主執行緒建立。
守護執行緒Daemon
預設沒有守護執行緒,當所有子執行緒執行完畢後主執行緒才能退出。
守護執行緒:守護執行緒在後臺默默工作,當所有非守護執行緒都消失時,守護執行緒自動退出。對一個多執行緒程式設定守護執行緒,則主執行緒不必等其他執行緒,可以提前退出。
排程
非實時程序排程演算法
佇列排程
先來先執行
短程序優先排程
減少各個程序的等待時間
最高響應比排程
減少額外花費的切換時間
迴圈排程
輪流分享
多級反饋排程
自動根據佔用的時間片建立優先順序
公平排程
使用者維度的公平而非程序維度的公平
實時程序排程演算法
硬實時:必須要滿足實時性,不得有超越實時性要求的延遲
軟實時:可以允許偶爾延遲
速率單調排程
週期越短優先順序越高
最早期限排程
Deadline越早優先順序越高
多處理器排程演算法
比較複雜。
負載均衡
併發排程的問題
優先順序反轉問題
次高階程序提前搶佔了最高階程序需要的資源,導致最高階程序一直等待。
解決方法:優先順序繼承、優先順序天花板(把資源的優先順序定為最高階)
競態問題(鎖解決)
併發執行多條類似指令,對同一共享資料進行改動,可能發生衝突,產生不確定性。
解決:首先要在程序排程和執行緒排程時,一定要保證讀寫資料的指令的原子性。然後還需要加入鎖機制。
飢餓問題(鎖帶來的問題)
一個可執行程序,被排程器持續忽略,得不到應得的資源,導致一直處於可執行狀態卻不能執行。
死鎖問題(鎖帶來的問題,訊號量解決)
鎖帶來的問題,兩個或以上的程序,自己已經拿到了一部分資源但還需要其他資源,但其他資源又被其他程序佔用,相互等待,導致沒有一個程序能夠順利執行,陷入死迴圈。
解決:
死鎖預防——無搶佔,要麼全拿到,要麼拿不到全部則釋放已經拿到的,對所有資源排序,按照資源的順序進行申請;
死鎖避免——當程序申請資源的時候,系統會檢查申請的後果,儘量避免死鎖的發生;
死鎖檢測——通過演算法對執行中的系統進行掃描檢測,發現死鎖現象。
死鎖恢復——把死鎖的程序殺掉,資源搶佔。
死鎖避免演算法-銀行家演算法
假設資源就是銀行裡的資金,程序就是銀行的客戶。
前提條件:多個程序、多個資源;每個程序都儘可能地利用資源;如果程序得不到資源就等待;程序拿到全部需求的資源後在有限的時間內釋放資源。
資料結構:
n=程序數量,m=資源型別數量。
總需求量max——nxm矩陣。矩陣元素儲存每個程序請求每種資源的數量。
剩餘空閒量avilable——m向量。儲存每種資源的剩餘可用數量。
已分配量allocation——nxm矩陣。儲存已分配給每個程序的每種資源數量。
未來需要量need——nxm矩陣。每個程序對每種資源的未來需要的數量。
演算法:
通過資料結構判斷程序申請的資源是否超出了剩餘空閒量,未超出則分配,超出則暫時不分配,讓程序等待。
併發排程的原則
互斥
同一時刻只能有一個執行緒能夠使用資源,退出時釋放給其他執行緒
前進
如果一個執行緒想要獲得被佔用資源,那麼最終一定能夠成功
有限等待
其他執行緒要獲取資源的等待時間要有限,不能無限期等待
併發排程機制
鎖lock
加鎖解鎖,實現互斥的功能。加鎖則同一時刻只能有一個執行緒使用,解鎖則釋放給其他執行緒。
Lock.acquire()操作:等待直到鎖可用,然後搶佔鎖;
Lock.release()操作:釋放鎖,喚醒等待者如果有。
訊號量semaphore
一個整形數值,每個執行緒可呼叫,呼叫後即加1或減1,然後判斷訊號量數值,通過訊號量數值控制執行緒的等待和執行。
P()操作:訊號量減1,如果小於0則等待,否則繼續;(會阻塞)
V()操作:訊號量加1,如果小於等於0,喚醒一個等待的P()。(不會阻塞)
管程monitor
包括:一個鎖,多個條件變數。(鎖和訊號量的綜合利用)
記憶體管理
實體地址/虛擬地址/邏輯地址
實體地址:硬體記憶體的實際儲存地址,存在各種層次。
虛擬地址:作業系統建立的對映到實體地址的虛擬的地址空間(包括記憶體條上的實體記憶體、硬碟上的虛擬記憶體),線性訪問。
邏輯地址:程式中的地址編碼範圍,在程式編譯後生成,由編譯器決定,線性訪問。
塊
一段連續的儲存地址空間,空閒塊、非空閒塊。
碎片
不連續的容量比較小的空閒記憶體塊(磁碟碎片同理),難以利用,浪費儲存空間。
外部碎片——未分配的記憶體或磁碟的儲存地址片段。
內部碎片——已分配給程式,但程式並不使用,只有當程式退出後作業系統才能重新利用。
連續記憶體分配
首次適配演算法
按照地址順序依次尋找可用的空閒塊。
優點:邏輯、演算法簡單,能夠保留地址後方的大空閒塊。
缺點:容易產生碎片,不確定性。
最優適配演算法
使用比需求稍大的空閒塊,儘可能高效地利用空閒塊(見縫插針)。
優點:當大部分分配是小尺寸式非常高效,演算法比較簡單。
缺點:分配後難以擴充套件,重分配慢,產生大量小碎片。
最壞適配演算法
使用最大的可用空閒塊。
優點:避免產生瑣碎的小碎片,分配中等尺寸效果最好。
缺點:重分配慢,會破碎大的空閒塊以致大的需求無法被分配。
碎片整理
壓縮式碎片整理
移動各個非空閒塊,使其緊湊排列,則之間的小碎片消失。
交換式碎片整理
利用硬碟(虛擬記憶體),在硬碟中設定一段交換空間,把等待的程式空間轉移到交換空間,騰出空間給活躍的程式。
非連續記憶體分配
優點:更好的記憶體利用和管理、隔離;允許共享程式碼和資料(執行庫);支援動態載入和動態連結。
缺點:管理開銷大。
分段Segment
根據功能和特性分散分配到不同的實體地址。
程式訪問記憶體地址需要寫二元組:段號+段偏移。
堆
棧
程式碼(庫、使用者程式碼)
資料
分頁Page
邏輯頁
把地址分割成等長的子區間,與實體記憶體的頁幀相關,一般等於頁幀或者頁幀的2^n倍。一般一頁是4kB。
開銷比分段小。當前主流的非連續記憶體分配機制。
定址:頁地址+頁偏移。
物理頁幀Frame
實體地址的最小分割槽,與實體記憶體的硬體結構有關。
頁表Page Table
儲存邏輯頁號的索引表。如果邏輯地址很大,那麼單級頁表也會很大,所以實際系統中使用頁表快取、多級頁表。
頁表項的內容:邏輯頁號、標誌位、物理頁號。
頁表快取TLB
快取近期使用過的頁,儲存在CPU的Cache中,用於快速查詢頁表。
二級頁表
定址:一級頁地址+二級頁地址+頁偏移。
反向頁表
不是基於邏輯地址分頁(可能遠大於實體地址),而是基於實體地址分頁,可以減小頁表佔用的空間。
虛擬記憶體(交換空間)
1.用於記憶體管理,把等待的記憶體資料移入硬碟中的虛擬記憶體(交換技術),需要使用的時候再移入記憶體。
2.當記憶體太小甚至佔用過多乃至溢位時,可利用硬碟中的虛擬記憶體臨時當作記憶體使用。
佔用硬碟讀寫,速度慢,減少硬碟壽命。
缺頁中斷
一個程式會分配到多個邏輯頁,在虛擬記憶體管理中會動態移入移出某些頁,程式訪問某個頁的時候此頁可能已經移出記憶體,這種情況叫缺頁,會產生缺頁中斷。
缺頁中斷髮生的次數應當儘量少。
區域性頁面置換演算法
針對一個程式在實體記憶體中分配固定的頁,但少於程式的需求,因此需要利用虛擬記憶體進行頁面置換。
最優演算法
計算每個頁在下一次訪問前還需要等待多長時間,選擇等待時間最長的頁移出。
現實中很難實現,可以作為頁面置換演算法的評價標準。
先進先出演算法FIFO
記錄各個頁在記憶體中滯留的時間,滯留時間最長者(先進者)先出。
最近最久未使用演算法LRU
記錄各個頁最近未使用的時間,選擇最久未使用的移出。
時鐘演算法Clock
沒看懂?
最不常用演算法
記錄歷史訪問次數,選擇訪問次數最少的頁移出。
全域性頁面置換演算法
針對多個程式分配頁面。
工作集/常駐集
工作集:某個時間區間內的工作集,是在此時間區間內訪問過的所有頁。
常駐集:長期常駐記憶體的頁。(常駐記憶體)
常駐集包含於工作集,工作集包含於物理記憶體。常駐集越多,則能夠分配給新程式的實體記憶體就越少。(例如作業系統佔用太多常駐記憶體,則可使用的記憶體越少)
工作集演算法
保留工作集,替換不在工作集內的頁。
缺頁率置換演算法
動態調整工作集、常駐集,每當發生缺頁中斷時,就把此頁送入工作集、常駐集,以降低缺頁率。(自適應演算法)
當缺頁率高時-增加工作集。
當缺頁率低時-減少工作集。
檔案管理
檔案系統
卷控制塊superblock
每個檔案系統一個,檔案系統詳細資訊,塊,塊大小,空間管理
檔案控制塊inode
每個檔案一個,檔案詳細資訊,使用者、許可權、計數、指標
目錄結點dentry
每個目錄一個,所有目錄構成樹資料結構,父結點、子結點、指向檔案控制塊
檔案系統分類
磁碟檔案系統
fat
Windows早期檔案系統,fat32不支援4G以上的單檔案
ntfs
Windows使用的檔案系統,日誌功能
ext
Linux使用的檔案系統,目前版本ext4,日誌功能
光碟檔案系統
iso
資料庫檔案系統
網路檔案系統(不可靠)
nfs
網路檔案系統
smb
網路檔案系統
分散式檔案系統
hdfs
虛擬檔案系統
不是為了資料儲存,而是以檔案讀寫的方式展現或互動核心中的資料,Linux中的/proc目錄。
單個檔案
Windows通過表面的字尾名識別型別,linux通過檔案控制塊識別型別。
檔案描述符
是一個索引值,指向核心為每一個程序所維護的開啟檔案的記錄表項。
檔案指標
指向開啟的檔案的最近一次讀寫位置。
開啟檔案
程式程序呼叫系統的開啟檔案呼叫,系統在開啟檔案表中新建一個檔案描述符項,把檔案描述符返回給程式,程式後續只需要對此檔案描述符進行操作。
檔案開啟計數
記錄檔案同時開啟的次數。
檔案磁碟位置
檔案在磁碟中分塊儲存,需要在檔案控制塊記錄檔案各個塊的地址。
檔案許可權
使用者、組,讀、寫、可執行。
檔案分類
按性質和用途分類
系統檔案。
庫檔案。
使用者檔案。
按組織形式分類
普通檔案。
目錄檔案。資料夾本身也是檔案。
特殊檔案。比如linux系統把輸入輸出裝置看作檔案。
按使用和管理情況分類
臨時檔案。
永久檔案。
檔案檔案。
按保護級別分類
只讀檔案。
讀寫檔案。
不保護檔案。
按資料流向分類
輸入型檔案。
輸出型檔案。
輸入輸出型檔案。
按內容結構分類
記錄式檔案:有邏輯結構,比如資料檔案、文件。
流式檔案:沒有邏輯結構,二進位制或位元組流儲存,比如多媒體檔案。
硬連結/軟連結
硬連結——多個檔案項指向同一個物理儲存的檔案,刪除一個則全刪。
軟連結——以快捷方式指向其他檔案,是一個單獨的檔案,儲存的是其他檔案的路徑,刪除不會影響指向的檔案。
程序檔案管理
每個程序都單獨建立一個檔案描述符表,前三項為標準輸入stdin、標準輸出stdout、標準錯誤stderr,後面為空,隨著開啟檔案一一建立檔案描述符。
檔案塊的分配策略
連續儲存(缺點顯著)
優點:讀寫效能最優,高效隨機訪問
缺點:難以擴充套件,碎片化
鏈式儲存(缺點顯著)
優點:擴充套件性好,沒有碎片
缺點:讀效能差,可靠性差(鏈斷則檔案崩潰)
索引儲存(雜湊,雜湊表)
(實際使用的儲存策略)
優點:可擴充套件性好,可靠性好,沒有碎片,讀寫效能好(綜合了連續儲存與鏈式儲存的優點)
缺點:當檔案很小時開銷大,難以處理大檔案(地址空間不足,解決方法是分級索引)
空閒空間管理
磁碟中的空閒空間也需要建立列表進行統計管理,由磁碟中的檔案系統實現。
確保一致性
空閒空間管理列表必須儲存在磁碟上,確保記憶體中的資料與磁碟一致,必須要防止識別錯誤導致覆蓋已有檔案。
磁碟儲存管理
磁碟定址
磁軌、扇區:磁碟的儲存部分是同心圓,分為多個磁軌,每個磁軌分為多個扇區。光碟是螺線定址,磁碟是同心圓線性定址。
柱面:每個磁軌的所有扇區構成的一個圓圈,柱面是硬碟分割槽的最小單位。磁碟物理上的內外磁軌的柱面不一樣,外道周長大、柱面多。但邏輯上對外標明的柱面內外道一致。
簇:扇區是硬碟資料儲存的最小單位,但作業系統無法對數目眾多的扇區進行定址,所以作業系統就將相鄰的扇區組合在一起,形成一個簇。
定址:當下的磁碟把所有扇區統一編址,從0到最大地址,線性定址。
卷/分割槽
卷和分割槽概念差不多一樣。分割槽只針對一個物理硬碟,捲包括所有的硬碟,每個分配的碟符都是一個卷。
只有windows才對單個物理硬碟進行分割槽,並分配多個碟符、多個檔案系統;unix系的系統只有一個主分割槽,建立統一的檔案系統,根目錄/。
磁碟尋道優化
磁頭位移實現磁軌轉換,磁碟碟片旋轉實現扇區轉換,磁頭是速度瓶頸,所以在分配磁碟空間的時候儘量減少磁軌轉換。
裝置管理
物理裝置
虛擬裝置
裝置驅動
作業系統分類
通用作業系統族譜
目前所有的作業系統中,大致只分為兩個體系——類UNIX系、微軟系。
類Unix系
類UNIX系分支超級多,造就了了如今絕大多數系統型別。
UNIX
——+UNIX
——+開源分支
————+BSD組織(BSD自由軟體協議)
——————+FreeBSD
——————+OpenBSD
——————+MacOS
————————+iOS
——————+GNU組織(GPL/LGPL開源軟體協議)
————————+Linux
——————————+Redhat
————————————+Fedora
————————————+CentOS
——————————+Debian
————————————+Ubuntu
————————————+Deepin
——————————+Android
——+商業分支
————+AIX(IBM)
————+HP-UX(HP)
————+Solaris(Sun/Oracle)
微軟系
微軟系分支少,主要受迭代的影響,迭代的差別很大。
MS-DOS(1980)
——Windows桌面系
————Windows1.0/2.0/3.0(1985,開始有圖形介面)
————WindowsNT(1995,網路作業系統,首次捨棄DOS,開始32位,核心流傳至今)
————Windows1995/1998/2000(1995)
————WindowsME(2000)
————WindowsXP(2001,經典系統經久不衰)
————WindowsVista(2007)
————Windows7(2009,新時代系統)
————Windows8(2012)
————Windows10(2015,當下的核心)
——Windwos Server服務系
————Windows Server2003(2003)
————Windows Server2008(2008)
————Windows Server2012(2012)
————Windows Server2016(2016)
伺服器與桌面系統
Unix
作業系統的老祖宗,linux、macos、以及基於linux的安卓等作業系統都繼承自unix。
Linux
相關推薦
【總結】作業系統原理
(本文只是自己的學習總結,不一定正確,僅供參考) 文章目錄 作業系統原理 基本內容 基本特徵 併發 分時(時間片輪轉) 共享
【總結】作業系統引論
如圖1所示,作業系統的目標: 方便性 有效性 可擴充性 開放性 2,作業系統有哪幾大特徵?最基本特徵是什麼? 併發兩個或多個事件在同一時間間隔內發生; &
【總結】資料庫原理
(本文只是自己的學習總結,不一定正確,僅供參考) 文章目錄 資料庫通用概念 資料庫的產生 理論分類 關係資料庫 非關係資料庫 規模分類 記憶體型 文件型
【 專欄 】- 作業系統原理(linux)
作業系統原理(linux) BIOS(BIOS中斷服務程式),Intel風格x86彙編的核心引導主程式,從真實模式下怎麼進入保護模式,怎麼實現中斷呼叫,怎麼實現特權級檢查,怎麼實現任務的建立,怎麼實現多工的管理;怎麼載入全部核心程
【筆記】計算機原理,網路,Linux作業系統
一,計算機原理 1,化繁為簡的思想,產生二進位制,產生把所有計算歸結為加法運算 二,網路 1,分層思想,產生ISO七層協議,商用了TCP/IP的五層協議 三,Linux作業系統 1,分層思想,硬體->作業系統->應用軟體 2,Linux一切皆檔案的思想
【總結】計算機組成原理
(本文只是自己的學習總結,不一定正確,僅供參考) 文章目錄 計算機組成 相關概念 資料儲存 位元bit/位元組byte/字word 機器字長/儲存字長 儲存器的分類 儲存
【總結】計算機網路原理
(本文只是自己的學習總結,不一定正確,僅供參考) 文章目錄 計算機網路基礎 OSI參考模型 實際網路架構 網路介面層 資料鏈路層 網路層 傳輸層 應用層 管理機構
【 分類 】- 作業系統精髓與設計原理(原書第6版)
個人簡介 如果對測試比較感興趣的可以加QQ群:320542475! 如果你願意,我們可以聊聊測試的那點事,相互學習、互相成長,我相信只要不斷吸取自己所需營養,即使出生不那麼光彩,在未來依然會光芒萬丈,只是在前進的路上荊棘多了一點而已、、、
【總結】Netty(RPC高效能之道)原理剖析
1,Netty簡述 Netty 是一個基於 JAVA NIO 類庫的非同步通訊框架,用於建立非同步非阻塞、基於事件驅動、高效能、高可靠性和高可定製性的網路客戶端和伺服器端 RPC高效能分析,請參考文章“【總結】RPC效能之道 ” 特點 非同步、非阻塞、
【總結】除錯暫存器 原理與使用:DR0-DR7
下面介紹的知識性資訊來自intel IA-32手冊(可以在intel的開發手冊或者官方網站查到),提示和補充來自學習偵錯程式實現時的總結。希望能給你帶去有用的資訊。(DRx對應任意的一個除錯暫存器。LENn對應任意一個長度。Ln對應任意一個區域性置位)DR0-DR7可以直接
Nginx教程(7) 正向代理與反向代理【總結】
資料 用戶訪問 認證 origin 訪問者 發送 -128 負載 行為 1、前言 最近工作中用到反向代理,發現網絡代理的玩法還真不少,網絡背後有很多需要去學習。而在此之前僅僅使用了過代理軟件,曾經為了訪問google,使用了代理軟件,需要在瀏覽器中配置代理的地址。我只知
【總結】spark按文本格式和Lzo格式處理Lzo壓縮文件的比較
spark lzotextinputformat1、描述spark中怎麽加載lzo壓縮格式的文件2、比較lzo格式文件以textFile方式和LzoTextInputFormat方式計算數據,Running Tasks個數的影響 a.確保lzo文件所在文件夾中生成lzo.index索引文件 b.以
測試方法【總結】
測試方法測試方法從測試設計方法分類測試名稱測試內容黑盒測試把軟件系統當作一個黑箱,無法了解或使用系統內部結構及知識白盒測試設計者可以看到軟件系統的內部結構,並且使用軟件的內部知識來指導測試數據及方法的選擇灰盒測試介於白盒和黑盒之間總結:在實際工作中,對系統的了解越多越好,目前大多數的測試人員都是做黑盒測試,很
【總結】差分約束模型的要點
cio 一個點 ros 最短路 所有 運行時間 16px net 不同 只是一些自己想到的東西,記下來以防忘記。 1. 求解一系列的 f[b] - f[a] <= x 不等式組時,由a向b建權值為x的邊,求最短路。有負環時無解,體現為在SPFA中一個點入隊
HTTP響應狀態碼【總結】
管理 指示 get 強制 opp 帶寬 行修改 accepted 代碼 常見的狀態碼【1XX】表示【消息】【2XX】表示【成功】【3XX】表示【重定向】【4XX】表示【請求錯誤】【5XX】表示【服務器端錯誤】200:OK。請求被正常處理204:No Content。請求被受
【總結】曼哈頓距離轉切比雪夫距離
現在 樹狀 use clas user height int 前綴和 比較 我們在用二維樹狀數組的時候,可以得到一個邊與坐標軸平行的矩形內點集的信息。 如果我們需要得到得到到一個點的距離小於等於K的點的信息呢。這些點構成的不在是邊也坐標軸
【總結】2017年個人總結
需要 一點 自己 編號 說話 計算 family 今天 美的 今天元宵,於是乎想寫個個人總結吧,反正最近又沒什麽學習的動力了,寫寫總結暫時停下休息吧 2017年怎麽說呢,前半年還在高中忙著高考,下午吃完飯就立刻跑去自習室做我的那本數學的《百題大過關》,老實說下午去自習室的這
【總結】遊戲框架與架構設計(Unity為例)
單機 業務 github 事件 概念 lec 集合 架構模式 wid 使用框架開發遊戲 優點:耦合性低,重用性高,部署快,可維護性高,方便管理。提高開發效率,降低開發難度 缺點:增加了系統結構和實現的復雜性,需要額外花費精力維護,不適合小型程序,易影響運行效率 常見
【總結】Unity遊戲優化
硬盤 技術 wheel mes stringbu 臨時 ets 減少 e30 1、Profiler中一項"WaitForTargetFPS"費資源過高的原因 畫面撕裂,顯卡渲染輸出的速度與顯示器不同步, 如果顯示器刷新的同時,顯卡創造了新的幀,就會出現上半顯示器顯示前一
【總結】遊戲AI人工智能
人物 unity3d 元組 and 事件驅動 area 更新 多維 行為樹 參考書籍《Unity3D人工智能編程精粹》《Unity3D人工智能編程》 遊戲AI的架構模型 運動層:AI的具體行為,比如移動 決策層:決定AI下一時間步該做什麽 戰略層:從集體層面對個體