一、操做系統分類
批處理操做系統、分時操做系統(Unix)、實時操做系統、網絡操做系統、分佈式操做系統、微機操做系統(Linux、Windows、IOS等)、嵌入式操做系統。linux
二、操做系統的4個特徵:併發性、共享性、虛擬性、不肯定性。
三、操做系統的功能有:處理機管理、文件管理、存儲管理、設備管理、做業管理。
- 處理機管理:也稱進程管理。實質上是對處理機執行時間進行管理,採用多道程序等技術將CPU的時間真正合理地分配給每一個任務。主要包括進程管理、進程同步、進程通訊和進程調度。
- 文件管理:又稱信息管理。主要包括文件存儲空間管理、目錄管理、文件的讀寫管理和存取管理。
- 存儲管理:是對主存儲器空間的管理。主要包括存儲分配與回收、存儲保護、地址映射(變換)和主存擴充。(即內存管理)
- 設備管理:實質上是對硬件設備進行管理,其中包括輸入輸出設備的分配、啓動、完成和回收。
- 做業管理:包括人物、人機交互和用戶界面管理等。
四、處理機管理
-
一、程序順序執行的特徵:
- 順序性:每一操做必須在下一操做開始以前結束
- 封閉性:程序運行時獨佔全機資源,資源的狀態(除初始狀態外)只有本程序才能改變,程序一旦執行,其結果不受外界影響
- 可再現性:程序執行環境和初始條件相同,重複執行時,結果相同
-
二、程序併發執行的特徵:
- 間斷性:程序併發運行時,共享系統資源,爲完成同一任務相互合做,會造成相互制約關係,致使併發程序具備「執行-暫停-執行」這種間斷性的活動規律
- 失去封閉性:程序併發執行時,資源狀態由多個程序改變,某程序執行時,會受到其餘程序影響,失去封閉性
- 不可再現性:失去封閉性,致使失去可再現性
-
三、進程的特徵
- 結構特徵:程序段、相關數據段和PCB三部分構成進程實體
- 動態性:進程實體的一次執行過程,具備生命期,而程序是有序指令集合,是靜態的
- 併發性:多個進程同時存於內存,在一段時間內同時運行
- 獨立性:進程實體是一個能獨立運行、獨立分配資源和獨立接受調度的基本單位
- 異步性:進程按各自獨立的、不可預知的速度向前推動
-
4.進程的狀態:三態模型(左圖)、五態模型(右圖)
-
五、進程間的通訊(同步與互斥):因爲多個進程能夠併發執行,因此進程間必然存在資源共享和相互合做的問題。進程通訊是指各個進程交換信息的過程。
同步是合做進程間直接制約問題,互斥是申請臨界資源進程間的間接制約問題。(臨界資源(Critical Resource, CR):在同一時間只能供一個進程使用的資源)臨界區管理4條原則:算法
-
- 有空即進:
- 無空則等:
- 有限等待:要求訪問臨界區的進程,保證有限時間內進入臨界區,避免死等
- 讓權等待:進程不能進入臨界區時,應當即釋放處理機,避免忙等
-
六、信號量機制:即利用PV操做來對信號量進行處理。
信號量(semaphore)的數據結構爲一個值和一個指針,指針指向等待該信號量的下一個進程。信號量的值與相應資源的使用狀況有關。windows
-
- 當它的值大於0時,表示當前可用資源的數量;
- 當它的值小於0時,其絕對值表示等待使用該資源的進程個數。
- 注意,信號量的值僅能由PV操做來改變。
通常來講,信號量S >= 0時,S表示可用資源的數量。執行一次P操做意味着請求分配一個單位資源,所以S的值減1;當S < 0時,表示已經沒有可用資源,請求者必須等待別的進程釋放該類資源,它才能運行下去。而執行一個V操做意味着釋放一個單位資源,所以S的值加1;若S <= 0,表示有某些進程正在等待該資源,所以要喚醒一個等待狀態的進程,使之運行下去。安全
調度方法分爲可剝奪和不可剝奪兩種。即當有更高優先級的進程到來時,是否能夠將正在運行進程的CPU分配給高優先級的進程,能夠則爲可剝奪,不然爲不可剝奪的。網絡
在某些操做系統中,一個做業從提交到完成須要經歷高、中、低三級調度。數據結構
-
- 高級調度:又稱長調度或做業調度。它決定處於輸入池中的哪一個後備做業能夠調入主系統作好運行的準備,成爲一個或一組就緒進程。系統中一個做業只需通過一次高級調度。
- 中級調度:又稱短程調度或對換調度。它決定處於交換區中的就緒進程哪一個能夠調入內存,以便直接參與對CPU的競爭。在內存資源緊張時,爲了將進程調入內存,必須將內存中處於阻塞狀態的進程調出交換區,以便爲調入進程騰出空間。
- 低級調度:又稱短程調度或進程調度。它決定處於內存中的就緒進程中的哪一個能夠佔用CPU。最活躍、最重要的調度程序,對系統影響也是最大的。
常見的進程調度算法:先來先服務(FCFS)、短做業優先、時間片輪轉(固定時間片、可變時間片)、優先級調度(靜態優先級、動態優先級)、多級反饋調度(時間片輪轉+優先級調度)。多線程
-
八、死鎖:兩個以上的進程互相要求對方已經佔有的資源致使沒法繼續運行下去的現象
-
(1) 由於系統資源不足。併發
(2) 進程運行推動的順序不合適。異步
(3) 資源分配不當等。分佈式
若是系統資源充足,進程的資源請求都可以獲得知足,死鎖出現的可能性就很低,不然就會因爭奪有限的資源而陷入死鎖。其次,進程運行推動順序與速度不一樣,也可能產生死鎖。
-
- 產生死鎖的四個必要條件:互斥條件、請求與保持條件、不剝奪條件、循環等待條件。
(1) 互斥條件:一個資源每次只能被一個進程使用。
(2) 請求與保持條件:一個進程因請求資源而阻塞時,對已得到的資源保持不放。
(3) 不剝奪條件:進程已得到的資源,在末使用完以前,不能強行剝奪。
(4) 循環等待條件:若干進程之間造成一種頭尾相接的循環等待資源關係。
這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不知足,就不會發生死鎖。
-
- 解決死鎖的4種處理策略:鴕鳥策略(即不理睬策略)、預防策略、避免策略、檢測與解除策略。
死鎖預防:預先靜態分配法(破壞不可剝奪條件)、資源有序分配法(將資源分類按順序排列,保證不造成環路)。
死鎖避免:銀行家算法(對每一個資源請求進行檢測,確保安全。須要很大的系統開銷)。
死鎖解除:資源剝奪法、撤銷進程法。
-
九、線程與進程
-
定義:
- 進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位。
- 線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程本身基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),可是它可與同屬一個進程的其餘的線程共享進程所擁有的所有資源。也有就緒、運行、阻塞三態。
- 關係
- 一個線程能夠建立和撤銷另外一個線程;同一個進程中的多個線程之間能夠併發執行.
- 相對進程而言,線程是一個更加接近於執行體的概念,它能夠與同進程中的其餘線程共享數據,但擁有本身的棧空間,擁有獨立的執行序列。
- 區別:
1) 簡而言之,一個程序至少有一個進程,一個進程至少有一個線程.
2) 線程的劃分尺度小於進程,使得多線程程序的併發性高。
3) 另外,進程在執行過程當中擁有獨立的內存單元,而多個線程共享內存,從而極大地提升了程序的運行效率。
4) 線程在執行過程當中與進程仍是有區別的。每一個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。可是線程不可以獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
5) 從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分能夠同時執行。但操做系統並無將多個線程看作多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
線程執行開銷小,但不利於資源的管理和保護;而進程正相反。同時,線程適合於在SMP機器上運行,而進程則能夠跨機器遷移。
五、存儲管理
- 地址重定位:指將邏輯地址變換成物理地址的過程。分爲靜態重定位和動態重定位。
- 存儲管理方案:分區存儲管理(固定分區、可變分區、可重定位分區)、分頁存儲管理(將一個進程的地址空間劃分爲若干個大小相等的區域,成爲頁,相應地,將主存空間劃分紅與頁相同大小的若干個物理塊,稱爲塊。至少須要兩次訪問主存)、分段存儲管理、段頁式存儲管理(地址結構:段號+段內頁號+頁內地址)、虛擬存儲管理。
可變分區的請求和釋放主要算法:最佳適應算法、最差適應算法、首次適應算法、循環首次適應算法。
快表:在頁式存儲管理中將當前最活躍的少數幾頁的物理塊號保存在高速存儲器中,用以提升頁式存儲管理的性能。(不用兩次訪問主存)
頁面置換算法:最佳置換算法(最長時間內再也不被訪問的頁面置換出去)、先進先出置換算法、最近最少未使用置換算法、最近未用置換算法。
六、設備管理
- 設備管理的目標是如何提升設備的利用率,爲用戶提供方便統一的界面。
- 設備管理採用的緩衝技術:通道技術、DMA技術、緩衝技術、Spooling技術。
- 磁盤調度算法:先來先服務(FCFS)、最短尋道時間(SSTF)、掃描算法(SCAN)(先由裏向外,到達最外後由外向裏)、單向掃描調度算法(CSCAN)(沒法換向,只能由裏向外)。
七、文件管理
- 文件的邏輯結構:有結構的記錄式文件(由一個以上的記錄構成。記錄分爲定長記錄、不定長記錄)、無結構的流式文件(由一串順序的字符流構成的文件,不劃分記錄)。
- 文件的物理結構:順序結構、連接結構、索引結構、多個物理塊的索引表。
- Unix的三級索引結構:
- 文件的存取方法:順序存取法、隨機存取法。
- 文件的存儲空間管理:外存空閒空間管理的數據結構一般稱爲磁盤分配表。經常使用的空閒空間的管理方法:位示圖(用一個bit爲的0、1表示一個物理塊的空閒狀況)、空閒區表、空閒塊鏈、成組連接法(每100塊爲一組進行記錄空閒的塊號和大小)。
- 文件連接:硬連接(兩個文件目錄表目指向同一個索引節點,即指不一樣的文件名與同一個文件實體的連接)、符號連接(在創建的新文件或目錄並與原來的文件或目錄的路徑名進行映射)。
- 硬鏈接:原文件名和鏈接文件名都指向相同的物理地址。目錄不能有硬鏈接;硬鏈接不能跨越文件系統(不能跨越不一樣的分區)文件在磁盤中只有一個拷貝,節省硬盤空間;因爲刪除文件要在同一個索引節點屬於惟一的鏈接時才能成功,所以能夠防止沒必要要的誤刪除。
- 符號鏈接:用ln -s命令創建文件的符號鏈接符號鏈接是linux特殊文件的一種,做爲一個文件,它的數據是它所鏈接的文件的路徑名。相似windows下的快捷方式。能夠刪除原有的文件而保存鏈接文件,沒有防止誤刪除功能。
八、做業管理
- 做業狀態分爲4種:提交(經過輸入設備送入計算機)、後備(經過Spooling系統將做業輸入到計算機系統的後備存儲器中,等待做業調度程序調度)、執行和完成。
- 經常使用的做業調度算法:先來先服務、短做業優先、響應比高優先、優先級調度算法、均衡調度算法。