全文連接:https://www.cnblogs.com/nullering/p/9684820.htmlhtml
操做系統須要掌握如下五個方面linux
1:進程管理:主要掌握進程的狀態,前驅圖,PV操做以及死鎖的相關問題算法
2:存儲管理:主要掌握段頁式存儲,局部性原理,頁面置換算法緩存
3:文件管理:索引文件,位示圖安全
4:做業管理:做業調度算法網絡
5:設備管理:數據傳輸控制,虛設備與SPOOLING技術數據結構
1):中斷:中斷是指計算機運行過程當中,出現某些意外狀況需主機干預時,機器能自動中止正在運行的程序並轉入處理新狀況的程序,處理完畢後又返回原被暫停的程序繼續運行。在如今的多任務操做系統中,cpu卻只能是單任務的,這是就必須用到中斷進行進程調度。多線程
2):進程:進程是一個具備獨立功能的程序關於某個數據集合的一次運行活動。它能夠申請和擁有系統資源,是一個動態的概念,是一個活動的實體。併發
3):做業:做業是用戶向計算機提交的相關任務的集合,區別於進程,進程則是具體完成用戶任務的運行實體,分配計算機資源的基本單位。異步
4):進程控制塊(PCB):進程控制塊(PCB)是系統爲了管理進程設置的一個專門的數據結構。系統用它來記錄進程的外部特徵,描述進程的運動變化過程。同時,系統能夠利用PCB來控制和管理進程,因此說,PCB(進程控制塊)是系統感知進程存在的惟一標誌。
進程是一個動態的實體,從建立到消亡,進程通常有三種狀態,但也有的有五態
+運行狀態(Running):一個進程正在處理機上運行,
+就緒狀態(Ready):進程已經得到了除cpu之外的全部其餘資源,在就緒隊列中等待cpu調度
+阻塞狀態:進程因等待所須要的資源或I/O完成而放棄處理機,或則進程原本就不擁有處理機,且其餘資源也不知足
進程掛起
掛起(等待,阻塞)進程在操做系統中能夠定義爲暫時被淘汰出內存的進程,機器的資源是有限的,在資源不足的狀況下,操做系統對在內存中的程序進行合理的安排,其中有的進程被暫時調離出內存,當條件容許的時候,會被操做系統再次調回內存,從新進入就緒態
按照必定的策略選擇一個處於就緒狀態的進程使其得到處理機的執行。常見的調度算法有:
(1)先來先服務調度算法(FCFS , First Come First Served)
特色:適合長做業,不利於段做業;適合CPU繁忙型做業,不利於I/O繁忙型做業。
(2)短做業優先(SJF, Shortest Job First)
特色:提升了系統吞吐量;對長做業不利,有可能長時間得不到執行。
(3)短進程優先調度算法(SPF):
(3)優先級調度(HPF , Highest Priority First)
特色:進程調度每次將處理機分配給具備最高優先級的就緒進程。最高優先級算法可與不一樣的CPU方式結合造成「可搶佔式」最高優先級算法和「不可搶佔式」最高優先級算法。經常使用於批處理系統。
(4)最高響應比優先(HRN,Highest Response_ratio Next)
特色:HRN是對FCFS方式和SJF方式的一種綜合平衡。
響應比R=(W + T)/ T . 其中W爲等待時間,T爲須要執行時間。
(5)時間片輪轉算法(RR,Round Robin)
特色:時間片輪轉調度是一種最古老,最簡單,最公平且使用最廣的算法。將CPU的處理時間劃分紅一個個的時間片,就緒隊列中的進程輪流運行一個時間片。當時間片結束時,就強迫進程讓出CPU,該進程進入就緒隊列,等待下一次調度,同時,進程調度又去選擇就緒隊列中的一個進程,分配給它一個時間片,以投入運行。
(6)最短剩餘時間優先調度算法:
(7)多級隊列輪轉算法:幾種調度算法的結合形式多級隊列方式。
(7)多級反饋隊列調度算法:
進程由於協同實現用戶任務或則要共享計算機資源,在進程之間存在着相互制約的關係。
(1)同步關係:咱們把異步環境下的一組併發進程因直接制約而互相發送消息、進行互相合做、互相等待,使得各進程按必定的速度執行的過程稱爲進程間的同步。具備同步關係的一組併發進程稱爲合做進程,合做進程間互相發送的信號稱爲消息或事件。
(2)互斥關係:兩個或兩個以上的進程,不能同時進入關於同一組共享變量的臨界區域,不然可能發生與時間有關的錯誤,這種現象被稱做進程互斥· 也就是說,一個進程正在訪問臨界資源,另外一個要訪問該資源的進程必須等待。
(3)解決同步互斥問題——信號量機制:信號量就好像信號燈,若是一個資源最多容許三個進程同時訪問,這時信號量初值設爲三,當有一個進程獲取了該資源,進行P操做,信號量減一,這個進程完成後釋放該資源,進行V操做,信號量加一,若是當另外一個進程獲取該資源時,信號量小於零,則進入等待狀態。
(4)管程:互斥使用
互斥鎖:
提供對臨界資源的保護,當多線程試圖訪問臨界資源時,都必須經過獲取鎖的方式來訪問臨界資源。(臨界資源:是被多線程共享的資源)
條件變量:
提供線程之間的一種通知機制,當某一條件知足時,線程A能夠通知阻塞在條件變量上的線程B,B所指望的條件已經知足,能夠解除在條件變量上的阻塞操做,繼續作其餘事情。
信號量:
提供對臨界資源的安全分配。若是存在多份臨界資源,在多個線程爭搶臨界資源的狀況下,向線程提供安全分配臨界資源的方法。若是臨界資源的數量爲1,將退化爲鎖。
令牌:
一種高級的線程同步的方法。它既提供鎖的安全訪問臨界資源的功能,又利用了條件變量使得線程爭奪臨界資源時是有序的
生產者與消費者問題:
這個問題寫在這可能寫不完,因此不寫了,簡單來講就是想獲得就P,不用了就V
前趨圖:
因爲須要限制不一樣的程序之間的訪問能力, 防止他們獲取別的程序的內存數據, 或者獲取外圍設備的數據, 併發送到網絡, CPU劃分出兩個權限等級 – 用戶態 和內核態。
處於用戶態執行中的進程,其所能訪問的內存空間和對象受到限制,其所處於佔有的處理機是可被搶佔的;
處於核心態執行中的進程,其能訪問全部的內存空間和對象,且所佔有的處理機是不容許被搶佔的。
死鎖指的是多個進程因競爭資源而形成的一種僵局(互相等待),若無外力做用,這些進程都將沒法向前推動。
必要條件:
處理死鎖的四種方式:
銀行家算法
基本思想:分配資源以前,判斷系統是不是安全的;如果,才分配。每分配一次資源就測試一次是否安全。
咱們能夠把操做系統看做是銀行家,操做系統管理的資源至關於銀行家管理的資金,進程向操做系統請求分配資源至關於用戶向銀行家貸款。
爲保證資金的安全,銀行家規定:
(1)當一個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客(試探性分配)。
(2)顧客能夠分期貸款,但貸款的總數不能超過最大需求量(可能一次並不能知足所須要的所有資源)。
(3)當銀行家現有的資金不能知足顧客尚需的貸款數額時,對顧客的貸款可推遲支付,但總能使顧客在有限的時間裏獲得貸款(不存在死鎖)。
(4)當顧客獲得所需的所有資金後,必定能在有限的時間裏歸還全部的資金(運行後釋放)。
本算法在理論上是出色的,能很是有效地避免死鎖,但從某種意義上說,它缺少實用價值,由於不多有進程可以在運行前就知道其所需資源的最大值,且進程數也不是固定的,每每在不斷地變化(如新用戶登陸或退出),何況原來可用的資源也可能忽然間變成不可用(如打印機、磁帶機可能被損壞)。