3、程序阻塞的原因不包括(a)
a、時間片切換
b、等待i/o
c、程序sleep
d、等待解鎖
答:linux基礎知識。
解析:隻要了解程序的概念就ok。選a。
知識補充:
程序是一個可并發執行的程式,在一個資料集合上的一次運作過程。它是系統進行資源配置設定和排程的一個獨立機關。
程序的特征:動态性、并發性、獨立性、異步性,系統為每一個程序設立一個程序控制塊——pcb。
程序與程式的差別:1)、程式是程序的靜态文本,程序是執行程式的動态過程;2)、一個程序可以執行一個或多個程式,幾個程序可以同時執行一個程式;3)、程式可作為軟體資源長期儲存,程序隻是一次執行過程,是暫時的;4)、程序是系統配置設定排程的獨立機關,能與其他程序并發執行。
程序狀态及其演變:程序執行的間斷性,決定了程序可能具有多種狀态。事實上,運作的程序可能具有就緒狀态、執行狀态、阻塞狀态三種基本狀态。
程序的三種基本狀态演變圖如下圖所示:
當程序已配置設定到除cpu以外的所有必要資源時,它便處于就緒狀态,一旦獲得cpu,便立即執行。已獲得cpu的程序進入執行狀态。正在執行的程序,由于發生某個事件而暫時無法執行時,便放棄處理機而進入阻塞狀态。由于執行的程序變為阻塞狀态後,排程程式立即把處理機配置設定給另一個就緒程序;是以,阻塞程序的事件消失後,程序不會立即恢複到執行狀态,而轉變為就緒狀态,重新等待處理機。
在實際系統中,程序還有其它幾個狀态。有的系統有時希望能人為地把程序挂起,使之處于靜止狀态,以便研究其執行情況或對它進行修改。下圖示出了具有挂起狀态的程序狀态演變圖。
程序控制塊pcb:(process control block)這是為使多個程式能并發執行而為每個程式所配置的一個資料結構,其中存放了用于描述該程序情況和控制程序運作所需的全部資訊。
4、設隻含根結點的二叉樹高度為1,現有一顆高度為h(h>1)的二叉樹上隻有出度為0和出度為2的結點,則此二叉樹中所包含的結點數至少為(b)個。
a、2^h-1
b、2h-1
c、2h
d、2h+1
答:資料結構基礎知識。
解析:如果每個節點出度要麼為0要麼為2,那麼也就是要麼自己為葉子,要麼自己擁有左右兒子。那麼什麼情況下節點最少呢?直接沿着一條路下去保持出度為2,直到高度達到h,那麼此時節點總數:2h-1。故選b。
二叉樹是每個節點最多有兩個子樹的有序樹。深度是對于二叉樹整體來說的,二叉樹的深度就是距離根節點最大的層數。結點指二叉樹中一個個的點。
度指父結點下面有幾個孩子結點。度分為入度和出度,一般都是對于單個結點來說的;入度
(in-degree) :以某頂點為弧頭,終止于該頂點的弧的數目稱為該頂點的入度。出度 (out-degree) :以某頂點為弧尾,起始于該頂點的弧的數目稱為該頂點的出度。
前序:根結點第一個通路,然後通路左、右孩子;後序:根結點最後通路,開始先通路左、右孩子;中序:根結點第二個通路,最先通路左孩子,最後通路右孩子。
舉例說明:如下圖所示
圖中的0、1、2、3、4、5、6就是結點;針對結點1,他下面有兩個孩子3、4,是以說結點1的度為2;針對結點4,他下面一個孩子都沒有,是以說結點4的度為0;前序序列:0134256,後序序列:3415620,中序序列:3140526。
下面給出資料結構中的入度和出度算法(c語言)