天天看點

有關程序和線程的知識點總結

程序: 一個或多個線程及系統資源,

線程:可配置設定的工作單元,包括上下文處理器對象,線程順序執行,

應屆生經典面試題:說說程序與線程的差別與聯系

    程序,是并發執行的程式在執行過程中配置設定和管理資源的基本機關,是一個動态概念,竟争計算機系統資源的基本機關。每一個程序都有一個自己的位址空間,即程序空間或(虛空間)。程序空間的大小 隻與處理機的位數有關,一個 16 位長處理機的程序空間大小為 216 ,而 32 位處理機的程序空間大小為 232 。程序至少有 5 種基本狀态,它們是:初始态,執行态,等待狀态,就緒狀态,終止狀态。

線程,在網絡或多使用者環境下,一個伺服器通常需要接收大量且不确定數量使用者的并發請求,為每一個請求都建立一個程序顯然是行不通的,——無論是從系統資源開銷方面或是響應使用者請求的效率方面來看。是以,作業系統中線程的概念便被引進了。線程,是程序的一部分,一個沒有線程的程序可以被看作是單線程的。線程有時又被稱為輕權程序或輕量級程序,也是 CPU 排程的一個基本機關。

程序的執行過程是線狀的,盡管中間會發生中斷或暫停,但該程序所擁有的資源隻為該線狀執行過程服務。一旦發生程序上下文切換,這些資源都是要被保護起來的。這是程序宏觀上的執行過程。而程序又可有單線程程序與多線程程序兩種。我們知道,程序有 一個程序控制塊 PCB ,相關程式段 和 該程式段對其進行操作的資料結構集 這三部分,單線程程序的執行過程在宏觀上是線性的,微觀上也隻有單一的執行過程;而多線程程序在宏觀上的執行過程同樣為線性的,但微觀上卻可以有多個執行操作(線程),如不同代碼片段以及相關的資料結構集。線程的改變隻代表了 CPU 執行過程的改變,而沒有發生程序所擁有的資源變化。出了 CPU 之外,計算機内的軟硬體資源的配置設定與線程無關,線程隻能共享它所屬程序的資源。與程序控制表和 PCB 相似,每個線程也有自己的線程控制表 TCB ,而這個 TCB 中所儲存的線程狀态資訊則要比 PCB 表少得多,這些資訊主要是相關指針用堆棧(系統棧和使用者棧),寄存器中的狀态資料。程序擁有一個完整的虛拟位址空間,不依賴于線程而獨立存在;反之,線程是程序的一部分,沒有自己的位址空間,與程序内的其他線程一起共享配置設定給該程序的所有資源。

    線程可以有效地提高系統的執行效率,但并不是在所有計算機系統中都是适用的,如某些很少做程序排程和切換的實時系統。使用線程的好處是有多個任務需要處理機處理時,減少處理機的切換時間;而且,線程的建立和結束所需要的系統開銷也比程序的建立和結束要小得多。最适用使用線程的系統是多處理機系統和網絡系統或分布式系統。

----------------------------------

1. 線程的執行特性。

    線程隻有 3 個基本狀态:就緒,執行,阻塞。

    線程存在 5 種基本操作來切換線程的狀态:派生,阻塞,激活,排程,結束。

2. 程序通信。

    單機系統中程序通信有 4 種形式:主從式,會話式,消息或郵箱機制,共享存儲區方式。

        主從式典型例子:終端控制程序和終端程序。

        會話式典型例子:使用者程序與磁盤管理程序之間的通信。

當作業系統為另一個程序顯示的請求建立一個程序時,這個動作成為派生程序;

程序是以異步的方式運作的;

說明PCB的作用,  說明為什麼PCB是程序存在的唯一标志

PCB是程序實體的重要部分,是作業系統中最重要的記錄資料結構,pcb中記錄了作業系統所需的用于描述程序情況,進控制程序運作所需的所有資訊,因而它的作用是使一個在多道程式環境下不能運作的程式成為一個能夠獨立運作的程式的基本機關,

在程序的生命周期中,系統總是通過對pcb對程序進行控制,系統是根據程序的PCB而不是通過任何别的而感覺程序的存在的額,是以說,PCB是程序存在的唯一标志;

引入程序挂起狀态的需要:使用者終端請求,父程序請求,負荷調節的需要,作業系統的需要;

被挂起的程序處于靜止狀态, 并且不能被處理機制排程;

同步機構應該遵循的尊則:空閑讓進,忙則等待,有限等待, 讓權等待;