天天看點

作業系統知識點總結

中斷與異常

中斷

中斷又稱外中斷,指來自CPU執行指令以外的事件發生,如裝置發出的各種 I/O 結束中斷

異常

異常又稱内中斷,指源自CPU執行指令内部的事件,如程式的非法操作碼,位址越界,算術溢出等。

常見的中斷以及異常事件

I/O中斷
其他外中斷
機器故障
程式性異常
陷入指令
中斷屏蔽      
禁止響應中斷。為了打破中斷級别由硬體設計時确定的不靈活固定模式,現代計算機提供可以由程式設定中斷屏蔽的方法。

斷點和恢複點

CPU一旦響應中斷,就立即開始執行中斷處理程式,當中斷處理結束後,重新傳回中斷點執行後續指令,CPU剛執行完的那條指令位址稱為“斷點”,即中斷發生時正在執行的那一條指令的位址。斷點的邏輯後續指令稱為“恢複點”。

中斷處理步驟

中斷進入
保護現場
分析原因并轉中斷
恢複現場      

程序與線程

程序是計算機中的程式關于某資料集合上的一次運作活動,是系統進行資源配置設定和排程的基本機關,是作業系統結構的基礎。

線程,有時被稱為輕量級程序(Lightweight Process,LWP),是程式執行流的最小單元。線程之間共享全局變量。

程序的狀态

運作态:該時刻的程序實際占用cpu 
就緒态:已完成一切準備,等待配置設定cpu 
阻塞态:除非某種外部事件發生,否則程序不能運作      

程序間的通信方式

管道( pipe ):管道是一種半雙工的通信方式,資料隻能單向流動,而且隻能在具有親緣關系的程序間使用。程序的親緣關系通常是指父子程序關系。

有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無親緣關系程序間的通信。

信号量( semophore ) : 信号量是一個計數器,可以用來控制多個程序對共享資源的通路。它常作為一種鎖機制,防止某程序正在通路共享資源時,其他程序也通路該資源。是以,主要作為程序間以及同一程序内不同線程之間的同步手段。

消息隊列( message queue ) : 消息隊列是由消息的連結清單,存放在核心中并由消息隊列辨別符辨別。消息隊列克服了信号傳遞資訊少、管道隻能承載無格式位元組流以及緩沖區大小受限等缺點。

信号 ( sinal ) : 信号是一種比較複雜的通信方式,用于通知接收程序某個事件已經發生。

共享記憶體( shared memory ) :共享記憶體就是映射一段能被其他程序所通路的記憶體,這段共享記憶體由一個程序建立,但多個程序都可以通路。共享記憶體是最快的 IPC 方式,它是針對其他程序間通信方式運作效率低而專門設計的。它往往與其他通信機制,如信号兩,配合使用,來實作程序間的同步和通信。

套接字( socket ) : 套解口也是一種程序間通信機制,與其他通信機制不同的是,它可用于不同機器間的程序通信。      

程序排程算法

先來先服務排程算法(FCFS) 
先來先服務(FCFS)排程算法是一種最簡單的排程算法,該算法既可用于作業排程,
也可用于程序排程。當在作業排程中采用該算法時,每次排程都是從後備作業隊列
中選擇一個或多個最先進入該隊列的作業,将它們調入記憶體,為它們配置設定資源、創
建程序,然後放入就緒隊列。在程序排程中采用FCFS算法時,則每次排程是從就緒
隊列中選擇一個最先進入該隊列的程序,為之配置設定處理機,使之投入運作。該程序
一直運作到完成或發生某事件而阻塞後才放棄處理機。

最短作業優先排程算法(SJF) 
短作業優先排程算法,是指對短作業或短程序優先排程的算法。它們可以分别用于作
業排程和程序排程。短作業優先(SJF)的排程算法是從後備隊列中選擇一個或若幹個
估計運作時間最短的作業,将它們調入記憶體運作。而短程序優先(SPF)排程算法則是
從就緒隊列中選出一個估計運作時間最短的程序,将處理機配置設定給它,使它立即執行
并一直執行到完成,或發生某事件而被阻塞放棄處理機時再重新排程。

優先權排程算法的類型 
為了照顧緊迫型作業,使之在進入系統後便獲得優先處理,引入了最高優先權優先(F
PF)排程算法。此算法常被用于批處理系統中,作為作業排程算法,也作為多種操作
系統中的程序排程算法,還可用于實時系統中。當把該算法用于作業排程時,系統将
從後備隊列中選擇若幹個優先權最高的作業裝入記憶體。當用于程序排程時,該算法是
把處理機配置設定給就緒隊列中優先權最高的程序,這時,又可進一步把該算法分成非搶
占式和搶占兩種。

時間片輪轉法 
在早期的時間片輪轉法中,系統将所有的就緒程序按先來先服務的原則排成一個隊列,
每次排程時,把CPU 配置設定給隊首程序,并令其執行一個時間片。時間片的大小從幾m
s 到幾百ms。當執行的時間片用完時,由一個計時器發出時鐘中斷請求,排程程式便
據此信号來停止該程序的執行,并将它送往就緒隊列的末尾;然後,再把處理機配置設定
給就緒隊列中新的隊首程序,同時也讓它執行一個時間片。這樣就可以保證就緒隊列
中的所有程序在一給定的時間内均能獲得一時間片的處理機執行時間。換言之,系統
能在給定的時間内響應所有使用者的請求。      

為什麼作業系統需要線程?

線程可以把程式分解成可以準并運作的多個順序線程,使程式設計變得簡單。

線程比程序更輕量級,将更容易建立或銷毀

多個線程将重疊進行,更加充分利用cpu

線程的缺點

子程序是否要繼承父程序的線程?

如果不是,子程序中沒有線程可能會導緻異常;

如果是,父程序被阻塞了改怎麼辦?是父子兩程序的線程同時被阻塞?(例如等待鍵盤輸入)

假設兩個線程同時發現記憶體不足,并同時配置設定記憶體,會導緻記憶體被配置設定兩次。

程序和線程的差別

現在作業系統中申請資源的基本機關是程序,在CPU得到執行的基本機關是線程

不同程序的位址空間是獨立的,而同一程序内的線程共享同一位址空間。一個程序的線程在另一個程序内是不可見的。

在引入線程的作業系統中,程序是資源配置設定和排程的機關,線程是處理機排程和配置設定的機關,資源是配置設定給程序的,線程隻擁有很少資源,因而切換代價比程序切換低。

程式與程序的差別

程序是一個動态概念,而程式是一個靜态概念。

程序具有并行特征,而程式不反映執行是以沒有并行特征

程序是競争計算機系統資源的基本機關,而程式不反映執行也就不會競争計算機系統資源

不同的程序可以包含同一程式,隻要該程式所對應的資料集不同。

程序排程有哪些功能?

記錄系統中所有程序的執行情況。
選擇占有處理機的程序
進行程序上下文切換      

程序的特征

結構特征、動态性、并發性、獨立性、異步性

程序間同步

原子操作
信号量機制
自旋鎖
管程
會合
分布式系統      

臨界區

臨界區指的是一個通路共用資源的程式片段,而這些共用資源又無法同時被多個線程通路的特性。

對臨界資源應采取互斥通路方式來實作共享。

P.V操作是一種低級程序通信原語。

對于記錄性信号量,在執行一次P操作時,信号量的值應當減1,當其值為小于0時程序應阻塞;在執行V操作時,信号量的值應當加1;當其值小于等于0時,應喚醒阻塞隊列中的程序。

記憶體管理

重定位:在作業位址空間中使用的邏輯位址變為記憶體實體位址
适合多道程式運作的存儲管理中,存儲保護是為了防止各道作業的互相幹擾
段頁式存儲管理中的位址映像表是每個作業或程序一張段表,每個段一張頁表
在虛拟頁式存儲管理方案中,完成将頁面調入記憶體的工作的是缺頁中斷處理
分段管理和分頁管理的主要差別是分頁管理有存儲保護,分段管理沒有
不使用中斷機構的I/O控制方式是程式I/O方式
共享裝置指同一時間内運作多個程序同時通路的裝置
磁盤高速緩沖設在記憶體中,目的是提高I/O磁盤速度
磁盤空間的位址有盤面号,柱面号,扇區号組成。通路磁盤的時間有 尋道時間,旋轉等待時間,讀寫時間
系統通過樹形目錄結構來解決重名問題      

頁式管理的基本原理是什麼?

程序的虛拟空間被劃分成長度相等的頁。

記憶體空間也按頁的大小劃分成長度相等的頁面。

采用請求調頁或預調技術實作内外存儲器的統一管理。

分段和分頁

頁是資訊的實體機關,分頁是為實作離散配置設定方式,以消減記憶體的外零頭,提高記憶體的使用率;或者說,分頁僅僅是由于系統管理的需要,而不是使用者的需要。

段是資訊的邏輯機關,它含有一組其意義相對完整的資訊。分段的目的是為了能更好的滿足使用者的需要。

頁的大小固定且由系統确定,把邏輯位址劃分為頁号和頁内位址兩部分,是由機器硬體實作的,因而一個系統隻能有一種大小的頁面。段的長度卻不固定,決定于使用者所編寫的程式,通常由編輯程式在對源程式進行編輯時,根據資訊的性質來劃分。

分頁的作業位址空間是一維的,即單一的線性空間,程式員隻須利用一個記憶符,即可表示一位址。分段的作業位址空間是二維的,程式員在辨別一個位址時,既需給出段名,又需給出段内位址。

虛拟記憶體

檔案

輸入輸出
緩沖區溢出
緩沖區溢出是指當計算機向緩沖區内填充資料時超過了緩沖區本身的容量,溢出的資料
覆寫在合法資料上。
在目前網絡與分布式系統安全中,被廣泛利用的50%以上都是緩沖區溢出,其中最著名
的例子是1988年利用fingerd漏洞的蠕蟲。而緩沖區溢出中,最為危險的是堆棧溢出,
因為入侵者可以利用堆棧溢出,在函數傳回時改變傳回程式的位址,讓其跳轉到任意地
址,帶來的危害一種是程式崩潰導緻拒絕服務,另外一種就是跳轉并且執行一段惡意代
碼,比如得到shell,然後為所欲為。通過往程式的緩沖區寫超出其長度的内容,造成
緩沖區的溢出,進而破壞程式的堆棧,使程式轉而執行其它指令,以達到攻擊的目的。
造成緩沖區溢出的主原因是程式中沒有仔細檢查使用者輸入的參數。      

死鎖

死鎖的概念

死鎖産生的必要條件

産生死鎖的必要條件: 
1. 互斥(mutualexclusion),一個資源每次隻能被一個程序使用; 
2. 不可搶占(nopreemption),程序已獲得的資源,在未使用完之前,不能強行剝奪; 
3. 占有并等待(hold andwait),一個程序因請求資源而阻塞時,對已獲得的資源保持不放; 
4. 環形等待(circularwait),若幹程序之間形成一種首尾相接的循環等待資源關系。      

作業系統相關

什麼是作業系統的基本功能?

處理機管理。在多道程式或多使用者的情況下,要組織多個作業同時運作,就要解決對處理機配置設定排程政策、配置設定實施和資源回收等問題。
存儲管理。存儲管理的主要工作是對内部存儲器進行配置設定、保護和擴充和管理。
裝置管理。涉及到通道、控制器、輸入輸出裝置的配置設定和管理以及裝置獨立性。
資訊管理(檔案系統管理) 是對系統的軟體資源的管理。
使用者接口。作業系統還為使用者提供一個友好的使用者接口。一般來說,作業系統提供兩種方式的接口來為使用者服務。      

批處理作業系統、分時作業系統和實時作業系統的特點各是什麼?

批處理作業系統的特點:成批處理,系統吞吐量高,資源使用率高,使用者不能直接幹預作業的執行。
分時作業系統的特點:多路性、獨立性、及時性、互動性。
實時作業系統的特點:及時響應、快速處理;高可靠性和安全性;不要求系統資源使用率。      

繼續閱讀