進程的基本概念
概念
進程就是一個程序在一個數據集上的一次動態執行過程。 進程通常由程序、數據集、進程控制塊三部分組成。咱們編寫的程序用來描述進程要完成哪些功能以及如何完成;數據集則是程序在執行過程當中所須要使用的資源;進程控制塊用來記錄進程的外部特徵,描述進程的執行變化過程,系統能夠利用它來控制和管理進程,它是系統感知進程存在的惟一標誌。併發
線程的基本概念
概念
線程是進程中執行運算的最小單位,是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程本身不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的所有資源。一個線程能夠建立和撤消另外一個線程,同一進程中的多個線程之間能夠併發執行。ide
好處高併發
- 易於調度。
- 提升併發性,經過線程可方便有效地實現併發性。進程可建立多個線程來執行同一程序的不一樣部分。
- 開銷少,建立線程比建立進程要快,所需開銷不多
進程的基本狀態及狀態之間的關係
狀態:運行、阻塞、掛起阻塞、就緒、掛起就緒線程
狀態之間的轉換:代理
- 準備就緒的進程,被CPU調度執行,變成運行態;
- 運行中的進程,進行I/O請求或者不能獲得所請求的資源,變成阻塞態;
- 運行中的進程,進程執行完畢(或時間片已到),變成就緒態;
- 將阻塞態的進程掛起,變成掛起阻塞態,當致使進程阻塞的I/O操做在用戶重啓進程前完成(稱之爲喚醒),掛起阻塞態變成掛起就緒態,當用戶在I/O操做結束以前重啓進程,掛起阻塞態變成阻塞態;
- 將就緒(或運行)中的進程掛起,變成掛起就緒態,當該進程恢復以後,掛起就緒態變成就緒態;
進程和線程的關係:
- 一個線程只能屬於一個進程,而一個進程能夠有多個線程,但至少有一個線程。
- 資源分配給進程,同一進程的全部線程共享該進程的全部資源。
- 處理機分給線程,即真正在處理機上運行的是線程
- 線程在執行過程當中,須要協做同步。不一樣進程的線程間要利用消息通訊的辦法實現同步。線程是指進程內的一個執行單元,也是進程內的可調度實體.
###進程與線程的區別:進程
-
運行方式不一樣內存
- 進程不能單獨執行,它只是資源的集合。
- 進程要操做CPU,必需要先建立一個線程。
- 全部在同一個進程裏的線程,是同享同一塊進程所佔的內存空間。
-
關係資源
- 進程中第一個線程是主線程,主線程能夠建立其餘線程;其餘線程也能夠建立線程;線程之間是平等的。
- 進程有父進程和子進程,獨立的內存空間,惟一的標識符:pid。
-
速度同步
- 啓動線程比啓動進程快
- 運行線程和運行進程速度上是同樣的,沒有可比性
- 線程共享內存空間,進程的內存是獨立的。
-
建立it
- 父進程生成子進程,至關於複製一分內存空間,進程之間不能直接訪問
- 建立新線程很簡單,建立新進程須要對父進程進行一次複製
- 一個線程能夠控制和操做同級線程裏的其餘線程,可是進程只能操做子進程。
-
交互
- 同一個進程裏的線程之間能夠直接訪問。
- 兩個進程想通訊必須經過一箇中間代理來實現。
- 調度
- 線程做爲調度和分配的基本單位,進程做爲擁有資源的基本單位
- 併發性
- 不只進程之間能夠併發執行,同一個進程的多個線程之間也可併發執行
- 擁有資源:
- 進程是擁有資源的一個獨立單位,線程不擁有系統資源,但能夠訪問隸屬於進程的資源.
- 系統開銷:
- 在建立或撤消進程時,因爲系統都要爲之分配和回收資源,致使系統的開銷明顯大於建立或撤消線程時的開銷。