程序丶執行緒丶CPU關係簡述

2022-08-27 19:30:14 字數 1142 閱讀 3814

本文簡單闡述了程序與執行緒的關係,為了便於理解,本文也將簡述cpu的工作原理。

程序是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。或者說程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的乙個獨立單位。

執行緒則是程序的乙個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位。

程序和執行緒的關係:

(1)乙個執行緒只能屬於乙個程序,而乙個程序可以有多個執行緒,但至少有乙個執行緒。

(2)資源分配給程序,同一程序的所有執行緒共享該程序的所有資源。

(3)處理機分給執行緒,即真正在處理機上執行的是執行緒。 

(4)執行緒在執行過程中,需要協作同步。不同程序的執行緒間要利用訊息通訊的辦法實現同步。

開啟你的任務管理器就能看到程序一欄。如下圖:

程式、執行緒、程序的樹形關係圖如下:

作業系統的設計,因此可以歸結為三點:

(1)以多程序形式,允許多個任務同時執行;

(2)以多執行緒形式,允許單個任務分成不同的部分執行;

(3)提供協調機制,一方面防止程序之間和執行緒之間產生衝突,另一方面允許程序之間和執行緒之間共享資源。

例如我們在玩格鬥遊戲程式的時候,玩家1出拳時,玩家2格擋,這兩個動作是同時發生的,所以此時涉及到了多執行緒,所以遊戲程序要至少有兩個執行緒,分別為出招和格擋。比如我們用qq聊天,同時開著qq**,此時大家感覺qq聊天和qq**是同時進行的,但是cpu在同一時間只能處理一件事情。

我想大家小的時候都應該看過或者很喜歡看一種漫畫書,當你快速的翻閱那本書的時候,書上的人物好像動起來了一樣,就是所謂的逐幀動畫,cpu的處理事件的原理與其類似。

當你執行qq聊天和qq**的時候,cpu的工作就是不斷的切換程序,如果每秒切換6次,你一定會覺得卡,如果切換的足夠快,你將會感覺是同時在執行qq**和qq聊天。

結論:(1)執行緒是程序的一部分

(2)cpu排程的是執行緒

(3)系統為程序分配資源,不對執行緒分配資源

執行緒丶程序丶協程(二)程序 2

當需要建立的子程序數量不多時,可以直接利用multiprocessing中的process動態成生多個程序,但如果是上百甚至上千個目標,手動的去建立程序的工作量巨大,此時就可以用到multiprocessing模組提供的pool方法。初始化pool時,可以指定乙個最大程序數,當有新的請求提交到poo...

執行緒丶程序丶協程(三)協程

協程,又稱微執行緒,纖程。英文名coroutine。協程是python個中另外一種實現多工的方式,只不過比執行緒更小占用更小執行單元 理解為需要的資源 為啥說它是乙個執行單元,因為它自帶cpu上下文。這樣只要在合適的時機,我們可以把乙個協程 切換到另乙個協程。只要這個過程中儲存或恢復 cpu上下文那...

二丶多執行緒的高階一(鎖)

多個執行緒訪問同乙個資料的時候,就會操作執行緒的安全的問題,因為執行緒內部操作其實是先取值,然後修改,最後再更新記憶體中的資料。這樣由於多個執行緒的切換就會導致執行緒安全的問題,比如我們的i 就不是執行緒安全。1.執行緒的安全的原因 由於原子性被破壞。核心思想,對我們的資源進行加鎖,當前只能有乙個執...