tft每日頭條

 > 生活

 > 進程與線程之間的區别

進程與線程之間的區别

生活 更新时间:2024-08-30 17:01:15

進程與線程之間的區别(進程線程協程概念和區别)1

進程是應用程序的啟動實例,進程擁有代碼和打開的文件資源、數據資源、獨立的内存空間。

線程從屬于進程,是程序的實際執行者,一個進程至少包含一個主線程,也可以有更多的子線程,線程擁有自己的棧空間。

操作系統中的進程和線程

對操作系統而言,線程是最小的執行單元,進程是最小的資源管理單元。無論是進程還是線程,都是由操作系統所管理的。

線程的狀态

線程具有五種狀态:初始化、可運行、運行中、阻塞、銷毀

進程與線程之間的區别(進程線程協程概念和區别)2

進程與線程之間的區别(進程線程協程概念和區别)3

進程與線程的區别

1. 進程是CPU資源分配的基本單位,線程是獨立運行和獨立調度的基本單位(CPU上真正運行的是線程)。

2. 進程擁有自己的資源空間,一個進程包含若幹個線程,線程與CPU資源分配無關,多個線程共享同一進程内的資源。

3. 線程的調度與切換比進程快很多。

進程、線程、協程的對比

協程既不是進程也不是線程,協程僅僅是一個特殊的函數,協程與進程和線程不是一個維度的。

一個進程可以包含多個線程,一個線程可以包含多個協程。

一個線程内的多個協程雖然可以切換,但是多個協程是串行執行的,隻能在一個線程内運行,沒法利用CPU多核能力。

協程與進程一樣,切換是存在上下文切換問題的。

上下文切換

進程的切換者是操作系統,切換時機是根據操作系統自己的切換策略,用戶是無感知的。進程的切換内容包括頁全局目錄、内核棧、硬件上下文,切換内容保存在内存中。進程切換過程是由“用戶态到内核态到用戶态”的方式,切換效率低。

線程的切換者是操作系統,切換時機是根據操作系統自己的切換策略,用戶無感知。線程的切換内容包括内核棧和硬件上下文。線程切換内容保存在内核棧中。線程切換過程是由“用戶态到内核态到用戶态”, 切換效率中等。

協程的切換者是用戶(編程者或應用程序),切換時機是用戶自己的程序所決定的。協程的切換内容是硬件上下文,切換内存保存在用戶自己的變量(用戶棧或堆)中。協程的切換過程隻有用戶态,即沒有陷入内核态,因此切換效率高。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved