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

閱讀時間約 1 分鐘

介紹

計算機架構相關名詞

作業系統相關

  • 電腦程式 (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
相關名詞
  • 同步 (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)程序啟動時的第一個執行緒

參考資料

本篇已同步發表至個人部落格
https://moushih.com/2022ithome18/
我的鐵人賽文章
https://ithelp.ithome.com.tw/articles/10292654
為什麼會看到廣告
8會員
39內容數
我是這個部落格的作者,喜歡分享有關投資 💰、軟體開發 💻、占卜 🔮 和虛擬貨幣 🚀 的知識和經驗。
留言0
查看全部
發表第一個留言支持創作者!
一代軍師 的其他內容
Array 在記憶體中連續分配,而且元素類型是一樣的,長度不變 優點:讀取快,可以使用座標訪問 缺點:新增、刪除慢 記憶體: 📷 範例程式碼: ArrayList 不定長度,在記憶體中連續分配的,元素沒有類型限制,任何元素都是當成object處理,如果是值類型,會有裝箱的操作 優點:讀取快 缺點:
介紹 這章節純看智商 不可逆加密:原文加密後變成密文,但密文沒辦法解密文回原文 可逆加密:原文加密過後的密文,可以在將密文解密回原文 對稱:表示加解密是否使用同一個key MD5 不可逆加密 MD5 使用的命名空間是 System.Security.Cryptography MD5是一種公開的算法
環境安裝 這邊可以先安裝Expression Tree Visualizer工具 Viusla studio 2019 安裝方式: 檔案(ExpressionTreeVisualizer.2019)下載完之後,將檔案複製到此目錄: C:\Program Files (x86)\Microsoft V
環境準備 準備用測試資料 語法說明 Where 應用場景:過濾、查詢等功能 說明:與SQL命令中的where功能相似,都是過濾範圍內的數值 例如:使用where篩選,年紀大於30的同學 First 應用場景:篩選出第一筆資料,但資料如果是空的會跳Exception 說明:返回集合中的第一個元素,其實
介紹 LINQ全名是(Language-Integrated Query),是一組以直接將查詢功能整合至C# 語言為基礎之技術的名稱。 大家可以想像SQL有SQL的查詢語法,MySql有MySql的查詢語法,但我們可以只透過LINQ語法,C#會自動幫我們轉換成對應的資料庫查詢語法,有點像是秦始皇統一
介紹 序列化、反序列化概念: 📷 關於泛型委派、解偶、非同步多執行緒、委派的歷史寫法演進之後會專門寫一篇文章跟大家講解 使用方式 測試資料 SerializableAttribute 微軟說明文件 二進位序列化 雖然這裡介紹BinaryFormatter但在 .NET 7中已經屬於過時的方法了
Array 在記憶體中連續分配,而且元素類型是一樣的,長度不變 優點:讀取快,可以使用座標訪問 缺點:新增、刪除慢 記憶體: 📷 範例程式碼: ArrayList 不定長度,在記憶體中連續分配的,元素沒有類型限制,任何元素都是當成object處理,如果是值類型,會有裝箱的操作 優點:讀取快 缺點:
介紹 這章節純看智商 不可逆加密:原文加密後變成密文,但密文沒辦法解密文回原文 可逆加密:原文加密過後的密文,可以在將密文解密回原文 對稱:表示加解密是否使用同一個key MD5 不可逆加密 MD5 使用的命名空間是 System.Security.Cryptography MD5是一種公開的算法
環境安裝 這邊可以先安裝Expression Tree Visualizer工具 Viusla studio 2019 安裝方式: 檔案(ExpressionTreeVisualizer.2019)下載完之後,將檔案複製到此目錄: C:\Program Files (x86)\Microsoft V
環境準備 準備用測試資料 語法說明 Where 應用場景:過濾、查詢等功能 說明:與SQL命令中的where功能相似,都是過濾範圍內的數值 例如:使用where篩選,年紀大於30的同學 First 應用場景:篩選出第一筆資料,但資料如果是空的會跳Exception 說明:返回集合中的第一個元素,其實
介紹 LINQ全名是(Language-Integrated Query),是一組以直接將查詢功能整合至C# 語言為基礎之技術的名稱。 大家可以想像SQL有SQL的查詢語法,MySql有MySql的查詢語法,但我們可以只透過LINQ語法,C#會自動幫我們轉換成對應的資料庫查詢語法,有點像是秦始皇統一
介紹 序列化、反序列化概念: 📷 關於泛型委派、解偶、非同步多執行緒、委派的歷史寫法演進之後會專門寫一篇文章跟大家講解 使用方式 測試資料 SerializableAttribute 微軟說明文件 二進位序列化 雖然這裡介紹BinaryFormatter但在 .NET 7中已經屬於過時的方法了
你可能也想看
Thumbnail
作家 Morgan Housel 在《華爾街日報》中提出一個觀點:我們是用理解知識的方式在思考、學習金錢觀,而不是用理解心智與行為模式的方式學習理財。這段話讓我意識到,我們的財務決策並非總是理性的,情緒因素也扮演著重要角色。通過掌握金錢心理學,能夠幫助我們改善用錢習慣,使財務決策更為理性和長遠。
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
暢銷懸疑小說的《法庭遊戲》改編為電影版,日前也在台灣上映,燒腦的情節加上法庭的諜對諜攻防;再加上永瀨廉、杉咲花、北村匠海三位高人氣演員加持。
Thumbnail
自2020年問世以來,日本潮流品牌Water The Plant便以其獨特的設計理念和色彩豐富的產品系列,在全球潮流文化中掀起了一股正能量的旋風。
Thumbnail
戴姆勒克萊斯勒出產的後輪驅動雙門跑車 Chrysler Crossfire(火線),使用 33% 賓士 SLK 跑車零件,在 2003 年推出,於 2007 年因為公司重組後停產。雖然,1:1 的新車買不起,那買台 1:18 的模型車來玩玩總是可以的。😜
Thumbnail
透過美圖秀秀APP「AI 繪畫藝術」測試版,你會發現龍虎塔的塔,你會發現龍虎塔的塔型,變得更古色古香,有些還幻化成了日本建築風格,塔前的石橋被東方風格的街頭古燈所取代,潭前的荷花池全轉換成荷花池全轉換成了日式的庭園與石階,與西式的建築與路燈,上面還被白雪覆蓋著,連塔邊的樹種,天際的背景也有了轉換,東
Thumbnail
每年各種APP都會推出各種免費的年節電子賀卡,有的免費有的要付費,耶誕節、台灣元旦新年、農曆過年與西洋情人節陸續將至,如果你有寄發電子賀卡的習慣,今年不妨試試以下推薦的新玩意--- 免費的「美圖秀秀APP 「AI 繪畫藝術」多種畫風一鍵生成」!
Thumbnail
在餐桌上,時不時喜歡做些新鮮的嘗試,不管是食材的搭配或是烹調的方法,又或是餐桌(就是道具很多啦)的形式,菜色的嘗試往往都來自於看到臉友PO的美食照,或者是自己在外面用餐時看到的擺盤與菜餚,本以為這些嘗試的最大樂趣是複製成功,但後來發現真正有趣的是過程中的摸索。
Thumbnail
C_29 / 'Optimist' 的整體空間是由雅典知名的 314 architecture studio 所打造,創立者 Pavlo Hatjiaggelide 的背景是一名專業的土木工程師,擅長架構設計和室內設計,其設計作品就像是高純度的藝術品。
Thumbnail
相比起Celsius每週派息一次,NEXO的好處就是它會每天派息一次,只要在每天07:00-08:00 CET時區前存入資金便可以開始計算利息,如果過了這個時段才存入資金的話,便可能要等24小時以上才能獲得利息了XD。 b. 填寫你的 Email 和密碼 【個人網站】 【加密貨幣】 【被動收入】
Thumbnail
作家 Morgan Housel 在《華爾街日報》中提出一個觀點:我們是用理解知識的方式在思考、學習金錢觀,而不是用理解心智與行為模式的方式學習理財。這段話讓我意識到,我們的財務決策並非總是理性的,情緒因素也扮演著重要角色。通過掌握金錢心理學,能夠幫助我們改善用錢習慣,使財務決策更為理性和長遠。
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
暢銷懸疑小說的《法庭遊戲》改編為電影版,日前也在台灣上映,燒腦的情節加上法庭的諜對諜攻防;再加上永瀨廉、杉咲花、北村匠海三位高人氣演員加持。
Thumbnail
自2020年問世以來,日本潮流品牌Water The Plant便以其獨特的設計理念和色彩豐富的產品系列,在全球潮流文化中掀起了一股正能量的旋風。
Thumbnail
戴姆勒克萊斯勒出產的後輪驅動雙門跑車 Chrysler Crossfire(火線),使用 33% 賓士 SLK 跑車零件,在 2003 年推出,於 2007 年因為公司重組後停產。雖然,1:1 的新車買不起,那買台 1:18 的模型車來玩玩總是可以的。😜
Thumbnail
透過美圖秀秀APP「AI 繪畫藝術」測試版,你會發現龍虎塔的塔,你會發現龍虎塔的塔型,變得更古色古香,有些還幻化成了日本建築風格,塔前的石橋被東方風格的街頭古燈所取代,潭前的荷花池全轉換成荷花池全轉換成了日式的庭園與石階,與西式的建築與路燈,上面還被白雪覆蓋著,連塔邊的樹種,天際的背景也有了轉換,東
Thumbnail
每年各種APP都會推出各種免費的年節電子賀卡,有的免費有的要付費,耶誕節、台灣元旦新年、農曆過年與西洋情人節陸續將至,如果你有寄發電子賀卡的習慣,今年不妨試試以下推薦的新玩意--- 免費的「美圖秀秀APP 「AI 繪畫藝術」多種畫風一鍵生成」!
Thumbnail
在餐桌上,時不時喜歡做些新鮮的嘗試,不管是食材的搭配或是烹調的方法,又或是餐桌(就是道具很多啦)的形式,菜色的嘗試往往都來自於看到臉友PO的美食照,或者是自己在外面用餐時看到的擺盤與菜餚,本以為這些嘗試的最大樂趣是複製成功,但後來發現真正有趣的是過程中的摸索。
Thumbnail
C_29 / 'Optimist' 的整體空間是由雅典知名的 314 architecture studio 所打造,創立者 Pavlo Hatjiaggelide 的背景是一名專業的土木工程師,擅長架構設計和室內設計,其設計作品就像是高純度的藝術品。
Thumbnail
相比起Celsius每週派息一次,NEXO的好處就是它會每天派息一次,只要在每天07:00-08:00 CET時區前存入資金便可以開始計算利息,如果過了這個時段才存入資金的話,便可能要等24小時以上才能獲得利息了XD。 b. 填寫你的 Email 和密碼 【個人網站】 【加密貨幣】 【被動收入】