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