2K+ 次瀏覽
上下文切換涉及儲存程序或執行緒的上下文或狀態,以便在需要時可以重新載入它,並且可以從與之前相同的點恢復執行。這是多工作業系統的功能,允許單個 CPU 由多個程序共享。核心在核心級執行緒之間進行上下文切換時採取的操作是:核心執行緒之間的上下文切換通常需要儲存要切換出的執行緒的 CPU 暫存器的值,並恢復要排程的新的執行緒的 CPU 暫存器。
8K+ 次瀏覽
核心在程序之間進行上下文切換時採取的操作包括:作業系統必須儲存當前正在執行程序的 PC 和使用者堆疊指標,以響應時鐘中斷並將控制權轉移到核心時鐘中斷處理程式。時鐘中斷處理程式將儲存其餘暫存器以及其他機器狀態(例如浮點暫存器的狀態)到程序 PCB 中。作業系統呼叫排程程式來確定下一個要執行的程序。然後,作業系統從其 PCB 中檢索下一個程序的狀態並恢復暫存器…… 閱讀更多
高階本地過程呼叫 (ALPC) 是一種訊息傳遞機制。伺服器程序釋出全域性可見的連線埠物件。當客戶端需要子系統或服務的服務時,它會開啟伺服器連線埠物件的控制代碼並向埠傳送連線請求。伺服器建立通道並返回一個控制代碼給客戶端。該通道由一對專用通訊埠組成:一個用於客戶端到伺服器的訊息,另一個用於伺服器到客戶端的訊息。通訊通道支援回撥機制,因此客戶端和伺服器可以在通常預期的情況下接受請求…… 閱讀更多
遠端過程呼叫 (RPC) 是一種客戶端-伺服器機制,它使一臺機器上的應用程式能夠對另一臺機器上的程式碼進行過程呼叫。客戶端呼叫本地過程(一個存根例程),該例程將引數打包到訊息中並將其傳送到網路上的特定伺服器程序。然後,客戶端存根例程阻塞。同時,伺服器解包訊息,呼叫過程,將返回結果打包到訊息中,並將其傳送回客戶端存根。客戶端存根取消阻塞,接收訊息,解包 RPC 的結果,並將它們返回給呼叫者。這…… 閱讀更多
1K+ 次瀏覽
上下文切換涉及儲存方法或執行緒的上下文或狀態,以便在需要時可以重新載入它,並且可以從與之前相同的點恢復執行。這可能是多工軟體系統的一個特性,並允許單個計算機硬體由多個程序共享。當發生中斷時,硬體會自動切換一部分上下文。處理程式可能會儲存更多上下文,具體取決於實際硬體和軟體設計的細節。通常,只修改上下文的最小部分以減少數量…… 閱讀更多
242 次瀏覽
定義Microsoft 介面定義語言 (MIDL) 定義客戶端和伺服器程式之間的介面。Platform Software Development Kit (SDK) 中包含的 MIDL 編譯器使開發人員能夠建立遠端過程呼叫 (RPC) 介面和 COM/DCOM 介面所需的介面定義語言 (IDL) 檔案和應用程式配置檔案 (ACF)。MIDL 還支援為 OLE 自動化生成型別庫。應用程式MIDL 可用於基於 Windows 作業系統的所有客戶端/伺服器應用程式。MIDL 還可用於為包含 Unix 和 Apple 等作業系統的異構網路環境建立客戶端和伺服器程式…… 閱讀更多
16K+ 次瀏覽
並非所有計算機都以相同的順序儲存構成多位元組值的位元組。考慮一個由 2 個位元組組成的 16 位整數。儲存此值的兩種方法:小端序 - 在此方案中,低位位元組儲存在起始地址 (A) 上,高位位元組儲存在下一個地址 (A + 1) 上。大端序 - 在此方案中,高位位元組儲存在起始地址 (A) 上,低位位元組儲存在下一個地址 (A + 1) 上。為了允許具有不同位元組順序約定機器相互通訊,Internet 協議…… 閱讀更多
4K+ 次瀏覽
載入到記憶體中並正在執行的程式稱為程序。簡單來說,程序是正在執行的程式。當建立程式時,它只是一些儲存在硬碟上的作為被動實體的位元組。然後,程式開始載入到記憶體中併成為一個活動實體,當在 Windows 中雙擊程式或在命令列中輸入可執行檔案的名稱時。(即 a.out 或 prog.exe)讓我們看看每個記憶體段以及程序在記憶體中是什麼樣的:圖:記憶體中的程序文字一個程序不僅僅是…… 閱讀更多
6K+ 次瀏覽
在使用互斥鎖的多執行緒 Pthread 程式中可能會發生死鎖。讓我們看看它是如何發生的。未鎖定的互斥鎖由 pthread_mutex_init() 函式初始化。使用 pthread_mutex_lock() 和 pthread_mutex_unlock() 獲取和釋放互斥鎖。如果執行緒嘗試獲取鎖定的互斥鎖,則對 pthread_mutex_lock() 的呼叫會阻塞執行緒,直到互斥鎖的所有者呼叫 pthread_mutex_unlock()。讓我們舉個例子,在下面的程式碼中建立了兩個互斥鎖:/* 建立並初始化互斥鎖 */ pthread_mutex_t mutex1; pthread_mutex_t mutex2; pthread_mutex_init(&mutex1, NULL); pthread_mutex_init(&mutex2, NULL);接下來,兩個執行緒…… 閱讀更多
719 次瀏覽
事務記憶體起源於資料庫理論,提供了一種替代的程序同步策略。記憶體事務是一個原子序列的記憶體讀寫操作。如果事務中的所有操作都已完成,則提交記憶體事務。否則,必須中止並回滾操作。可以透過新增到程式語言的特性來獲得事務記憶體的易用性。考慮一個例子。假設我們有一個修改共享資料的函式 update()。傳統上,此函式將使用互斥鎖(或訊號量)編寫,如下所示:void update (){ acquire(); /* 修改共享資料 */ …… 閱讀更多