25K+ 次瀏覽
作業系統 (OS) 本質上是一組軟體,用於管理計算機硬體資源併為計算機程式提供通用服務。作業系統是計算機系統中系統軟體的關鍵組成部分。分時作業系統是作業系統的一種重要型別。分時允許許多位於不同終端的人同時使用一臺特定的計算機系統。多工或分時系統是對多道程式設計的邏輯擴充套件。處理器的時間在多個使用者之間同時共享,稱為分時。分時系統和多道批處理系統的主要區別在於…… 閱讀更多
14K+ 次瀏覽
作業系統 (OS) 本質上是一組軟體,用於管理計算機硬體資源併為計算機程式提供通用服務。作業系統是計算機系統中系統軟體的關鍵組成部分。批處理作業系統是作業系統的一種重要型別。使用批處理作業系統的使用者不會直接與計算機互動。每個使用者都在離線裝置(如穿孔卡片)上準備其作業,並將其提交給計算機操作員。為了加快處理速度,將具有相似需求的作業批次組合在一起並作為一個組執行。程式設計師退出…… 閱讀更多
11K+ 次瀏覽
Dekker演算法Dekker演算法是臨界區問題的第一個解決方案。該演算法有很多版本,第5版或最終版本滿足以下所有條件,並且是所有版本中最有效的。臨界區問題的解決方案必須確保以下三個條件:互斥、進展、有界等待第一版Dekker演算法成功實現了互斥。它使用變數來控制執行緒執行。它不斷檢查臨界區是否可用。示例main(){ int thread_no = 1; startThreads(); } Thread1(){ do { // 入口段 // 等待threadno為1 … 閱讀更多
483 次瀏覽
函數語言程式設計語言專門設計用於處理符號計算和列表處理應用程式。函數語言程式設計基於數學函式。一些流行的函數語言程式設計語言包括:Lisp、Python、Erlang、Haskell、Clojure等。函數語言程式設計語言分為兩類,即:純函式式語言——這些型別的函式式語言只支援函式式範例。例如——Haskell。不純函式式語言——這些型別的函式式語言支援函式式範例和指令式程式設計風格。例如——LISP。函數語言程式設計——特性函數語言程式設計的特性如下:函數語言程式設計語言的設計基於… 閱讀更多
605 次瀏覽
如果多個程序因條件x而掛起,並且某個程序執行了x.signal()操作,那麼我們可以透過一個簡單的解決方案來確定接下來應該恢復哪個掛起的程序,那就是使用先進先出(FCFS)排序,以便最先等待的程序首先恢復。然而,在許多情況下,這種簡單的排程方案是不夠的。為此,可以使用條件等待結構。此結構具有以下形式x.wait(c);這裡c是一個整數表示式,在執行wait()操作時進行計算。c的值…… 閱讀更多
17K+ 次瀏覽
Peterson解決方案為解決臨界區問題提供了一個良好的演算法描述,並說明了設計滿足互斥、進展和有界等待要求的軟體所涉及的一些複雜性。do { flag[i] = true; turn = j; while (flag[j] && turn == j); /*臨界區*/ flag[i] = false; /*剩餘部分*/ } while (true);Peterson解決方案中程序Pi的結構。此解決方案僅限於兩個程序,它們在臨界區和剩餘部分之間交替執行。這些程序編號為P0和P1。我們使用Pj…… 閱讀更多
在硬體同步中,我們將探索使用從基於硬體到基於軟體的API(可供應用程式程式設計師使用)的技術來解決臨界區問題的幾種其他解決方案。這些解決方案基於鎖定的前提;但是,此類鎖的設計可能非常複雜。這些硬體特性可以使任何程式設計任務更容易並提高系統效率。在這裡,我們介紹一些在許多系統上可用的簡單硬體指令,並展示如何有效地使用它們來解決臨界區問題。如果我們可以在修改共享變數時阻止中斷髮生。臨界區問題可以…… 閱讀更多
536 次瀏覽
Windows實現Windows API,它是Microsoft作業系統系列(Windows 98、NT、2000和XP,以及Windows 7)的主要API。基本上,Windows應用程式作為單獨的程序執行,每個程序可能包含一個或多個執行緒。此外,Windows使用一對一對映,其中每個使用者級執行緒都對映到一個關聯的核心執行緒。執行緒的一般元件包括:唯一標識執行緒的執行緒ID表示處理器狀態的暫存器集在使用者模式下執行執行緒時使用的使用者堆疊和核心…… 閱讀更多
3K+ 次瀏覽
許多系統實現多對多模型或兩級模型,在使用者執行緒和核心執行緒之間放置一箇中間資料結構。此資料結構(通常稱為輕量級程序或LWP)如下圖所示。LWP看起來像是應用程式可以在其上排程使用者執行緒執行的虛擬處理器,對使用者執行緒庫而言。每個輕量級程序都附加到一個核心執行緒,並且作業系統排程核心執行緒在物理處理器上執行。如果核心執行緒阻塞(例如,在等待I/O時),LWP也會阻塞…… 閱讀更多
2K+ 次瀏覽
使用者執行緒庫和核心之間通訊的一種技術稱為排程器啟用。它的工作原理如下:核心為應用程式提供一組虛擬處理器 (LWP),應用程式可以將使用者執行緒排程到可用的虛擬處理器上。此外,核心必須通知應用程式某些事件。此過程稱為上行呼叫。上行呼叫由執行緒庫使用上行呼叫處理程式進行處理,並且上行呼叫處理程式必須在虛擬處理器上執行。當應用程式執行緒即將阻塞時,會發生觸發上行呼叫的一個事件。在這種情況下…… 閱讀更多