進程與線程
【摘要】 進程是操作系統(tǒng)資源分配的基本單位唐片,而線程是任務(wù)調(diào)度和執(zhí)行的基本單位。進程擁有獨立的內(nèi)存空間涨颜,線程則共享所在進程中的內(nèi)存空間费韭。進程之間切換開銷較大,而線程間切換開銷較小庭瑰。程序是一個靜態(tài)指令的集合星持,而進程是一個正在系統(tǒng)中活動的指令集合。
一弹灭、進程的定義
維基百科 In computing, a process is the instance of a computer program that is being executed. It contains the program code and its activity. Depending on the operating system (OS), a process may be made up of multiple threads of execution that execute instructions concurrently.
在計算中督暂,進程是正在執(zhí)行的計算機程序的實例。它包含程序代碼及其活動鲤屡。根據(jù)操作系統(tǒng)(OS)的不同损痰,進程可以由多個執(zhí)行線程組成,這些執(zhí)行線程同時執(zhí)行指令酒来。
百度文庫 進程(Process)是計算機中的程序關(guān)于某數(shù)據(jù)集合上的一次運行活動卢未,是系統(tǒng)進行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)堰汉。在早期面向進程設(shè)計的計算機結(jié)構(gòu)中辽社,進程是程序的基本執(zhí)行實體;在當代面向線程設(shè)計的計算機結(jié)構(gòu)中翘鸭,進程是線程的容器滴铅。程序是指令、數(shù)據(jù)及其組織形式的描述就乓,進程是程序的實體汉匙。
二、 線程的定義
維基百科 In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system.
在計算機科學(xué)中生蚁,執(zhí)行線程是可由調(diào)度程序獨立管理的最小程序指令序列噩翠,調(diào)度程序通常是操作系統(tǒng)的一部分。
百度文庫 線程(Thread)是操作系統(tǒng)能夠進行運算調(diào)度的最小單位邦投。它被包含在進程之中伤锚,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流志衣,一個進程中可以并發(fā)多個線程屯援,每條線程并行執(zhí)行不同的任務(wù)猛们。在Unix System V及SunOS中也被稱為輕量進程(lightweight processes),但輕量進程更多指內(nèi)核線程(kernel thread)狞洋,而把用戶線程(user thread)稱為線程弯淘。
三、 線程與進程
進程是操作系統(tǒng)資源分配的基本單位徘铝,而線程是任務(wù)調(diào)度和執(zhí)行的基本單位
線程和進程的實現(xiàn)在操作系統(tǒng)之間有所不同耳胎,但在大多數(shù)情況下,線程是進程的一個組件惕它。進程是操作系統(tǒng)資源分配的基本單位怕午,而線程是任務(wù)調(diào)度和執(zhí)行的基本單位。在操作系統(tǒng)中能同時運行多個進程淹魄;而在同一個進程中有多個線程同時執(zhí)行(通過CPU調(diào)度郁惜,在每個時間片中只有一個線程執(zhí)行)。
進程擁有獨立的內(nèi)存空間甲锡,線程則共享所在進程中的內(nèi)存空間
進程是系統(tǒng)中獨立存在的實體兆蕉,它可以擁有自己獨立的資源,系統(tǒng)在運行的時候會為每個進程分配不同的內(nèi)存空間缤沦,所以每一個進程都擁有自己私有的內(nèi)存空間虎韵。在沒有經(jīng)過進程本身允許的情況下,一個用戶的進程不可以直接訪問其它進程的內(nèi)存空間缸废。而對線程而言包蓝,除了CPU外,系統(tǒng)不會為線程分配內(nèi)存(線程所使用的資源來自其所屬進程的資源)企量,一個進程中的多個線程之間只能共享進程的資源测萎。而不同的進程不共享這些資源。
進程之間切換開銷較大届巩,而線程間切換開銷較小
每個進程都有獨立的數(shù)據(jù)空間(程序上下文)硅瞧,進程之間的切換會有較大的開銷;線程可以看做輕量級的進程恕汇,同一類線程共享代碼和數(shù)據(jù)空間腕唧,每個線程都有自己獨立的運行棧和程序計數(shù)器(PC),線程之間切換的開銷小瘾英。
程序是一個靜態(tài)指令的集合枣接,而進程是一個正在系統(tǒng)中活動的指令集合
進程與程序的區(qū)別在于,程序只是一個靜態(tài)的指令集合方咆,而進程是一個正在系統(tǒng)中活動的指令集合月腋。在進程中加入了時間的概念蟀架。進程具有自己的生命周期和各種不同的狀態(tài)瓣赂,這寫概念在程序中是不具備的榆骚。