程序
程序是指,一組指示計算機執行動作或做出判斷的指令,通常使用某種程序設計語言編寫,運行再操作系統上。
程序是靜態的
進程
進程是程序的一次執行過程,進程是動態的。
進程是一個程序及其數據在處理及上順序執行時所發生的活動
進程是具有獨立功能的程序在一個數據集合上運行的過程,它是系統進行資源分配和調度的一個獨立單位。
線程
引入進程的目的是更好地使多通道程序並發執行,提高資源的利用率和系統的吞吐量,而引入線程的目的則是
減小程序在並發執行時所付出的時空開銷,提高操作系統的並發性能。
線程最直接的理解就是“輕量級進程”,它是一個基本的CPU執行單元,也是程序執行流的最小單元。
引入線程后,進程的內涵發生了改變,進程只作為除CPU外的系統資源的分配單元,而線程則作為處理機的分配單元。
並發
所謂的並發指的是同時擁有兩個或多個線程,如果程序在單核處理器上運行,多個線程將交替地換入或者換出內存。
這些進程是同時存在的,每個進程都處於執行過程中的某個狀態,如果運行在多核處理器上,此時,程序中每個處理器
可以執行一個進程,因此多個進程可以同時執行。
並行
並行相對於並發的區別是:
並發指的是兩個或多個事件在同一時間段發生
並行指的是兩個或多個事件在同一時間點發生
在操作系統中,多個程序運行時,並發性指的是在一段時間內宏觀上有多個程序在同時運行
(例如邊玩游戲邊聽歌),但是在單核系統中,每一時刻卻僅有一個程序執行,
這就是CPU中時間片的概念,可以想象CPU把運行1秒鍾分成10份,計算機中所有程序
運行中交替執行在每一個0.1秒之中。而並行則要求在同一時刻一起執行。