進程與線程

1、進程:進程是可併發的程序在某個數據集合上的一次計算活動,是操作系統進行資源分配和保護的基本單位。

進程是一個正在運行的應用程序,它是暫時存在的,而不像程序放在磁盤中是永久的,一個進程必有一個主線程。

2、進程有哪幾種狀態?狀態轉換圖及導致的事件:

1.就緒->運行:進程調度,當進程獲得了除CPU之外的一切所需資源,一旦得到CPU即可運行。

2.運行->就緒:當佔用CPU的進程時間片用完後,不得不讓出CPU(或者可剝奪的系統中進程調度強行轉爲就緒,讓優先級高的進程運行)

3.運行->等待:當進程正在等待某一事件(如I/O操作)而暫停運行,這時即使CPU空閒,進程也不能運行。

4.等待->就緒:當進程等待的事件結束時,如IO操作結束或者中斷結束時,中斷處理程序把相應進程轉換爲就緒狀態。

3、線程:線程作爲系統調度和分配的基本單位,會被頻繁的調度和切換,同一進程中的多線程切換隻需改變堆棧和寄存器,線程本身不擁有資源,只有一些運行中必不可少的資源,同一進程中的多線程共用進程中的資源,因而就不會像進程切換那樣需要重新分配資源。

什麼是線程同步以及實現線程同步的方式?
線程通信:互斥和同步
1.互斥:線程互斥是指對於共享的進程系統資源,每個線程訪問時的排他性。
         1)多個線程訪問共享資源而不讓資源被破壞。
         2)當一個線程完成某個任務時,通知其他線程(一個或多個)時。
2.同步:線程同步是指線程之間所具有的一種制約關係,一個線程的執行依賴另外一個線程的消息,當它沒有得到另一個線程的消息時應等待,直到消息到達時才被喚醒。

用戶模式:原子訪問(互鎖函數和C++關鍵字)、臨界區。特點:速度快;不能同時訪問、只能是訪問自己進程。
內核對象:事件內核對象(自動重置和人工重置)、互斥內核對象(只能擁有它的線程釋放)、信號量內核對象(單值和多值、被任何線程釋放)。特點:速度慢;部分支持同時訪問,能被其他進程開啓。

發佈了31 篇原創文章 · 獲贊 6 · 訪問量 2807
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章