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