新聞中心
請列舉幾種進(jìn)程的同步機(jī)制,并比較其優(yōu)缺點(diǎn)?
一個信號量只能置一次初值,以后只能對之進(jìn)行p操作或v操作。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了延川免費(fèi)建站歡迎大家使用!
由此也可以看到,信號量機(jī)制必須有公共內(nèi)存,不能用于分布式操作系統(tǒng),這是它最大的弱點(diǎn)。信號量機(jī)制功能強(qiáng)大,但使用時對信號量的操作分散, 而且難以控制,讀寫和維護(hù)都很困難。加重了程序員的編碼負(fù)擔(dān);核心操作P-V分散在各用戶程序的代碼中,不易控制和管理;一旦錯誤,后果嚴(yán)重,且不易發(fā)現(xiàn)和糾正。(b)自旋鎖: 旋鎖是為了保護(hù)共享資源提出的一種鎖機(jī)制。調(diào)用者申請的資源如果被占用,即自旋鎖被已經(jīng)被別的執(zhí)行單元保持,則調(diào)用者一直循環(huán)在那里看是否該自旋鎖的保持著已經(jīng)釋放了鎖。自旋鎖是一種比較低級的保護(hù)數(shù)據(jù)結(jié)構(gòu)和代碼片段的原始方式,可能會引起以下兩個問題;1、死鎖
2、過多地占用CPU資源 傳統(tǒng)自旋鎖由于無序競爭會導(dǎo)致“公平性”問題 (c)管程: 信號量機(jī)制功能強(qiáng)大,但使用時對信號量的操作分散,而且難以控制,讀寫和維護(hù)都很困難。因此后來又提出了一種集中式同步進(jìn)程——管程。其基本思想是將共享變量和對它們的操作集中在一個模塊中,操作系統(tǒng)或并發(fā)程序就由這樣的模塊構(gòu)成。這樣模塊之間聯(lián)系清晰,便于維護(hù)和修改,易于保證正確性。(d)會合: 進(jìn)程直接進(jìn)行相互作用 (e)分布式系統(tǒng): 由于在分布式操作系統(tǒng)中沒有公共內(nèi)存,因此參數(shù)全為值參,而且不可為指針。(f)原語 是不可中斷的過程。
cpu內(nèi)核移植什么意思?
內(nèi)核移植就是指將RT-Thread 內(nèi)核在不同的芯片架構(gòu)、不同的板卡上運(yùn)行起來,能夠具備線程管理和調(diào)度,內(nèi)存管理,線程間同步和通信、定時器管理等功能。移植可分為CPU 架構(gòu)移植和BSP(Board support package,板級支持包)移植兩部分。
CPU架構(gòu)移植
??為了使RT-Thread 能夠在不同CPU 架構(gòu)的芯片上運(yùn)行,RT-Thread 提供了一個libcpu 抽象層來適配不同的CPU 架構(gòu)。libcpu 層向上對內(nèi)核提供統(tǒng)一的接口,包括全局中斷的開關(guān),線程棧的初始化,上下文切換等。
??RT-Thread 的libcpu 抽象層向下提供了一套統(tǒng)一的CPU 架構(gòu)移植接口,這部分接口包含了全局中斷開關(guān)函數(shù)、線程上下文切換函數(shù)、時鐘節(jié)拍的配置和中斷函數(shù)、Cache 等等內(nèi)容。
BSP移植
??相同的CPU 架構(gòu)在實(shí)際項(xiàng)目中,不同的板卡上可能使用相同的CPU 架構(gòu),搭載不同的外設(shè)資源,完成不同的產(chǎn)品,所以我們也需要針對板卡做適配工作。RT-Thread 提供了BSP 抽象層來適配常見的板卡。
??如果希望在一個板卡上使用RT-Thread 內(nèi)核,除了需要有相應(yīng)的芯片架構(gòu)的移植,還需要有針對板卡的移植,也就是實(shí)現(xiàn)一個基本的BSP。主要任務(wù)是建立讓操作系統(tǒng)運(yùn)行的基本環(huán)境,需要完成的主要工作是:
??1)初始化CPU 內(nèi)部寄存器,設(shè)定RAM 工作時序。
zk原理?
在ZK的集群中,各個節(jié)點(diǎn)共有3種角色和4種狀態(tài):
Zookeeper的核心是原子廣播,這個機(jī)制保證了各個Server之間的同步。實(shí)現(xiàn)這個機(jī)制的協(xié)議叫做Zab協(xié)議(ZooKeeper Atomic Broadcast protocol)。Zab協(xié)議有兩種模式,它們分別是恢復(fù)模式(Recovery選主)和廣播模式(Broadcast同步)。當(dāng)服務(wù)啟動或者在領(lǐng)導(dǎo)者崩潰后,Zab就進(jìn)入了恢復(fù)模式,當(dāng)領(lǐng)導(dǎo)者被選舉出來,且大多數(shù)Server完成了和leader的狀態(tài)同步以后,恢復(fù)模式就結(jié)束了。狀態(tài)同步保證了leader和Server具有相同的系統(tǒng)狀態(tài)。
為了保證事務(wù)的順序一致性,zookeeper采用了遞增的事務(wù)id號(zxid)來標(biāo)識事務(wù)。所有的提議(proposal)都在被提出的時候加上了zxid。實(shí)現(xiàn)中zxid是一個64位的數(shù)字,它高32位是epoch用來標(biāo)識leader關(guān)系是否改變,每次一個leader被選出來,它都會有一個新的epoch,標(biāo)識當(dāng)前屬于那個leader的統(tǒng)治時期。低32位用于遞增計數(shù)。
到此,以上就是小編對于的問題就介紹到這了,希望這3點(diǎn)解答對大家有用。
當(dāng)前名稱:請列舉幾種進(jìn)程的同步機(jī)制,并比較其優(yōu)缺點(diǎn)?(windows內(nèi)核同步機(jī)制)
當(dāng)前鏈接:http://m.5511xx.com/article/copsdse.html


咨詢
建站咨詢
