進程你是從哪蹦出來的?

一、什麼是進程?

1、定義:進程是操作系統分配內存資源的基本單位,也是操作系統獨立調度的基本單位,進程受操作系統管理。
2、兩個特性:

  • 擁有獨立的內存資源,進程想要獨立運行,必須擁有獨立的資源
  • 獨立調度的基本單位,操作系統根據進程中獨立內存中存儲的信息(PCB)來對進程進行統一調度。

二、爲什麼需要進程,進程的由來?

1、早期的計算機只有一塊內存,內存中存儲着代碼,所以一臺計算機一生只能幹一件事情。
2、老馮(馮諾依曼)提出了”馮諾依曼結構“,想運行不同的程序就可以從外存儲器中將這一個程序的代碼放到內存儲器中。如圖:
馮諾依曼結構
3、由於CPU的速度遠遠大於內存,內存的速度遠大於硬盤,內存中的唯一一個程序I/O(從硬盤讀取數據)的時候,CPU就會空閒.
4、爲了讓CPU充分發揮作用,操作系統每次加載多個程序到存,當某個程序I/O的時候,就切換到另一個程序。
5、CPU進行程序之間的切換的時候需要記住切換時的狀態才行,這個記住自己狀態的任務需要交給每個程序自己去做。我們把這些正在運行的程序叫做進程,每個進程中單獨的內存來存儲自己的各種信息的部分,我們稱之爲進程控制塊(PCB).
6、總結:爲了使多個程序併發執行,提高CPU利用率和系統吞吐量引入了進程、

三、引入進程帶來的一些問題?

1、某些進程即使不進行I/O運行時間也很長,導致一些進程等待的時間過長,通過分時系統解決:CPU切換速度極快,CPU給每個進程公平的分配時間,時間到了就會切換支另一個進程。
2、內存空間有限,無法裝入多個程序,利用局部性原理(一旦程序的某塊內存被訪問,則他附近的內存也會被訪問)來解決:我們先裝入程序的某些關鍵代碼,然後利用局部性原理將硬盤中的代碼分塊裝入內存。
3、由於進程之間的空間是獨立的,人們覺得進程之間處理數據還是不夠高效,於是人們引入了線程來解決問題。

四、操作系統、進程、線程之間的關係?

操作系統通過進程中的PCB信息調度進程,線程的調度由進程控制(根據線程中的代碼,此處是我個人理解),同一進程中的所有線程共享這個進程中的內存空間,但是每個線程也有自己獨立的內存空間。
OS-PROCESS-THREAD

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章