進程與線程的歷史
我們都知道計算機是由硬件和軟件組成的。硬件中的CPU是計算機的核心,它承擔計算機的所有任務。操作系統是運行在硬件之上的軟件,是計算機的管理者,它負責資源的管理和分配、任務的調度。程序是運行在系統上的具有某種功能的軟件,比如說瀏覽器,音樂播放器等。每次執行程序的時候,都會完成一定的功能,比如說瀏覽器幫我們打開網頁,為了保證其獨立性,就需要一個專門的管理和控制執行程序的數據結構——進程控制塊。進程就是一個程序在一個數據集上的一次動態執行過程。進程一般由程序、數據集、進程控制塊三部分組成。我們編寫的程序用來描述進程要完成哪些功能以及如何完成;數據集則是程序在執行過程中所需要使用的資源;進程控制塊用來記錄進程的外部特征,描述進程的執行變化過程,系統可以利用它來控制和管理進程,它是系統感知進程存在的唯一標志。
在早期的操作系統里,計算機只有一個核心,進程執行程序的最小單位,任務調度采用時間片輪轉的搶占式方式進行進程調度。每個進程都有各自的一塊獨立的內存,保證進程彼此間的內存地址空間的隔離。隨著計算機技術的發展,進程出現了很多弊端,一是進程的創建、撤銷和切換的開銷比較大,二是由于對稱多處理機(對稱多處理機(SymmetricalMulti-Processing)又叫SMP,是指在一個計算機上匯集了一組處理器(多CPU),各CPU之間共享內存子系統以及總線結構)的出現,可以滿足多個運行單位,而多進程并行開銷過大。這個時候就引入了線程的概念。線程也叫輕量級進程,它是一個基本的CPU執行單元,也是程序執行過程中的最小單元,由線程ID、程序計數器、寄存器集合和堆棧共同組成。線程的引入減小了程序并發執行時的開銷,提高了操作系統的并發性能。線程沒有自己的系統資源,只擁有在運行時必不可少的資源。但線程可以與同屬與同一進程的其他線程共享進程所擁有的其他資源。
進程與線程之間的關系
線程是屬于進程的,線程運行在進程空間內,同一進程所產生的線程共享同一內存空間,當進程退出時該進程所產生的線程都會被強制退出并清除。線程可與屬于同一進程的其它線程共享進程所擁有的全部資源,但是其本身基本上不擁有系統資源,只擁有一點在運行中必不可少的信息(如程序計數器、一組寄存器和棧)。
python線程
Threading用于提供線程相關的操作,線程是應用程序中工作的最小單元。
以上內容為大家介紹了Python的進程和線程,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.mycheba.com/