0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

有方法能讓用戶空間的應(yīng)用程序可以調(diào)優(yōu)內(nèi)核中的并發(fā)控制嗎?

Linux閱碼場(chǎng) ? 來(lái)源:ArchiSelf ? 2023-06-13 09:14 ? 次閱讀

性能為王,系統(tǒng)的性能提升是每一個(gè)工程師的追求。目前,性能優(yōu)化主要集中在消除系統(tǒng)軟件堆棧中的低效率上或繞過(guò)高開(kāi)銷的系統(tǒng)操作。例如,內(nèi)核旁路通過(guò)在用戶空間中移動(dòng)多個(gè)操作來(lái)實(shí)現(xiàn)這個(gè)目標(biāo),還有就是為某些類別的應(yīng)用程序重構(gòu)底層操作系統(tǒng).

在許多領(lǐng)域中,專有化似乎是追求更好性能的答案,集中在應(yīng)用程序和內(nèi)核,甚至是在不同的內(nèi)核子系統(tǒng)之間。特別地,專有化可以構(gòu)建應(yīng)用程序向系統(tǒng)請(qǐng)求某些功能的上下文。雖然,應(yīng)用程序?qū)S谢蛢?nèi)核繞過(guò)了存儲(chǔ)、網(wǎng)絡(luò)化和加速器,但是,內(nèi)核中的并發(fā)控制可能是整體性能的關(guān)鍵。

1. 操作系統(tǒng)的性能:內(nèi)核鎖

內(nèi)核鎖是一種用于控制進(jìn)程訪問(wèn)共享資源的機(jī)制。在Linux內(nèi)核中,內(nèi)核鎖是通過(guò)在進(jìn)程創(chuàng)建時(shí)分配一個(gè)特殊的鎖來(lái)實(shí)現(xiàn)的。當(dāng)一個(gè)進(jìn)程需要訪問(wèn)共享資源時(shí),內(nèi)核會(huì)檢查該進(jìn)程是否已經(jīng)持有該鎖,如果沒(méi)有,則將該進(jìn)程加入到等待鎖定的隊(duì)列中,等待其他進(jìn)程釋放該鎖。

內(nèi)核鎖對(duì)于實(shí)現(xiàn)應(yīng)用程序的良好性能和可伸縮性至關(guān)重要.然而,內(nèi)核同步原語(yǔ)通常是不可見(jiàn)的,并且是應(yīng)用程序開(kāi)發(fā)人員無(wú)法觸及的。設(shè)計(jì)鎖定算法并驗(yàn)證它們的正確性已經(jīng)具有挑戰(zhàn)性,而增加硬件的異構(gòu)性使其更加具有挑戰(zhàn)性。開(kāi)發(fā)人員缺乏對(duì)鎖正在操作的環(huán)境的認(rèn)識(shí),如優(yōu)先級(jí)倒置和鎖持有人優(yōu)先等問(wèn)題,本質(zhì)上是缺乏上下文。

能否有一種方法能讓用戶空間的應(yīng)用程序可以調(diào)優(yōu)內(nèi)核中的并發(fā)控制呢?

例如,用戶可以對(duì)持有一組鎖的特定任務(wù)或系統(tǒng)調(diào)用進(jìn)行優(yōu)先級(jí)排序。用戶可以強(qiáng)制執(zhí)行特定于硬件的策略,例如非對(duì)稱多處理感知鎖定,并且可以根據(jù)給定的工作負(fù)載決定對(duì)讀寫的優(yōu)先級(jí)。如果允許開(kāi)發(fā)人員調(diào)優(yōu)內(nèi)核中的各種鎖,更改它們的參數(shù)和行為,甚至在不同的鎖實(shí)現(xiàn)之間進(jìn)行更改,或許可以進(jìn)一步提升系統(tǒng)的性能。

軟件堆棧專有化是提高應(yīng)用程序性能的新方式,提出為了性能目的將代碼推送到內(nèi)核,通過(guò)避免增加內(nèi)核數(shù)量瓶頸來(lái)提高應(yīng)用程序的可伸縮性。隨著時(shí)間的推移,即使是像Linux這樣的宏內(nèi)核,也已經(jīng)開(kāi)始允許用戶空間的應(yīng)用程序自定義內(nèi)核行為。開(kāi)發(fā)人員可以使用eBPF為跟蹤、安全甚至性能目的定制內(nèi)核。

除了eBPF,Linux的開(kāi)發(fā)人員也在使用io_uring,一個(gè)在用戶空間和內(nèi)核之間的共享內(nèi)存環(huán)緩沖區(qū),以加快異步IO操作。此外,如今的應(yīng)用程序可以完全在用戶空間中處理按需分頁(yè)。

應(yīng)用程序來(lái)控制底層內(nèi)核的并發(fā)機(jī)制,這為鎖的設(shè)計(jì)者和應(yīng)用程序開(kāi)發(fā)人員提供了各種機(jī)會(huì)。

2. 鎖:過(guò)去、現(xiàn)在和未來(lái)

硬件是決定鎖的可伸縮性的主要因素,從而影響應(yīng)用程序的可伸縮性。例如,對(duì)于基于隊(duì)列的鎖,當(dāng)多個(gè)線程同時(shí)獲得鎖時(shí),可以減少過(guò)多流量。同時(shí),分層鎖使用批處理來(lái)使高速緩存線抖動(dòng)的問(wèn)題最小化。

SHFLLock提出了一種通過(guò)解耦鎖策略與實(shí)現(xiàn)來(lái)設(shè)計(jì)鎖算法的新思想,實(shí)現(xiàn)較少的內(nèi)核內(nèi)存開(kāi)銷和性能下降。主要引入了一個(gè)shuffler程序的概念,它重新排序隊(duì)列或修改等待線程的狀態(tài)。盡管ShflLocks提供了一種強(qiáng)制執(zhí)行策略的方法,但還可以試圖將重點(diǎn)放在一組簡(jiǎn)單的鎖獲取/發(fā)布API上的通用策略上。為了迎合應(yīng)用的需求,通過(guò)分析影響給定工作負(fù)載的特定內(nèi)核鎖,應(yīng)用程序的開(kāi)發(fā)人員應(yīng)該以受控和安全的方式定義他們的策略,并動(dòng)態(tài)地更新鎖獲取策略,使用shuffler執(zhí)行政策。

3 典型場(chǎng)景:調(diào)度等待鎖的線程

等待鎖的線程可以以兩種不同的方式進(jìn)行調(diào)度:基于鎖的獲取順序的獲取感知調(diào)度,以及基于線程在關(guān)鍵段內(nèi)花費(fèi)的時(shí)間的占用感知調(diào)度。

3.1采集感知的調(diào)度

鎖開(kāi)關(guān),使開(kāi)發(fā)人員能夠在各種鎖的算法之間進(jìn)行切換。有三種突出的情況:

從中性的讀寫器鎖設(shè)計(jì)切換到每個(gè)cpu或基于numa的閱讀器設(shè)計(jì),以滿足讀密集型工作負(fù)載.例如,頁(yè)面錯(cuò)誤和枚舉一個(gè)目錄中的文件.另一種情況是從中立的讀寫鎖切換到純粹的寫鎖;一個(gè)例子是在一個(gè)目錄中創(chuàng)建多個(gè)文件。

從基于Numa的鎖設(shè)計(jì)切換到具有Numa感知的組合方法,其中鎖持有人代表等待線程執(zhí)行操作.這種方法具有更好的性能,因?yàn)樗辽賱h除了一個(gè)高速緩存的傳輸。

之間的開(kāi)關(guān)阻塞和非阻塞鎖,反之亦然,例如,通過(guò)關(guān)閉SHFLLock的shuffler功能的停止/喚醒策略,將阻塞讀切換為非阻塞讀寫鎖(rwlock)。

這種方法帶來(lái)了兩個(gè)好處:首先,開(kāi)發(fā)人員可以刪除臨時(shí)同步,例如使用非阻塞鎖和使用等待事件實(shí)現(xiàn)停止/喚醒策略,這在Btrfs文件系統(tǒng)中是常用的。第二,允許開(kāi)發(fā)人員通過(guò)動(dòng)態(tài)地多路復(fù)用多個(gè)策略來(lái)統(tǒng)一鎖的設(shè)計(jì)。

3.1.1 鎖繼承

一個(gè)進(jìn)程可能會(huì)獲取多個(gè)鎖來(lái)執(zhí)行一個(gè)操作。例如,Linux中的一個(gè)進(jìn)程最多可以獲得12個(gè)鎖(例如,重命名操作),或者平均獲得4個(gè)鎖來(lái)執(zhí)行內(nèi)存或文件元數(shù)據(jù)管理操作。

不幸的是,這種鎖的模式引發(fā)了基于隊(duì)列的鎖問(wèn)題,一些線程必須等待更長(zhǎng)的時(shí)間才能獲得頂級(jí)鎖,這是由另一個(gè)線程等待另一個(gè)鎖。例如,假設(shè)線程t1想要獲得兩個(gè)鎖,L1,然后L2作為一個(gè)操作,而t2只想收回L1的操作。由于這些鎖定協(xié)議是基于fifo的,所以t1可能在隊(duì)列的最后獲得L2,而t2正在等待獲得L1。開(kāi)發(fā)人員可以為內(nèi)核提供更多的上下文:要么是t1獲取所有鎖在一起,或t1聲明它已經(jīng)持有的鎖,可以給它一個(gè)更高的優(yōu)先級(jí)來(lái)獲得下一個(gè)鎖L2。

應(yīng)用程序可能希望優(yōu)先考慮系統(tǒng)調(diào)用路徑或一組任務(wù),以獲得更好的性能。開(kāi)發(fā)人員可以通過(guò)對(duì)任務(wù)優(yōu)先級(jí)上下文進(jìn)行編碼,并將此信息傳遞給受影響的鎖。對(duì)于系統(tǒng)調(diào)用,開(kāi)發(fā)人員可以共享關(guān)于一組鎖和關(guān)鍵路徑上的優(yōu)先級(jí)線程的信息。然后,shuffler程序?qū)?yōu)先考慮這些線程,而不是等待指定應(yīng)用程序的鎖的其他線程。

3.1.2 公開(kāi)調(diào)度程序的語(yǔ)義

通常,超額訂閱硬件資源,如CPU或內(nèi)存,可以得到更好的資源利用率,對(duì)于兩個(gè)用戶空間運(yùn)行時(shí)系統(tǒng),以及虛擬機(jī)。雖然超額訂閱提高了硬件利用率,但它也引入了雙重調(diào)度問(wèn)題。系統(tǒng)監(jiān)控程序可以安排一個(gè)vCPU作為鎖持有人或VM中的下一個(gè)鎖服務(wù)。管理程序可以將vCPU調(diào)度信息公開(kāi)給shuffler程序,以根據(jù)服務(wù)的運(yùn)行時(shí)間配額對(duì)其進(jìn)行優(yōu)先排序。

3.1.3 可適應(yīng)的停止/喚醒策略

所有的封閉鎖都遵循旋轉(zhuǎn)后停車的策略,即它們?cè)谛D(zhuǎn)一段時(shí)間后自己停車。這個(gè)旋轉(zhuǎn)時(shí)間主要是特別的,也就是說(shuō),服務(wù)員要么根據(jù)時(shí)間配額旋轉(zhuǎn)一定時(shí)間,要么在沒(méi)有任務(wù)要執(zhí)行的情況下繼續(xù)旋轉(zhuǎn)?,F(xiàn)在,應(yīng)用程序開(kāi)發(fā)人員可以在分析關(guān)鍵部分的長(zhǎng)度后公開(kāi)時(shí)間上下文,以最小化能源消耗和喚醒信息,以按時(shí)安排下一個(gè)服務(wù)員,以最小化喚醒延遲。此外,開(kāi)發(fā)人員可以進(jìn)一步對(duì)睡眠信息進(jìn)行編碼,在鎖定之前喚醒服務(wù)員,以減少長(zhǎng)時(shí)間的喚醒延遲。該方法也適用于副虛擬化的自旋鎖以避免護(hù)航效應(yīng).

3.2 占用調(diào)度

3.2.1 優(yōu)先級(jí)繼承

當(dāng)持有鎖的低優(yōu)先級(jí)任務(wù)被正常優(yōu)先級(jí)任務(wù)調(diào)度出去,等待同一鎖時(shí),就會(huì)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)。在Linux IO堆棧中說(shuō)明了這個(gè)問(wèn)題:當(dāng)調(diào)度IO請(qǐng)求時(shí),一個(gè)想要獲得一個(gè)鎖的正常任務(wù)可以調(diào)度一個(gè)持有相同鎖的較低優(yōu)先級(jí)的后臺(tái)任務(wù)。鎖的調(diào)度即后臺(tái)任務(wù),導(dǎo)致IO性能下降。

3.2.2 任務(wù)公平的合作調(diào)度

這引入了一類新的問(wèn)題,稱為調(diào)度器顛覆問(wèn)題,其中兩個(gè)任務(wù)在不同的時(shí)間內(nèi)獲得鎖。保持時(shí)間較長(zhǎng)的任務(wù)顛覆了操作系統(tǒng)的調(diào)度目標(biāo)。操作系統(tǒng)通過(guò)跟蹤關(guān)鍵區(qū)域大小和懲罰長(zhǎng)時(shí)間的任務(wù)來(lái)解決這個(gè)問(wèn)題。盡管這個(gè)解決方案解決了這個(gè)問(wèn)題,但即使對(duì)于可能不會(huì)從中受益的應(yīng)用程序,它也加強(qiáng)了調(diào)度的公平性。

3.2.3 在非對(duì)稱多核處理器(AMP)機(jī)器上的任務(wù)公平鎖定

在一個(gè)處理器中具有不同的計(jì)算能力核心,這種體系結(jié)構(gòu)上使用的基本鎖原語(yǔ)存在一種調(diào)度程序顛覆問(wèn)題,應(yīng)用程序吞吐量可能由于較弱內(nèi)核的計(jì)算能力較慢而崩潰。為了實(shí)現(xiàn)更快的進(jìn)程,開(kāi)發(fā)人員可以在更快的核心上分配關(guān)鍵鎖,也可以重新排序等待獲得鎖的線程隊(duì)列,以改進(jìn)整個(gè)鎖。

3.2.4 實(shí)時(shí)調(diào)度

與實(shí)時(shí)系統(tǒng)中的調(diào)度類似,應(yīng)用程序開(kāi)發(fā)人員可以創(chuàng)建鎖策略,總是調(diào)度線程以保證SLO。在這里,鎖可以設(shè)計(jì)為一個(gè)基于階段公平的算法.這種方法還允許消除抖動(dòng),并保證延遲關(guān)鍵應(yīng)用程序的尾部延遲的上限。

3.3 動(dòng)態(tài)鎖的分析

應(yīng)用程序開(kāi)發(fā)人員可以配置文件有關(guān)任何內(nèi)核鎖的信息。選擇要配置的鎖使開(kāi)發(fā)人員能夠在不同的粒度級(jí)別上配置。例如,它們可以配置在內(nèi)核中運(yùn)行的所有自旋鎖、特定函數(shù)中的鎖、代碼路徑或名稱空間,甚至是單個(gè)鎖實(shí)例。這種方法使應(yīng)用程序開(kāi)發(fā)人員受益,能夠通過(guò)只分析感興趣的部分來(lái)更好地理解底層同步。

開(kāi)發(fā)者也可以對(duì)性能合約進(jìn)行推理,基于各種shuffler策略甚至是一組策略提供的某些擔(dān)保,這些性能合約會(huì)影響應(yīng)用程序的性能。

4.一種內(nèi)核鎖的優(yōu)化框架

重新定義內(nèi)核鎖所使用的決策和行為,并公開(kāi)為API,用戶定義的代碼替換這些公開(kāi)的API,用戶可以根據(jù)自己的需要定制鎖定功能。例如,在加入等待隊(duì)列之前是否要旋轉(zhuǎn)可以是一個(gè)API,這樣用戶就可以做出決定。用戶首先編寫自己的代碼來(lái)根據(jù)用例修改內(nèi)核中的鎖協(xié)議,然后操作系統(tǒng)替換內(nèi)核內(nèi)部帶注釋的鎖函數(shù),流程示意如下:

6609f8de-097e-11ee-962d-dac502259ad0.jpg

用戶指定了一個(gè)鎖策略(1),eBPF驗(yàn)證者在編譯后驗(yàn)證它,同時(shí)考慮到eBPF限制和互斥安全屬性(2,3)。然后,驗(yàn)證者將通知用戶驗(yàn)證結(jié)果(4),如果成功,則將編譯后的eBPF代碼存儲(chǔ)在文件系統(tǒng)(5)中。最后,使用現(xiàn)場(chǎng)補(bǔ)丁模塊替換指定鎖(6)的注釋函數(shù)。

4.1 API

各種API支持了鎖策略的靈活實(shí)現(xiàn),同時(shí)保障了安全,操作系統(tǒng)底層實(shí)現(xiàn)依賴于eBPF來(lái)修改內(nèi)核鎖。通過(guò)使用eBPF和鎖API,為內(nèi)核中的一組鎖實(shí)例實(shí)現(xiàn)了所需的策略。一個(gè)用戶可以編碼多個(gè)策略,它被轉(zhuǎn)換為原生代碼,并由eBPF驗(yàn)證者進(jìn)行安全檢查。驗(yàn)證器在將本機(jī)代碼加載到內(nèi)核中之前執(zhí)行符號(hào)執(zhí)行,例如內(nèi)存訪問(wèn)控制或只允許白名單的輔助函數(shù)。

662b2d38-097e-11ee-962d-dac502259ad0.jpg

4.2 安全性

除了eBPF驗(yàn)證器,ShflLocks有單獨(dú)的鎖獲取階段和一個(gè)重新排序等待隊(duì)列的階段。用戶依賴API函數(shù)來(lái)比較當(dāng)前節(jié)點(diǎn)和洗牌器節(jié)點(diǎn)與是否對(duì)當(dāng)前節(jié)點(diǎn)進(jìn)行重新排序,也可以設(shè)計(jì)調(diào)度器協(xié)同鎖,通過(guò)對(duì)臨界切片長(zhǎng)度較小的節(jié)點(diǎn)進(jìn)行優(yōu)先級(jí)排序,從而降低對(duì)節(jié)點(diǎn)的優(yōu)先級(jí)。

雖然不正確的用戶實(shí)現(xiàn)可能會(huì)破壞公平性保證的策略,但是可以在運(yùn)行時(shí)檢查并確保互斥屬性。此外,內(nèi)核沒(méi)有任何死鎖問(wèn)題,API不修改鎖行為,只返回移動(dòng)節(jié)點(diǎn)的決定。開(kāi)發(fā)人員能夠通過(guò)實(shí)現(xiàn)每個(gè)調(diào)用所需的行為,以細(xì)粒度的方式配置他們的鎖。雖然不會(huì)改變鎖函數(shù)的行為,但重量配置分析策略可能會(huì)增加關(guān)鍵部分的長(zhǎng)度,從而導(dǎo)致性能下降。

此外,eBPF公開(kāi)了鏈接多個(gè)eBPF程序的功能,用戶可以使用這些程序來(lái)編寫策略。最后,我們還依賴于現(xiàn)場(chǎng)調(diào)度的數(shù)據(jù)結(jié)構(gòu),用于修改鎖定原語(yǔ)所使用的數(shù)據(jù)結(jié)構(gòu)。例如,可以擴(kuò)展基于隊(duì)列的鎖節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu),并將額外的信息用于為特定的用例編碼信息。在不執(zhí)行用戶空間代碼的最壞情況下,動(dòng)態(tài)修改鎖算法可能會(huì)產(chǎn)生高達(dá)20%的開(kāi)銷。

4.3 組合策略

通過(guò)調(diào)優(yōu)內(nèi)核并發(fā)控制,應(yīng)用程序可以對(duì)軟件堆棧有更多的控制。應(yīng)用程序開(kāi)發(fā)人員提供了一組需要應(yīng)用鎖的策略。組合多個(gè)策略是一項(xiàng)困難的任務(wù),特別是當(dāng)某些策略可能發(fā)生沖突的時(shí)候。通過(guò)利用程序合成來(lái)自動(dòng)化這個(gè)過(guò)程,或許可以將安全屬性完全移動(dòng)到用戶空間中的驗(yàn)證,也可以提供一種安全的方式來(lái)組成相互沖突的策略。

用戶不能添加太多的策略,因?yàn)樗鼈兊膱?zhí)行可能會(huì)落在關(guān)鍵路徑上。允許一個(gè)特權(quán)用戶修改內(nèi)核鎖,該模型僅適用于使用整個(gè)系統(tǒng)的一個(gè)用戶。然而,為了處理云環(huán)境中的多租戶,需要一個(gè)感知租戶的策略編寫器,它不違反用戶之間的隔離。在用戶空間中綜合策略以避免此類沖突,并在鎖算法中添加運(yùn)行時(shí)檢查,這些檢查只在策略可以影響特定行為時(shí)使用。

除了鎖之外,還有其他在內(nèi)核中大量使用的同步機(jī)制,如RCU, seqlocks ,等待事件等擴(kuò)展,將進(jìn)一步允許應(yīng)用程序提高其性能。也就是說(shuō),用戶空間應(yīng)用程序還有它們自己的、本質(zhì)上是通用的鎖。相比之下,現(xiàn)有的技術(shù),如庫(kù)插入,只允許在應(yīng)用程序開(kāi)始執(zhí)行時(shí)對(duì)不同的鎖實(shí)現(xiàn)進(jìn)行一次更改。

5.小結(jié)

內(nèi)核鎖的同步原語(yǔ)對(duì)一些應(yīng)用程序的性能和可伸縮性有巨大的影響,然而,控制內(nèi)核同步原語(yǔ)對(duì)于應(yīng)用程序開(kāi)發(fā)人員來(lái)說(shuō)是無(wú)法實(shí)現(xiàn)的。如果使用上下文并發(fā)控制,它允許用戶空間應(yīng)用程序微調(diào)內(nèi)核并發(fā)原語(yǔ)。這是一種思考軟件堆棧專有化的方法,在一定程度上加速了內(nèi)核同步領(lǐng)域的創(chuàng)新。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 加速器
    +關(guān)注

    關(guān)注

    2

    文章

    785

    瀏覽量

    37151
  • 讀寫器
    +關(guān)注

    關(guān)注

    3

    文章

    639

    瀏覽量

    38724
  • FIFO存儲(chǔ)
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    5946
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    315

    瀏覽量

    21557
  • rcu
    rcu
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    5408

原文標(biāo)題:操作系統(tǒng)性能提升之內(nèi)核鎖優(yōu)化

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux內(nèi)核模塊與應(yīng)用程序的對(duì)比

    和系統(tǒng)調(diào)用的區(qū)別: 庫(kù)函數(shù)是高層的,完全運(yùn)行在用戶空間,為程序員提供調(diào)用更方便的接口,而真正在幕后完成實(shí)際事務(wù)的是系統(tǒng)調(diào)用。系統(tǒng)調(diào)用在內(nèi)核態(tài)運(yùn)行并且由
    發(fā)表于 07-03 03:15

    用戶空間內(nèi)核通信方式是什么

    用戶空間內(nèi)核通信方式有哪些?系統(tǒng)調(diào)用,提供特定的用戶空間內(nèi)核
    發(fā)表于 12-20 08:06

    用戶空間如何訪問(wèn)內(nèi)核空間?

    學(xué)習(xí)嵌入式系統(tǒng)就是學(xué)習(xí)用戶編程API通過(guò)內(nèi)核提供的服務(wù)實(shí)現(xiàn)相應(yīng)的功能C語(yǔ)言程序設(shè)計(jì):無(wú)os 語(yǔ)法?。?、Linux系統(tǒng)構(gòu)成劃分:用戶空間
    發(fā)表于 12-27 06:15

    嵌入式VTL應(yīng)用程序內(nèi)核通訊的設(shè)計(jì)

    在嵌入式虛擬磁帶庫(kù)(VTL)的設(shè)計(jì),應(yīng)用程序內(nèi)核之間的通訊是一個(gè)核心問(wèn)題。本文提出了基于共享磁盤和共享內(nèi)存的應(yīng)用程序內(nèi)核之間的通訊方案
    發(fā)表于 05-25 15:24 ?14次下載

    操作系統(tǒng)內(nèi)核中高效保護(hù)應(yīng)用程序方法

    AppFort.針對(duì)現(xiàn)有方法的高開(kāi)銷問(wèn)題,AppFort結(jié)合x86硬件機(jī)制(操作數(shù)地址長(zhǎng)度)、內(nèi)核代碼完整性保護(hù)和內(nèi)核控制流完整性保護(hù),對(duì)不可信內(nèi)核
    發(fā)表于 01-15 16:45 ?0次下載
    操作系統(tǒng)<b class='flag-5'>內(nèi)核</b>中高效保護(hù)<b class='flag-5'>應(yīng)用程序</b>的<b class='flag-5'>方法</b>

    高端內(nèi)存的詳解:linux用戶空間內(nèi)核空間

    Linux 操作系統(tǒng)和驅(qū)動(dòng)程序運(yùn)行在內(nèi)核空間應(yīng)用程序運(yùn)行在用戶空間,兩者不能簡(jiǎn)單地使用指針傳遞
    發(fā)表于 04-28 17:33 ?914次閱讀
    高端內(nèi)存的詳解:linux<b class='flag-5'>用戶</b><b class='flag-5'>空間</b>與<b class='flag-5'>內(nèi)核</b><b class='flag-5'>空間</b>

    需要了解linux內(nèi)核空間用戶空間的基本原理

    linux驅(qū)動(dòng)程序一般工作在內(nèi)核空間,但也可以工作在用戶空間。下面我們將詳細(xì)解析,什么是
    發(fā)表于 05-06 16:13 ?682次閱讀

    如何通過(guò)多線程并發(fā)設(shè)計(jì)來(lái)提高應(yīng)用程序的性能

    這里我們簡(jiǎn)單總結(jié)了一下,在現(xiàn)代多處理器或多內(nèi)核環(huán)境下,如何通過(guò)多線程并發(fā)設(shè)計(jì)來(lái)提高我們應(yīng)用程序的性能和響應(yīng)性。
    的頭像 發(fā)表于 09-28 02:13 ?5192次閱讀

    Linux用戶空間內(nèi)核空間

    應(yīng)用程序運(yùn)行在用戶空間,而Linux 驅(qū)動(dòng)屬于內(nèi)核的一部分,因此驅(qū)動(dòng)運(yùn)行于內(nèi)核空間。當(dāng)我們?cè)?/div>
    發(fā)表于 05-20 10:58 ?986次閱讀
    Linux<b class='flag-5'>用戶</b><b class='flag-5'>空間</b>與<b class='flag-5'>內(nèi)核</b><b class='flag-5'>空間</b>

    Linux系統(tǒng)為什么需要區(qū)分內(nèi)核空間用戶空間?

    ,或叫線性地址空間)為 4G(2的32次方)。也就是說(shuō)一個(gè)進(jìn)程的最大地址空間為 4G。 操作系統(tǒng)的核心是內(nèi)核(kernel),它獨(dú)立于普通的應(yīng)用程序,
    的頭像 發(fā)表于 10-14 14:38 ?3521次閱讀
    Linux系統(tǒng)為什么需要區(qū)分<b class='flag-5'>內(nèi)核</b><b class='flag-5'>空間</b>與<b class='flag-5'>用戶</b><b class='flag-5'>空間</b>?

    以32位系統(tǒng)為例介紹內(nèi)核空間用戶空間

    4G(2的32次方)。也就是說(shuō)一個(gè)進(jìn)程的最大地址空間為 4G。 操作系統(tǒng)的核心是內(nèi)核(kernel),它獨(dú)立于普通的應(yīng)用程序,可以訪問(wèn)受保護(hù)的內(nèi)存
    的頭像 發(fā)表于 11-12 17:41 ?2928次閱讀
    以32位系統(tǒng)為例介紹<b class='flag-5'>內(nèi)核</b><b class='flag-5'>空間</b>和<b class='flag-5'>用戶</b><b class='flag-5'>空間</b>

    javajvm調(diào)優(yōu)有幾種方法

    JVM調(diào)優(yōu)是Java應(yīng)用程序性能優(yōu)化過(guò)程的重要步驟,它通過(guò)針對(duì)JVM進(jìn)行優(yōu)化來(lái)提高應(yīng)用程序的性能和可靠性。JVM
    的頭像 發(fā)表于 12-05 11:11 ?1843次閱讀

    什么場(chǎng)景需要jvm調(diào)優(yōu)

    JVM調(diào)優(yōu)是指對(duì)Java虛擬機(jī)進(jìn)行性能優(yōu)化和資源管理,以提高應(yīng)用程序的運(yùn)行效率和吞吐量。JVM調(diào)優(yōu)的場(chǎng)景有很多,下面將詳細(xì)介紹各種不同的場(chǎng)景
    的頭像 發(fā)表于 12-05 11:14 ?1074次閱讀

    jvm調(diào)優(yōu)參數(shù)

    JVM(Java虛擬機(jī))是Java程序的運(yùn)行環(huán)境,它負(fù)責(zé)解釋Java字節(jié)碼并執(zhí)行相應(yīng)的指令。為了提高應(yīng)用程序的性能和穩(wěn)定性,我們可以調(diào)優(yōu)JV
    的頭像 發(fā)表于 12-05 11:29 ?519次閱讀

    jvm調(diào)優(yōu)工具有哪些

    JVM調(diào)優(yōu)是提高Java應(yīng)用程序性能的重要手段,而JVM調(diào)優(yōu)工具則是輔助開(kāi)發(fā)人員進(jìn)行調(diào)
    的頭像 發(fā)表于 12-05 11:44 ?913次閱讀