Linux 中主要有哪幾種核心鎖

2021-10-22 09:30:59 字數 1153 閱讀 7302

linux 中主要有哪幾種核心鎖?

linux 的同步機制從 2.0 到 2.6 以來不斷發展完善。從最初的原子操作,到後來的訊號量,從大核心鎖到今天的自旋鎖。這些同步機制的發展伴隨 linux 從單處理器到對稱多處理器的過渡;

伴隨著從非搶占核心到搶占核心的過度。linux 的鎖機制越來越有效,也越來越複雜。linux 的核心鎖主要是自旋鎖和訊號量。

自旋鎖最多只能被乙個可執行執行緒持有,如果乙個執行執行緒試圖請求乙個已被爭用(已經被持有)的自旋鎖,那麼這個執行緒就會一直進行忙迴圈——旋轉——等待鎖重新可用。要是鎖未被爭用,請求它的執行執行緒便能立刻得到它並且繼續進行。自旋鎖可以在任何時刻防止多於乙個的執行執行緒同時進入臨界區。

linux 中的訊號量是一種睡眠鎖。如果有乙個任務試圖獲得乙個已被持有的訊號量時,訊號量會將其推入等待佇列,然後讓其睡眠。這時處理器獲得自由去執行其它**。當持有訊號量的程序將訊號量釋放後,在等待佇列中的乙個任務將被喚醒,從而便可以獲得這個訊號量。

訊號量的睡眠特性,使得訊號量適用於鎖會被長時間持有的情況;只能在程序上下文中使用,因為中斷上下文中是不能被排程的;另外當**持有訊號量時,不可以再持有自旋鎖。linux 核心中的同步機制:原子操作、訊號量、讀寫訊號量和自旋鎖的 api,另外一些同步機制,包括大核心鎖、讀寫鎖、大讀者鎖、rcu (read-copy update,顧名思義就是讀-拷貝修改),和順序鎖。

linux 中的使用者模式和核心模式是什麼含意?

ms-dos 等作業系統在單一的 cpu 模式下執行,但是一些類 unix 的作業系統則使用了雙模式,可以有效地實現時間共享。在 linux 機器上,cpu 要麼處於受信任的核心模式,要麼處於受限制的使用者模式。除了核心本身處於核心模式以外,所有的使用者程序都執行在使用者模式之中。

核心模式的**可以無限制地訪問所有處理器指令集以及全部記憶體和 i/o 空間。如果使用者模式的程序要享有此特權,它必須通過系統呼叫向裝置驅動程式或其他核心模式的**發出請求。另外,使用者模式的**允許發生缺頁,而核心模式的**則不允許。在 2.4 和更早的核心中,僅僅使用者模式的程序可以被上下文切換出局,由其他程序搶占。除非發生以下兩種情況,否則核心模式**可以一直獨佔 cpu:

(1) 它自願放棄 cpu;

(2) 發生中斷或異常。

2.6 核心引入了核心搶占,大多數核心模式的**也可以被搶占。

什麼是機器翻譯,主要有哪幾種型別?

人類對機器翻譯 machine translation,mt 系統的研究開發已經持續了 50多年。起初,機器翻譯譯系統主要是基於雙語字典進行直接翻譯,幾乎沒有句法結構分析。直到20世紀80年代,一 些機器翻譯系統採用了兩種方法 在這些方法中,源語言文字被分析轉換成抽象表達形式,隨後利用一些程式,通過...

大資料探勘分析的經典案例,主要有哪幾種?

大資料探勘分析經典案例有以下幾種 1.產品未來一段時間使用者是否會流失,流失情況怎麼樣 2.公司做了某個 活動,預估活動效果怎麼樣,使用者接受度如何 3.評估使用者信用度好壞 4.對現有客戶市場進行細分,到底哪些客戶才是目標客群 5.產品上線投放市場後,使用者轉化率如何,到底哪些運營策略最有效 6....

在UiPath中迭代乙個陣列主要有哪幾種方式

在uipath中總共有三種迭代陣列的方式,分別是 for each do while和while,那這三種迭代到底有什麼區別呢?下面我們來詳細解析下 1 for each 這個活動主要用於迴圈迭代乙個列表 陣列 或其他型別的集合,可以遍歷並分別處理每條資訊。2 do while 先執行迴圈體,再判斷...