任务 进程 线程区别
任務(wù)、進(jìn)程、線程區(qū)別
??????? 任務(wù),是指軟件完成的一個活動。一個任務(wù)可以是一個進(jìn)程也可以是一個線程。簡而言之,就是一系列共同達(dá)到某一目的的操作。例如讀取數(shù)據(jù)并將數(shù)據(jù)存放入內(nèi)存。
??????? 進(jìn)程,常被定義為程序的執(zhí)行,可以把一個進(jìn)程看成一個獨(dú)立的程序,在內(nèi)存中有其完備的數(shù)據(jù)空間和代碼空間。一個進(jìn)程所擁有的數(shù)據(jù)和變量只屬于他自己。
???????? 線程,某一進(jìn)程中一路單獨(dú)運(yùn)行的程序。也就是線程存在于進(jìn)程之中,一個進(jìn)程由一個或多個線程構(gòu)成,各線程共享相同的代碼和全局?jǐn)?shù)據(jù),但各有自己的堆棧。由于堆棧是每個線程一個,因此局部變量對每一線程來說是私有的。由于所有縣城共享同樣的代碼和全局?jǐn)?shù)據(jù),他們比進(jìn)程更緊密,線程間的相互作用更容易,因?yàn)樗麄儽旧碛心承┕┩ㄐ庞玫墓蚕韮?nèi)存:進(jìn)程的全局?jǐn)?shù)據(jù)。
??????
一個進(jìn)程和一個線程最顯著的區(qū)別是:線程有自己的全局?jǐn)?shù)據(jù)。線程存在于進(jìn)程中,因此一個進(jìn)程的全局變量由所有的線程共享。由于線程共享同樣的系統(tǒng)區(qū)域,操作系統(tǒng)分配給一個進(jìn)程的資源對該進(jìn)程的所有線程都是可用的,正如全局?jǐn)?shù)據(jù)可供所有線程使用一樣
?
進(jìn)程概念?
進(jìn)程是表示資源分配的基本單位,又是調(diào)度運(yùn)行的基本單位。例如,用戶運(yùn)行自己的程序,系統(tǒng)就創(chuàng)建一個進(jìn)程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、I/O設(shè)備等。然后,把該進(jìn)程放人進(jìn)程的就緒隊(duì)列。進(jìn)程調(diào)度程序選中它,為它分配CPU以及其它有關(guān)資源,該進(jìn)程才真正運(yùn)行。所以,進(jìn)程是系統(tǒng)中的并發(fā)執(zhí)行的單位。?
在Mac、Windows NT等采用微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)中,進(jìn)程的功能發(fā)生了變化:它只是資源分配的單位,而不再是調(diào)度運(yùn)行的單位。在微內(nèi)核系統(tǒng)中,真正調(diào)度運(yùn)行的基本單位是線程。因此,實(shí)現(xiàn)并發(fā)功能的單位是線程。
線程概念?
線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位,亦即執(zhí)行處理機(jī)調(diào)度的基本單位。如果把進(jìn)程理解為在邏輯上操作系統(tǒng)所完成的任務(wù),那么線程表示完成該任務(wù)的許多可能的子任務(wù)之一。例如,假設(shè)用戶啟動了一個窗口中的數(shù)據(jù)庫應(yīng)用程序,操作系統(tǒng)就將對數(shù)據(jù)庫的調(diào)用表示為一個進(jìn)程。假設(shè)用戶要從數(shù)據(jù)庫中產(chǎn)生一份工資單報表,并傳到一個文件中,這是一個子任務(wù);在產(chǎn)生工資單報表的過程中,用戶又可以輸人數(shù)據(jù)庫查詢請求,這又是一個子任務(wù)。這樣,操作系統(tǒng)則把每一個請求――工資單報表和新輸人的數(shù)據(jù)查詢表示為數(shù)據(jù)庫進(jìn)程中的獨(dú)立的線程。線程可以在處理器上獨(dú)立調(diào)度執(zhí)行,這樣,在多處理器環(huán)境下就允許幾個線程各自在單獨(dú)處理器上進(jìn)行。操作系統(tǒng)提供線程就是為了方便而有效地實(shí)現(xiàn)這種并發(fā)性?
引入線程的好處?
(1)易于調(diào)度。?
(2)提高并發(fā)性。通過線程可方便有效地實(shí)現(xiàn)并發(fā)性。進(jìn)程可創(chuàng)建多個線程來執(zhí)行同一程序的不同部分。?
(3)開銷少。創(chuàng)建線程比創(chuàng)建進(jìn)程要快,所需開銷很少。。?
(4)利于充分發(fā)揮多處理器的功能。通過創(chuàng)建多線程進(jìn)程(即一個進(jìn)程可具有兩個或更多個線程),每個線程在一個處理器上運(yùn)行,從而實(shí)現(xiàn)應(yīng)用程序的并發(fā)性,使每個處理器都得到充分運(yùn)行。?
進(jìn)程和線程的關(guān)系?
(1)一個線程只能屬于一個進(jìn)程,而一個進(jìn)程可以有多個線程,但至少有一個線程。?
(2)資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。?
(3)處理機(jī)分給線程,即真正在處理機(jī)上運(yùn)行的是線程。?
(4)線程在執(zhí)行過程中,需要協(xié)作同步。不同進(jìn)程的線程間要利用消息通信的辦法實(shí)現(xiàn)同步。
轉(zhuǎn)載于:https://blog.51cto.com/yangfei1/393232
總結(jié)
以上是生活随笔為你收集整理的任务 进程 线程区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DreamWeaver做ASP 第5页
- 下一篇: 逆向分析员等级