進程和線程的聯繫和區別

引入線程是爲了減小程序在併發執行時所付出的時空開銷。多線程

屬性:併發

  1. 輕型實體。它不擁有系統資源,只是有一點必不可少的、能保證獨立運行的資源。
  2. 獨立調度和分派的基本單位。在多線程OS中,線程是獨立運行的基本單位,於是也是獨立調度和分派的基本單位,但因爲線程很輕,故線程的切換很是迅速且開銷小。
  3. 可併發執行。在一個進程中的多個線程之間能夠併發執行,甚至容許在一個進程中的全部線程都能併發執行;一樣,不一樣進程中的線程也能併發執行。
  4. 共享進程資源。在同一個進程中的各個線程均可以共享該進程所擁有的資源,這首先表如今:全部線程都具備相同的地址空間(進程的地址空間),這意味着,線程能夠訪問該地址空間中的每個虛地址;此外,還能夠訪問進程所擁有的已打開文件、定時器、信號量機構等。

線程的建立和終止spa

雖然已被終止但還沒有釋放資源的線程,仍能夠被須要他的線程所調用,以使被終止的線程從新恢復運行。爲此,調用者線程須調用一條被稱爲「等待線程終止」的鏈接命令,來與該線程從新鏈接,若是在一個調用者線程調用"等待線程終止"的鏈接命令,試圖與指定線程相鏈接時,若指定線程還沒有被終止,則調用鏈接命令的線程將會阻塞,直至指定線程被終止後,才能實現它與調用者線程的鏈接並繼續執行,若指定線程已被終止,則調用線程不會被阻塞而是繼續執行。操作系統

多線程OS中的進程:線程

  1. 做爲系統資源分配的單位。在多線程OS中,仍然是以進程做爲系統資源分配的基本單位,在任何一個進程中所擁有的資源包括:受到分別保護的用戶地址空間、用於實現進程間和線程間同步和通訊的機制、已打開的文件和已收申請到I/O設備,以及一張由核心進程維護的地址映射表,該表用於實現用戶程序的邏輯地址到其內存物理地址的映射。
  2. 可包括多個線程。一般一個進程都含有多個相對獨立的線程,其數目可多可少,但至少也要有一個線程,由進程爲這些線程提供資源及運行環境,使這些線程可併發執行。在OS中的全部線程都只能屬於某個特定的進程。
  3. 進程不是一個可執行的實體。在多線程OS中,是把線程做爲獨立運行的基本單位,因此此時的進程已再也不是一個可執行的實體。

 

定義:進程

1、進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位。
2、線程是進程的一個實體,是CPU調度和分派的基本單位,他是比進程更小的能獨立運行的基本單位,線程本身基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),一個線程能夠建立和撤銷另外一個線程;內存

進程和線程的關係:資源

(1)一個線程只能屬於一個進程,而一個進程能夠有多個線程,但至少有一個線程。
(2)資源分配給進程,同一進程的全部線程共享該進程的全部資源。
(3)線程在執行過程當中,須要協做同步。不一樣進程的線程間要利用消息通訊的辦法實現同步。
(4)處理機分給線程,即真正在處理機上運行的是線程。
(5)線程是指進程內的一個執行單元,也是進程內的可調度實體。
線程與進程的區別:
(1)調度:線程做爲調度和分配的基本單位,進程做爲擁有資源的基本單位。
(2)併發性:不只進程之間能夠併發執行,同一個進程的多個線程之間也能夠併發執行。
(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但能夠訪問隸屬於進程的資源。
(4)系統開銷:在建立或撤銷進程的時候,因爲系統都要爲之分配和回收資源,致使系統的明顯大於建立或撤銷線程時的開銷。但進程有獨立的地址空間,進程崩潰後,在保護模式下不會對其餘的進程產生影響,而線程只是一個進程中的不一樣的執行路徑。線程有本身的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,因此多進程的程序要比多線程的程序健壯,可是在進程切換時,耗費的資源較大,效率要差些。同步

線程的劃分尺度小於進程,使得多線程程序的併發性高。多進程

另外,進程在執行過程當中擁有獨立的內存單元,而多個線程共享內存,從而極大的提升了程序運行效率。

線程在執行過程當中,每一個獨立的線程有一個程序運行的入口,順序執行序列和程序的出口。可是線程不可以獨立執行,必須依存在應用程序中,有應用程序提供多個線程執行控制。

從邏輯角度看,多線程的意義子啊與一個應用程序中,有多個執行部分能夠同時執行。但操做系統並無將多個線程看作多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。

相關文章
相關標籤/搜索