1樓:陰雨小鎮丶成都
linux中有具體的函式,不用模擬,當然如果這只是一個課業,用來理解程序的一系列建立,撤銷,等等的話,就另當別論了。那麼切入正題,在這些操作中涉及一個控制權轉移的問題,這時你要有一個system物件來管理和排程程序,system物件排程程序時,為程序實體新增一些方法,以便控制權返還給它,那麼這時其它的問題都迎丸而解了,
linux中程序的阻塞和掛起的區別
2樓:網友
掛起就是暫停,有需要的時候在執行。
後臺執行就是繼續執行功能,但是不做互動了;
假設掛起web服務程式,他就不提供web訪問服務了;
後臺執行web伺服器還是提供web訪問服務的,有些版本的系統,前臺和後臺執行佔用的資源優先順序由點區別;
你說這個有什麼相同之處呢?
程序的阻塞和掛起的區別
3樓:強12強
理解一:掛起是一種主動行為,因此恢復也應該要主動完成,而阻塞則是一種被動行為,是在等待事件或資源時任務的表現,你不知道他什麼時候被阻塞(pend),也就不能確切 的知道他什麼時候恢復阻塞。而且掛起佇列在作業系統裡可以看成一個,而阻塞佇列則是不同的事件或資源(如訊號量)就有自己的佇列。
理解二:阻塞(pend)就是任務釋放cpu,其他任務可以執行,一般在等待某種資源或訊號量的時候出現。掛起(suspend)不釋放cpu,如果任務優先順序高就永遠輪不到其他任務執行,一般掛起用於程式除錯中的條件中斷,當出現某個條件的情況下掛起,然後進行單步除錯。
理解三:pend是task主動去等一個事件,或訊息。suspend是直接懸掛task,以後這個task和你沒任何關係,任何task間的通訊或者同步都和這個suspended task沒任何關係了,除非你resume task;
理解四:任務排程是作業系統來實現的,任務排程時,直接忽略掛起狀態的任務,但是會顧及處於pend下的任務,當pend下的任務等待的資源就緒後,就可以轉為ready了。ready只需要等待cpu時間,當然,任務排程也佔用開銷,但是不大,可以忽略。
可以這樣理解,只要是掛起狀態,作業系統就不在管理這個任務了。
理解五:掛起是主動的,一般需要用掛起函式進行操作,若沒有resume的動作,則此任務一直不會ready。而阻塞是因為資源被其他任務搶佔而處於休眠態。
兩者的表現方式都是從就緒態裡「清掉」,即對應標誌位清零,只不過實現方式不一樣。
以上來自部落格內容。
程序掛起與阻塞有什麼不同?
4樓:網友
程序的掛起:系統在超過一定的時間沒有任何動作。
程序的阻塞:程序因等待某一件事情(如等待i/o裝置)而暫時不能執行的狀態,此時即使處理機空閒,程序也無法使用。系統中處於阻塞態(又稱封鎖態、等待態、睡眠態)的程序也可以有多個。
程序的組成。
程式: 描述了程序所要完成的功能。 是程序存在的物質基礎。
資料: 是程式加工的物件。
程序控制塊pcb:用來描述程序的一切靜態和動態的特徵,作業系統只能通過它來感知和管理程序。每個程序都有且僅有一個程序控制塊。
程序控制塊的內容:pcb的具體內容隨不同系統而異,一般包括以下資訊:
· 程序標識: 唯一地標識程序的名稱或**。
· 程序狀態: 標識程序是執行態、就緒態或阻塞態。
· 程序實體: 指示程序的程式部分和資料部分在儲存器中的位置和大小。
· 排程資訊(優先數): 確定就緒程序轉為執行程序的優先順序。
· 資源資訊: 描述記憶體佔用、外設佔用等資訊。
· 現場資訊: 包括程式計數器、程式狀態字、累加器、變址暫存器的當前值。
· 程序通訊資訊:用於程序間的通訊。
如何讓阻塞狀態的執行緒重新處於執行狀態
5樓:娛樂小八卦啊
如果有兩個執行緒同時等在一個synchronized方法上,那麼當其中一個結束執行的時候,另一個將自動得到機會執行。如果手動讓制一個執行緒wait在一個物件obj上,那麼需要在合適的時候呼叫來喚醒zd那些等待的執行緒,它們中的一個將會得到執行。
如果發生下面幾種情況時,處於執行狀態的執行緒就進入阻塞狀態:執行緒呼叫了sleep()方法、join()方法時:執行緒呼叫wait()方法時;如果執行緒中使用synchronized來請求物件的鎖未獲得時;如果執行緒中有輸入/輸出操作,則將進入阻塞狀態,待輸入/輸出操作結束後,執行緒進入可執行狀態。
在linux中程序的「掛起」和命令「後臺執行」的相同之處是什麼?
6樓:好好學向前看
掛起就是暫停,有需要的時候在執行。
後臺執行就是繼續執行功能,但是不做互動了;
假設掛起web服務程式,他就不提供web訪問服務了;
後臺執行web伺服器還是提供web訪問服務的,有些版本的系統,前臺和後臺執行佔用的資源優先順序由點區別;
你說這個有什麼相同之處呢?
2. 在linux中程序有哪幾種狀態,每種狀態代表的含義是什麼? 5
7樓:網友
linux核心中定義了以下幾種狀態:
#define task_running 0#define task_interruptible 1#define task_uninterruptible 2#define task_zombie 4#define task_stopped 8其中:task_running是就緒態,程序當前只等待cpu資源。
task_interruptible和task_uninterruptible都是阻塞態,程序當前正在等待除cpu外的其他系統資源;前者可以被訊號喚醒,後者不可以。
task_zombie是殭屍態,程序已經結束執行,但是程序控制塊尚未登出。
task_stopped是掛起狀態,主要用於除錯目的。程序接收到sigstop訊號後會進入該狀態,在接收到sigcont後又會恢復執行。
8樓:網友
使用top -c 檢視。
r工作中的程序。
s可中斷的睡眠狀態。
i空閒狀態(idle)
o程序正在處理器執行。
d不可中斷的睡眠狀態。
t暫停狀態或跟蹤狀態。
x出狀態,程序即將被銷燬。
z殭屍程序。
linux 下 程序和執行緒的區別
二者的聯絡 一個執行緒可以建立和撤銷另一個執行緒 同一個程序中的多個執行緒之間可以併發執行。執行緒是一個更加接近於執行體的概念,它可以與同程序中的其他執行緒共享資料,但擁有自己的棧空間,擁有獨立的執行序列。二者的區別 主要差別在於它們是不同的作業系統資源管理方式。程序有獨立的地址空間,一個程序崩潰後...
這些是什麼程序 程序是什麼意思?
第一個是瑞星監控 第二個比較麻煩,請看下面 第三個輸入法 service host process是一個標準的動態連線庫主機處理服務。對那些從動態連線庫 dll 中執行的服務來說是一個普通的主機程序名。檔案定位在系統的windows system32資料夾下。在啟動的時候,檢查登錄檔中的位置來構建需...
程序和程式有什麼區別,程序和程式的區別 程序和程式有什麼區別
程序也叫服務!程序其實是win2000 xp 2003中一種特殊的應用程式型別,它也是一種程式。不過它同一般的程式最大的區別有兩個 一,隨著系統啟動而啟動。二,完全在後臺執行,一般我們看不到它。而一般的程式,比較直接明瞭,需人工參與才能執行,而且直接顯示出來介面或者結果。先有程式 再有程序 程式是為...