玩轉C#之【執行序-計算機架構相關名詞】

更新 發佈閱讀 8 分鐘

介紹

計算機架構相關名詞

raw-image

作業系統相關

raw-image
  • 電腦程式 (Program)包含一系列指令 (a sequence of instructions) 用來讓電腦運作的檔案
  • 執行 (Execution)將電腦程式中的所有指令載入到記憶體 (RAM) 並建立處理程序的流程
  • 處理程序 (Process)電腦程式實體 (instance of a computer program) (一台電腦可以同時執行多個相同的電腦程式)
    作業系統可能會使用一個多個執行緒來執行電腦程式中的指令 (instructions)
  • 執行緒 (Thread)由作業系統透過排程器(Scheduler)分配執行在電腦程式中一系列指令最小單位
    區分 Kernel threadsUser threads 兩種,負責不同類型的執行任務
  • 排程器 (Scheduling)排程器是作業系統的一個重要元件,用來安排「資源」來執行「工作
    資源包含處理器 (Processor)、核心(Core)、網路、... 等等。
    工作包含執行緒(Thread)、處理程序(Process)、傳輸網路封包 (Traffic flow)、... 等等。
  • 先佔式任務處理 (Preemption)這是一種多工(Multi-Tasking)的實現方式。多工是指電腦同時執行多個程式的能力!
    先佔式任務處理會中斷正在執行中的執行緒,並會在未來的一段時間繼續執行
  • 內容切換 (Context Switching)由於先佔式任務處理會中斷正在執行中的執行緒,在執行緒之間反覆切換的過程叫做內容切換
    Windows / macOS / Linux / AIX / BSD / Solaris 皆採用先佔式多工 (Preemptive Multitasking),一個執行緒執行程式時間用完了,系統就會進行 Context Switch,把 CPU 分配給下一個執行緒,沒有一個程式能獨佔 CPU 時間!
  • 多工處理 (Multi-Tasking)多工是指電腦同時執行多個程式的能力
    多工的一般方法是執行第一個程式的一段代碼,儲存工作環境;再執行第二個程式的一段代碼,儲存環境;……恢復第一個程式的工作環境,執行第一個程式的下一段代碼……現代的多工,每個程式的時間分配相對平均。
  • 多執行緒 (Multithreading)多執行緒是一種利用單一核心來提供多工處理的能力,用來提供同時執行多條執行緒的工作方式,而這種能力通常都是由作業系統內建提供的。
    在多執行緒的應用程式中,執行緒會共用一個或多個核心,而共用的資源包含運算單元、CPU 快取或 TLB (translation lookaside buffer) 等資源。
    新一代的 CPU 基本上都有提供硬體多執行緒的支援,能夠在同一時間執行多於一個執行緒,進而提升整體處理效能

Program vs. Process vs. ThreadScheduling, Preemption, Context Switching

raw-image

https://en.wikipedia.org/wiki/Thread_(computing)

相關名詞

  • 同步 (Synchronous)在計算機的世界裡,沒有什麼程式是真的「同步」的。
    同步通常是指在一個系統中所發生的事件之間進行協調 (coordination of events),讓時間上出現 一致性統一化的現象,讓整件事看起來像是依序執行的結果。
  • 非同步 (Asynchronous)非同步意味著在一個系統中所發生的事件 (occurrence of events) 都可以獨立執行,並且提供一些方法來處理這些事件。
    這些發生的事件不會封鎖(Block)主程式執行緒,因此可以多個工作進行平行處理
  • 同步化 (Synchronization)當多執行緒需要同時存取共用資源時,所需進行的管控機制,確保程式執行時可以得到預期結果
    跨執行緒的同步化: lock, SpinLock, Mutex, ReaderWriterLockSlim, Barrier, CountdownEvent, ...
    跨處理程序同步化:Mutex, Semaphore (Windows), EventWaitHandle (Windows)
    相關文章:Overview of synchronization primitives
  • 執行緒安全 (Thread-safety)在多執行緒環境下執行程式,用以確保執行可以得到預期執行結果
    實現執行緒安全必要條件就是必須能夠提供同步化機制!
  • 同步內容 (SynchronizationContext)允許執行緒透過將工作單元(Work of Unit)進行封裝(Marshal)之後,傳遞給其他執行緒
  • 競爭狀態 (Race Condition)競爭情形是一種錯誤,這種錯誤是指根據兩個或多個執行緒之中,哪一個先到達程式碼的特定區塊而決定程式的結果。
    執行程式多次會產生不同的結果,並且無法預測任何指定的執行結果。
  • 關鍵區段 (Critical Section)是一段程式碼不允許多執行緒同時執行
    為了避免資源競爭的情況發生 (Race Condition)
  • 死結 (Deadlock)當兩個以上執行緒雙方都在等待對方停止執行,以取得系統資源,但是沒有一方會先結束。
    📷

.NET程式啟動流程

  • .NET 處理程序(Process)啟動後,僅會有一個前景執行緒!每個執行程序都可以產生出許多前景執行緒背景執行緒
  • 前景執行緒 (Foreground Thread)所有前景執行緒必須全部結束執行,否則處理程序無法結束執行
    無論是否還有背景執行緒在執行,沒有前景執行緒在跑,該處理程序就一定會結束
    new Thread() 預設就是前景執行緒
  • 背景執行緒 (Background Thread)new Task() 預設就是背景執行緒
    執行緒集區(Thread Pool)取得的執行緒,一定是背景執行緒
    Task.Run 從執行緒集區取得一個執行緒,因此是背景執行緒
  • 主執行緒(main Thread)程序啟動時的第一個執行緒

參考資料

C# 開發實戰:非同步程式開發技巧

本篇已同步發表至個人部落格
https://moushih.com/2022ithome18/

我的鐵人賽文章

https://ithelp.ithome.com.tw/articles/10292654

留言
avatar-img
一代軍師
8會員
39內容數
我是這個部落格的作者,喜歡分享有關投資 💰、軟體開發 💻、占卜 🔮 和虛擬貨幣 🚀 的知識和經驗。
一代軍師的其他內容
2024/02/12
盤面基本組成要素 十天干:甲乙丙丁戊己庚辛壬癸 十二地支:子丑寅卯辰巳午未申酉戌亥 五行:木、火、土、金、水 八門:休、生、傷、杜、景、死、驚、開 八神:符、蛇、陰、合、虎、武、九、天 九星:蓬、任、沖、輔、英、芮、柱、心、禽 八卦:坎、艮、震、兌、離、坤、乾 六個旬首:甲子戊、甲戊
Thumbnail
2024/02/12
盤面基本組成要素 十天干:甲乙丙丁戊己庚辛壬癸 十二地支:子丑寅卯辰巳午未申酉戌亥 五行:木、火、土、金、水 八門:休、生、傷、杜、景、死、驚、開 八神:符、蛇、陰、合、虎、武、九、天 九星:蓬、任、沖、輔、英、芮、柱、心、禽 八卦:坎、艮、震、兌、離、坤、乾 六個旬首:甲子戊、甲戊
Thumbnail
2023/10/22
Drawmind 畫鏡 主要目的是透過藝術治療,幫助個人減輕情感壓力、提升心理健康,並提供一個具有專業指導的平台,讓用戶進行情感表達、自我探索和康復。
Thumbnail
2023/10/22
Drawmind 畫鏡 主要目的是透過藝術治療,幫助個人減輕情感壓力、提升心理健康,並提供一個具有專業指導的平台,讓用戶進行情感表達、自我探索和康復。
Thumbnail
2023/08/14
原理 八字 八字不等於出生時間 八字是根據每個兩小時為一個單位的時辰來劃分的。 它包括年、月、日和時這四個要素,其中年、月、日分別對應天干地支。 即使缺少具體出生時刻,也仍然可以排出命盤進行分析。 紫微斗數 需要精確的出生的小時數,因為出生時間的稍微差異呈現出來的命盤會有天差地別,從而
Thumbnail
2023/08/14
原理 八字 八字不等於出生時間 八字是根據每個兩小時為一個單位的時辰來劃分的。 它包括年、月、日和時這四個要素,其中年、月、日分別對應天干地支。 即使缺少具體出生時刻,也仍然可以排出命盤進行分析。 紫微斗數 需要精確的出生的小時數,因為出生時間的稍微差異呈現出來的命盤會有天差地別,從而
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
第三方套件用了Promise或是Reactive,導致所有business logic都要做調整,這就違反「只能有對內的相依方向」的原則。business logic大多數情況下與效能優化無關,通常需要優化的是I/O的存取,這些既然都在外層,就應該在外層做優化,外層的優化不該影響核心,這才是好架構。
Thumbnail
第三方套件用了Promise或是Reactive,導致所有business logic都要做調整,這就違反「只能有對內的相依方向」的原則。business logic大多數情況下與效能優化無關,通常需要優化的是I/O的存取,這些既然都在外層,就應該在外層做優化,外層的優化不該影響核心,這才是好架構。
Thumbnail
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
Thumbnail
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
Thumbnail
  在說執行緒(Thread)時就要先知道什麼是程式(Program)、程序(Process),才能了解什麼是執行緒(Thread),因為它們間都有著神秘的關係與關聯,再更深入一點就又會有多程序(muti-Process)、多執行緒(muti-Thread),我們就先一一說明好了,了解它們後再使用時
Thumbnail
  在說執行緒(Thread)時就要先知道什麼是程式(Program)、程序(Process),才能了解什麼是執行緒(Thread),因為它們間都有著神秘的關係與關聯,再更深入一點就又會有多程序(muti-Process)、多執行緒(muti-Thread),我們就先一一說明好了,了解它們後再使用時
Thumbnail
這邊要來跟大家介紹C#,使用的軟體會是Visual Studio 2017版本 介紹內容架構可以分六大階段:入門級、基礎級、中低階級、中階級、中高階級、高階級 在正式開始寫程式前,要先了解一些基本概念哦! 就如同學中文前要先了解ㄅㄆㄇㄈ或羅馬拼音之類的,程式也是一樣道理,先把基本概念了解後再來開始
Thumbnail
這邊要來跟大家介紹C#,使用的軟體會是Visual Studio 2017版本 介紹內容架構可以分六大階段:入門級、基礎級、中低階級、中階級、中高階級、高階級 在正式開始寫程式前,要先了解一些基本概念哦! 就如同學中文前要先了解ㄅㄆㄇㄈ或羅馬拼音之類的,程式也是一樣道理,先把基本概念了解後再來開始
Thumbnail
介紹 原始碼(source code)→編譯器→中繼語言(MSIL)→CLR→電腦看得懂的語言(Native code) 所以我們可以知道,CLR( Common Language Runtime ):是 .NET Framework 的虛擬機器元件 (virtual machine compone
Thumbnail
介紹 原始碼(source code)→編譯器→中繼語言(MSIL)→CLR→電腦看得懂的語言(Native code) 所以我們可以知道,CLR( Common Language Runtime ):是 .NET Framework 的虛擬機器元件 (virtual machine compone
Thumbnail
介紹 委派的非同步方法 可以透過BeginInvoke執行委派的非同步方法 Action<T>.BeginInvoke(<T> obj,AsyncCallback callback,Object @object) 第一個內容的 obj,只的是要傳入acction委派的參數 第二個AsyncCallb
Thumbnail
介紹 委派的非同步方法 可以透過BeginInvoke執行委派的非同步方法 Action<T>.BeginInvoke(<T> obj,AsyncCallback callback,Object @object) 第一個內容的 obj,只的是要傳入acction委派的參數 第二個AsyncCallb
Thumbnail
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
Thumbnail
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
Thumbnail
介紹 計算機架構相關名詞 📷 中央處理器 (CPU)Central Processing Unit Processors (處理器) Sockets (實體插槽) Cores (實體核心) Logical processors (邏輯核心) 超執行緒(HT)Hyper-Threading Tec
Thumbnail
介紹 計算機架構相關名詞 📷 中央處理器 (CPU)Central Processing Unit Processors (處理器) Sockets (實體插槽) Cores (實體核心) Logical processors (邏輯核心) 超執行緒(HT)Hyper-Threading Tec
Thumbnail
行程(進程、process)、執行緒(線程、thread)、上下文切換(context switch)、行程控制塊(PCB)、行程排班(process scheduler)、行程狀態、執行緒模式
Thumbnail
行程(進程、process)、執行緒(線程、thread)、上下文切換(context switch)、行程控制塊(PCB)、行程排班(process scheduler)、行程狀態、執行緒模式
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News