進程與線程相關

1、進程與線程的概念

進程是操作系統對併發執行的程序在執行過程中進行資源分配、系統調度的基本單位,是一個動態概念。

與其對應的是程序,程序意味着一堆指令與數據的有序集合,是一個靜態概念

進程有三個基本狀態:就緒、運行、阻塞。進程的狀態轉換圖:就緒態勢獲得了除cpu外所有必須資源;運行態是就緒態的進程獲取了cpu資源開始執行;阻塞態是運行中的程序缺乏除cpu外的某些資源,比如說等待下一個輸入操作;

線程是進程的一部分,一個沒有線程的進程就可以看作是單線程,因此線程可以看作輕量級的進程,此外在多線程環境下,線程是cpu調度的基本單位。

2、區別與聯繫

內存上來說:

同一進程中的所有線程共享本進程的資源,進程好比一輛火車,線程就是一節節車廂。線程除去共享進程的資源外,只有很少一部分的局部變量和堆棧。進程有自己的獨立地址空間,而線程沒有。

切換開銷:

線程切換的開銷要比進程切換小的多,因爲進程的切換,需要加載上下文,保存上下文;上下文指的是爲該進程分配除cpu以外的資源。而線程由於存在於進程之中,只保有很少量的局部變量以及堆棧,也就是其上下文的準備與保存相比進程小得多。

安全角度:

進程擁有獨立的地址空間,獨立的資源,如果一個進程崩潰,不會影響其他進程。而線程不同,線程共享進程內的資源,當一個線程崩潰,同進程下的所有線程均會崩潰。

執行過程:

進程擁有獨立的程序入口,順序執行序列,以及程序的出口。但線程沒有,線程依賴於進程對其進行控制。

3、多線程

無論調度順序怎樣去改變,對於cpu來說就是輪流來。因爲cpu相對於其他設備而言太快了,我們所能做的就是儘量的提高cpu的使用率,無論是分頁調度制度,還是多線程。

多線程的意義僅僅存於單個進程之中。

可以拿qq來舉例,電腦同時開qq,微信等各種軟件,這就是多進程,進程之間切換比較慢,如果我們的計算機資源不足以爲衆多進程準備上下文,那在切換的時候就會出現卡頓。但正常來說,用戶是感受不到這個切換的,而多線程之間的切換比進程之間就更快了,比如qq可以同時跟多個人聊天,以及語音。這個切換我們更是感受不到了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章