No.33 進程:計算機科學最成功的的概念之一

學過編程的人對“Hello world”程序已經再熟悉不過了,但是大家有沒有思考過一個問題,我們寫的程序爲什麼能在計算機上運行呢?在這裏,我想引進一個概念:進程
爲什麼說進程是計算機中最重要和最成功的概念之一呢?因爲“進程”,我們纔可以更好地識破操作系統的某種“假象”。就像“Hello world”這樣的程序在現代系統上運行時,我們肉眼好像只看到了這一個程序在運行,好像這個程序獨佔了處理器和主存,即改程序的代碼和數據好像是內存中唯一存在的對象。其實這些“假象”是通過進程來實現的。
教科書中對進程的定義爲:進程是進程實體的運行過程,是系統進行資源分配和調度的一個獨立單位。通俗點來說,進程是操作系統對正在運行的程序的一種抽象。在一個系統上可以同時運行諸多進程,比如,我們可以在瀏覽網頁的同時聽音樂、掛QQ等。音樂、QQ等程序在運行時操作系統已經創建了相關的進程。我們之所以可以邊上網邊聊天是因爲進程具有併發運行的特性,即QQ進程的指令和音樂進程的指令在交錯執行。無論是在早期的單核還是現代的多核系統,一個CPU看上去像是併發地執行多個進程,這是通過處理器在進程之間切換來實現的。這種交錯執行的機制也被稱爲“上下文切換”。

與進程容易混淆的另一概念稱爲“線程”。我在其他資料閱讀到一個通俗的例子,將在下文和讀者們分享。
計算機的核心爲CPU,它就像一個工廠,時刻在運行着。假設該工廠資源有限,電能每次只能供給一個車間來生產。這裏的車間就是進程。即一個車間生產時,其他車間必須等待。其含義爲單個CPU每次只能運行一個任務。在一個車間裏,有很多工人,這麼多工人協同完成一個任務。這裏的“工人”就好像是“線程”,一個進程可以包含很多線程。車間裏的空間是人們共享的,這意味着一個進程的內存空間是供線程共享的。但是比如洗手間,每次只供一人使用。有人使用時,其他人必須等待。這就類似線程在訪問某些共享內存時,其他線程必須等它訪問結束才能接着訪問。
大家可以啓用任務管理器來查看目前正在執行的進程:
在這裏插入圖片描述

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