免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

嵌入式死鎖防治指南:從原理到建立完整防護(hù)體系

嵌入式死鎖防治指南:從原理到建立完整防護(hù)體系 2. 死鎖的本質(zhì)不是bug是資源分配的“死局”先想一個(gè)生活場(chǎng)景一條很窄的單行橋上兩輛車迎面相遇誰都不肯倒車結(jié)果誰都過不去。如果兩輛車一直僵持那這條橋就徹底廢了。操作系統(tǒng)里的死鎖Deadlock就是這個(gè)味道——一組進(jìn)程線程各自占著一些資源又在等對(duì)方手里的資源而且誰都不主動(dòng)放手結(jié)果所有進(jìn)程全部卡死系統(tǒng)調(diào)度再努力也白搭。在計(jì)算機(jī)四級(jí)嵌入式考綱里死鎖是操作系統(tǒng)原理的必考核心而且這塊內(nèi)容和實(shí)際嵌入式系統(tǒng)的穩(wěn)定性關(guān)系極大。你可以把它理解成“資源分配里的死局”每個(gè)進(jìn)程都像在飯桌上搶菜但每個(gè)人的筷子都被別人拿著大家大眼瞪小眼誰也沒法繼續(xù)吃。死鎖的本質(zhì)不是程序邏輯寫錯(cuò)了雖然邏輯設(shè)計(jì)不當(dāng)往往是誘因而是“資源分配策略”和“進(jìn)程推進(jìn)順序”共同作用下的系統(tǒng)性僵局。它不同于普通的程序崩潰——崩潰至少是“有個(gè)錯(cuò)誤被逮住了”而死鎖是“所有進(jìn)程看起來都活著但沒有任何一個(gè)能繼續(xù)推進(jìn)”。這就是為什么嵌入式系統(tǒng)里死鎖問題特別讓人頭疼現(xiàn)象不是立刻崩而是系統(tǒng)“慢慢咽氣”或者干脆在某次特定運(yùn)行條件下才暴露。2.1 四個(gè)必要條件缺一不可才算死鎖判斷一個(gè)系統(tǒng)是否可能發(fā)生死鎖先看四個(gè)必要條件。這四者在嵌入式考試?yán)飵缀跏潜乇晨键c(diǎn)而且它們之間是“同時(shí)滿足”的關(guān)系不是“或”。第一個(gè)條件互斥Mutual Exclusion資源同一時(shí)刻只能被一個(gè)進(jìn)程占用。比如一個(gè)串口、一塊共享內(nèi)存、一個(gè)硬件定時(shí)器這些資源天然具有互斥性。如果資源可以無限共享那根本不會(huì)因?yàn)椤罢加谩倍a(chǎn)生等待。第二個(gè)條件持有并等待Hold and Wait進(jìn)程已經(jīng)占著一些資源又在等待別的資源。這個(gè)過程不會(huì)主動(dòng)釋放已經(jīng)拿到手的資源。典型場(chǎng)景進(jìn)程A獲得打印機(jī)又去申請(qǐng)掃描儀進(jìn)程B獲得掃描儀又去申請(qǐng)打印機(jī)。雙方都“抱著自己的不放又惦記別人的”。第三個(gè)條件不可剝奪No Preemption進(jìn)程所占資源不能被系統(tǒng)強(qiáng)行搶走只能由持有者主動(dòng)釋放。注意嵌入式實(shí)時(shí)系統(tǒng)里有些資源其實(shí)是可以被剝奪的比如通過優(yōu)先級(jí)繼承或資源重置但如果所有資源都設(shè)計(jì)成不可剝奪死鎖風(fēng)險(xiǎn)就會(huì)上升。第四個(gè)條件循環(huán)等待Circular Wait存在一個(gè)進(jìn)程等待環(huán)路P1等P2的資源P2等P3的資源P3等P1的資源形成一個(gè)閉合環(huán)。這是死鎖最直觀的“形態(tài)特征”也是我們?cè)谙到y(tǒng)設(shè)計(jì)中最容易通過資源排序來破壞的一個(gè)條件。把這四個(gè)條件記成一句話互斥、持有等待、不可剝奪、循環(huán)等待。只要打破任意一個(gè)死鎖就不可能成立。備考時(shí)遇到判斷題或分析題第一件事就是拿這四個(gè)條件去套題干場(chǎng)景。2.2 一個(gè)最小死鎖示例拿串口和DMA通道說事嵌入式系統(tǒng)里最常見的死鎖場(chǎng)景之一就是多個(gè)任務(wù)搶共享外設(shè)資源。我寫一個(gè)極簡的偽代碼示例幫你直觀感受死鎖的誕生過程// 任務(wù)1先拿串口再拿DMA通道 void task1(void) { lock(serial_port); // 步驟1獲得串口 lock(dma_channel); // 步驟2等DMA通道此時(shí)可能被任務(wù)2占著 // 使用串口DMA傳輸數(shù)據(jù) unlock(dma_channel); unlock(serial_port); } // 任務(wù)2先拿DMA通道再拿串口 void task2(void) { lock(dma_channel); // 步驟1獲得DMA通道 lock(serial_port); // 步驟2等串口此時(shí)可能被任務(wù)1占著 // 使用DMA串口接收數(shù)據(jù) unlock(serial_port); unlock(dma_channel); }如果任務(wù)1執(zhí)行完lock(serial_port)后調(diào)度器切到任務(wù)2任務(wù)2執(zhí)行完lock(dma_channel)那循環(huán)等待就形成了任務(wù)1等待DMA通道任務(wù)2等待串口誰都不松手。這個(gè)例子在真實(shí)嵌入式系統(tǒng)中很常見——特別是用多個(gè)外設(shè)做數(shù)據(jù)采集與傳輸時(shí)資源申請(qǐng)順序不一致就會(huì)埋雷。提示判斷死鎖的關(guān)鍵并不是“兩個(gè)任務(wù)都在等”而是“等待是否形成了環(huán)”。如果任務(wù)2的執(zhí)行順序調(diào)整為“先拿串口再拿DMA通道”和任務(wù)1保持一致就不會(huì)有環(huán)也就不會(huì)死鎖。這里“資源順序”就是破局的第一把鑰匙。3. 死鎖的三種解法預(yù)防、避免、檢測(cè)恢復(fù)從系統(tǒng)工程角度看處理死鎖有三種思路它們的側(cè)重點(diǎn)完全不同。嵌入式考試?yán)锝?jīng)常會(huì)把這三種思路放在一起對(duì)比考察讓你判斷某個(gè)系統(tǒng)用了哪種策略。我用一張表格快速梳理一下策略類型核心思路優(yōu)點(diǎn)缺點(diǎn)典型應(yīng)用場(chǎng)景死鎖預(yù)防Prevention從源頭破壞四個(gè)必要條件之一簡單、確定性高資源利用率偏低小型嵌入式裸機(jī)系統(tǒng)死鎖避免Avoidance動(dòng)態(tài)判斷資源分配是否安全不安全就不分配資源利用率較高需要預(yù)知進(jìn)程最大需求實(shí)現(xiàn)復(fù)雜銀行家算法為代表的通用OS死鎖檢測(cè)與恢復(fù)Detection Recovery允許死鎖發(fā)生周期性檢測(cè)并解除不限制進(jìn)程行為檢測(cè)延遲、恢復(fù)代價(jià)高大型服務(wù)器、數(shù)據(jù)庫系統(tǒng)3.1 死鎖預(yù)防從設(shè)計(jì)上絕掉后路預(yù)防的核心思想特別簡單讓四個(gè)必要條件至少一個(gè)永遠(yuǎn)不成立。具體手法如下破壞互斥條件讓資源變成“可同時(shí)共享”。但嵌入式系統(tǒng)里串口、I2C總線、Flash寫入這類資源天生就是互斥的不可能讓兩個(gè)任務(wù)同時(shí)寫同一個(gè)串口所以這個(gè)條件實(shí)際上很難破壞。這也是為什么“破壞互斥”在實(shí)際系統(tǒng)中極少被采用——資源本身的物理屬性決定了它必須互斥。破壞持有并等待條件要求進(jìn)程在運(yùn)行前一次性申請(qǐng)所有需要的資源申請(qǐng)不到就一個(gè)都不拿。這種“全有或全無”的分配方式實(shí)現(xiàn)了“不允許邊持有邊等待”但從資源利用率角度看很浪費(fèi)——任務(wù)可能只需要5%的CPU時(shí)間卻要把所有相關(guān)資源都占滿。在資源緊張的嵌入式系統(tǒng)里這種方案往往不劃算。破壞不可剝奪條件允許系統(tǒng)強(qiáng)行收回資源。這個(gè)方案在嵌入式實(shí)時(shí)系統(tǒng)里是比較實(shí)用的——當(dāng)一個(gè)高優(yōu)先級(jí)任務(wù)需要的資源被低優(yōu)先級(jí)任務(wù)占著時(shí)RTOS可以通過優(yōu)先級(jí)繼承機(jī)制或資源重置來剝奪。但注意剝奪資源可能造成數(shù)據(jù)丟失或狀態(tài)不一致比如一個(gè)正在寫Flash的進(jìn)程被強(qiáng)行打斷Flash里的數(shù)據(jù)可能就廢了。所以“破壞不可剝奪”要謹(jǐn)慎用一般只適合可重置、損失可容忍的資源。破壞循環(huán)等待條件給所有資源編號(hào)要求所有任務(wù)必須按編號(hào)從小到大申請(qǐng)資源。這是嵌入式領(lǐng)域最常用也最有效的預(yù)防手段因?yàn)樗鼜倪壿嬌献尛h(huán)路永遠(yuǎn)無法形成。只要每個(gè)任務(wù)都遵循“先拿低編號(hào)資源再拿高編號(hào)資源”那所有等待方向都是一致的不可能出現(xiàn)“P1等P2P2又等P1”的循環(huán)。我對(duì)資源編號(hào)法的評(píng)價(jià)是它簡單、可操作性強(qiáng)、對(duì)系統(tǒng)性能影響小代價(jià)是編程時(shí)需要額外遵守一套申請(qǐng)順序規(guī)范。一個(gè)典型的做法是// 定義資源編號(hào) #define RES_LOCK_SERIAL 1 // 串口鎖 #define RES_LOCK_DMA 2 // DMA通道鎖 #define RES_LOCK_SPI 3 // SPI總線鎖 #define RES_LOCK_FLASH 4 // Flash寫鎖 // 所有任務(wù)只能按編號(hào)升序申請(qǐng)資源 // 例如先申請(qǐng)串口(1)再申請(qǐng)DMA(2)最后申請(qǐng)F(tuán)lash(4) void task_capture_and_store(void) { lock(RES_LOCK_SERIAL); lock(RES_LOCK_DMA); lock(RES_LOCK_FLASH); // 執(zhí)行采集存儲(chǔ) unlock(RES_LOCK_FLASH); unlock(RES_LOCK_DMA); unlock(RES_LOCK_SERIAL); }這套方式的本質(zhì)是“把并發(fā)問題轉(zhuǎn)化為順序問題”在工程上非常香。實(shí)際嵌入式開發(fā)里很多成熟的RTOS方案比如基于信號(hào)量或互斥鎖的資源管理都會(huì)建議開發(fā)者對(duì)共享資源做編號(hào)管理目的不是別的就是防止死鎖。3.2 死鎖避免銀行家算法與安全狀態(tài)死鎖避免的代表算法就是著名的銀行家算法Bankers Algorithm。它的思路有點(diǎn)像銀行貸款審批銀行在放貸前要確認(rèn)這筆錢貸出去后系統(tǒng)里還剩下足夠的錢能讓所有客戶最多完成他們的需求。如果可以就放貸如果不可以就拒絕免得客戶最后還不上錢把銀行拖垮。對(duì)應(yīng)到操作系統(tǒng)里資源就是“錢”進(jìn)程就是“客戶”。銀行家算法要求每個(gè)進(jìn)程提前聲明自己“最多需要多少資源”Max。系統(tǒng)手里有一個(gè)“剩余資源向量”Available。每次進(jìn)程申請(qǐng)資源時(shí)系統(tǒng)做一次安全性檢查假設(shè)把這筆資源分配給你剩下的資源能否讓所有進(jìn)程都走到終點(diǎn)。如果能當(dāng)前狀態(tài)就是“安全狀態(tài)”Safe State可以分配否則就拒絕分配讓進(jìn)程等。安全性檢查算法本身不難核心就是模擬推進(jìn)找“剩余資源能滿足其最大需求”的進(jìn)程讓它執(zhí)行完畢、釋放資源然后再找下一個(gè)直到所有進(jìn)程都能完成。如果存在一個(gè)完整的安全執(zhí)行序列就說明系統(tǒng)是安全的。但在嵌入式領(lǐng)域銀行家算法的應(yīng)用非常有限原因有三個(gè)難以預(yù)知每個(gè)任務(wù)的資源最大需求。嵌入式系統(tǒng)里很多任務(wù)是動(dòng)態(tài)創(chuàng)建、動(dòng)態(tài)申請(qǐng)資源的提前聲明Max值很麻煩。檢查算法本身有一定開銷在實(shí)時(shí)性要求高的系統(tǒng)中這個(gè)開銷不可忽視。嵌入式系統(tǒng)資源種類繁多每個(gè)任務(wù)可能要鎖串口、鎖I2C、鎖DMA、鎖Flash、鎖內(nèi)存池資源矩陣規(guī)模一大更新和檢查的成本就上去了。所以我個(gè)人建議考試要會(huì)用銀行家算法做題主要是安全序列推導(dǎo)但做嵌入式工程時(shí)優(yōu)先考慮資源編號(hào)法這類預(yù)防手段。銀行家算法更適合通用操作系統(tǒng)、數(shù)據(jù)庫這類資源種類少但并發(fā)度高的場(chǎng)景。3.3 死鎖檢測(cè)與恢復(fù)事后的“救火隊(duì)”檢測(cè)與恢復(fù)策略的思路是不預(yù)防、不避免讓死鎖發(fā)生然后事后發(fā)現(xiàn)并救回來。系統(tǒng)在運(yùn)行過程中周期性檢查“當(dāng)前資源分配圖”是否存在環(huán)路如果存在環(huán)路說明有死鎖就啟動(dòng)恢復(fù)機(jī)制。環(huán)路檢測(cè)的關(guān)鍵是維護(hù)一張“資源分配圖”Resource Allocation Graph圖中包含兩類節(jié)點(diǎn)進(jìn)程節(jié)點(diǎn)和資源節(jié)點(diǎn)。當(dāng)一個(gè)進(jìn)程申請(qǐng)一個(gè)資源時(shí)畫一條從進(jìn)程指向資源的“請(qǐng)求邊”當(dāng)一個(gè)進(jìn)程占有一個(gè)資源時(shí)畫一條從資源指向進(jìn)程的“分配邊”。如果圖中存在環(huán)就說明死鎖發(fā)生了?;謴?fù)手段一般有三種直接終止一個(gè)或多個(gè)進(jìn)程簡單粗暴終止哪個(gè)進(jìn)程需要權(quán)衡犧牲優(yōu)先級(jí)最低、工作量最少的那個(gè)通常是較好的選擇。資源搶占從某個(gè)進(jìn)程手里搶走資源分配給另一個(gè)進(jìn)程但被搶的進(jìn)程需要回滾到安全點(diǎn)。這在嵌入式場(chǎng)景里實(shí)現(xiàn)成本很高因?yàn)楹芏嗤庠O(shè)根本無法“回滾”。人工介入嵌入式系統(tǒng)出現(xiàn)死鎖時(shí)很多時(shí)候只能靠看門狗Watchdog復(fù)位系統(tǒng)。這也算是一種“恢復(fù)”——代價(jià)是整個(gè)系統(tǒng)重啟實(shí)時(shí)性任務(wù)全部被打斷。說實(shí)話在嵌入式領(lǐng)域檢測(cè)與恢復(fù)策略通常是最后的底線手段不是首選。真正靠譜的系統(tǒng)設(shè)計(jì)要在“資源申請(qǐng)順序”和“鎖粒度”上下功夫盡量做到“死鎖不發(fā)生”。4. 嵌入式RTOS里的經(jīng)典死鎖場(chǎng)景互斥鎖與優(yōu)先級(jí)反轉(zhuǎn)嵌入式系統(tǒng)里用的最多的是RTOS實(shí)時(shí)操作系統(tǒng)而RTOS里死鎖問題的呈現(xiàn)方式和通用OS還不太一樣額外疊加了一個(gè)“優(yōu)先級(jí)反轉(zhuǎn)”Priority Inversion的坑。這塊內(nèi)容考試?yán)锝?jīng)常和死鎖放一起考因?yàn)樗鼈z在癥狀上很像都是任務(wù)卡住不動(dòng)。但處理方式完全不同我在這里單獨(dú)拎出來講清楚。4.1 優(yōu)先級(jí)反轉(zhuǎn)癥狀像死鎖但解法完全不同先看一個(gè)經(jīng)典場(chǎng)景系統(tǒng)有三個(gè)任務(wù)優(yōu)先級(jí)從高到低分別是T1高、T2中、T3低。T3先運(yùn)行拿到了一把互斥鎖。T1就緒搶占CPU嘗試拿同一把鎖但鎖被T3占著T1阻塞等待。T2此時(shí)就緒它不搶鎖但它的優(yōu)先級(jí)比T3高于是T2搶占CPU運(yùn)行。T3被T2搶占了CPU但還抱著鎖不放。T1還在等鎖。T2一直運(yùn)行T3一直無法推進(jìn)鎖就一直無法釋放T1就一直卡死。從表面上看這就像死鎖高優(yōu)先級(jí)任務(wù)T1在等一個(gè)永遠(yuǎn)可能等不到的鎖。但嚴(yán)格來說這不是死鎖——因?yàn)檫@里沒有“循環(huán)等待”T3并沒有在等T1的資源它只是被T2搶占導(dǎo)致無法釋放鎖。這是一種“優(yōu)先級(jí)反轉(zhuǎn)”問題。解決優(yōu)先級(jí)反轉(zhuǎn)的標(biāo)準(zhǔn)手段是優(yōu)先級(jí)繼承Priority Inheritance和優(yōu)先級(jí)天花板Priority Ceiling優(yōu)先級(jí)繼承當(dāng)高優(yōu)先級(jí)任務(wù)T1等待低優(yōu)先級(jí)任務(wù)T3持有的鎖時(shí)把T3的優(yōu)先級(jí)臨時(shí)提升到T1的級(jí)別讓T3盡快運(yùn)行、盡快釋放鎖。優(yōu)先級(jí)天花板給每把鎖設(shè)定一個(gè)“天花板優(yōu)先級(jí)”等于所有可能使用該鎖的任務(wù)的最高優(yōu)先級(jí)。任何任務(wù)拿到鎖時(shí)它的優(yōu)先級(jí)自動(dòng)升到天花板級(jí)別。這兩個(gè)機(jī)制能有效避免“中等優(yōu)先級(jí)任務(wù)長期搶占導(dǎo)致高優(yōu)先級(jí)任務(wù)餓死”的惡性現(xiàn)象。需要注意的是優(yōu)先級(jí)繼承解決的是“反轉(zhuǎn)”問題而不是死鎖。如果你的系統(tǒng)同時(shí)存在優(yōu)先級(jí)反轉(zhuǎn)和資源申請(qǐng)順序不一致那就要雙管齊下一邊用優(yōu)先級(jí)繼承/天花板一邊用資源編號(hào)法。注意考試?yán)锝?jīng)常有這種陷阱題——“系統(tǒng)中有多個(gè)任務(wù)互相等待對(duì)方持有的資源且形成了循環(huán)等待”問你這是什么問題。答案是死鎖。但如果題干改成“高優(yōu)先級(jí)任務(wù)等待低優(yōu)先級(jí)任務(wù)釋放鎖中等優(yōu)先級(jí)任務(wù)一直搶占CPU”那答案就是優(yōu)先級(jí)反轉(zhuǎn)。把這兩種現(xiàn)象的判定特征理清楚基本不會(huì)錯(cuò)。4.2 RTOS互斥鎖使用時(shí)的三個(gè)實(shí)操建議在實(shí)際嵌入式項(xiàng)目里互斥鎖Mutex的使用有幾個(gè)成熟經(jīng)驗(yàn)值得遵守建議一所有任務(wù)對(duì)同一組共享資源的加鎖順序必須一致。這是預(yù)防死鎖最核心的工程紀(jì)律。假設(shè)項(xiàng)目里有串口和Flash兩個(gè)共享資源那就規(guī)定所有任務(wù)只能“先鎖串口再鎖Flash”不允許出現(xiàn)“先Flash后串口”的寫法。代碼Review時(shí)要重點(diǎn)盯這一條。建議二鎖的持有時(shí)間盡量短。鎖的范圍越小、持有鎖的時(shí)間越短發(fā)生死鎖和性能瓶頸的概率就越低。一個(gè)常見的反面案例是有人在中斷處理里加鎖或者在長時(shí)間計(jì)算過程中一直持有鎖這些都會(huì)讓系統(tǒng)變得極其脆弱。中斷上下文里一般只做標(biāo)記或數(shù)據(jù)拷貝不要直接加鎖等待。建議三使用超時(shí)機(jī)制給鎖加上“護(hù)欄”。很多RTOS的互斥鎖API支持超時(shí)參數(shù)比如等待50ms、100ms等。給鎖等待加上超時(shí)后即使因?yàn)槟承┎豢深A(yù)知的原因真的發(fā)生了死鎖任務(wù)也不會(huì)無限期卡死而是會(huì)超時(shí)返回錯(cuò)誤碼這樣系統(tǒng)就有機(jī)會(huì)進(jìn)行恢復(fù)或上報(bào)異常。雖然超時(shí)機(jī)制并不能根除死鎖但它能把“死局”變成“可察覺、可恢復(fù)的異?!痹诠こ汤锾貏e實(shí)用。4.3 用信號(hào)量與互斥鎖的區(qū)別再看一遍死鎖嵌入式系統(tǒng)里還有一類并發(fā)原語叫信號(hào)量Semaphore。信號(hào)量分二值信號(hào)量和計(jì)數(shù)信號(hào)量兩種二值信號(hào)量和互斥鎖在用法上特別像但兩者有本質(zhì)區(qū)別互斥鎖Mutex有“所有權(quán)”概念誰加的鎖只能由誰釋放適合保護(hù)共享資源。信號(hào)量Semaphore沒有所有權(quán)概念一個(gè)任務(wù)釋放信號(hào)量另一個(gè)任務(wù)可以獲取信號(hào)量常用于任務(wù)間“事件通知”或“計(jì)數(shù)資源管理”。從死鎖風(fēng)險(xiǎn)看互斥鎖必須要關(guān)注“加鎖順序”否則死鎖概率很高信號(hào)量由于沒有所有權(quán)它更多用于“生產(chǎn)者-消費(fèi)者”模型死鎖風(fēng)險(xiǎn)相對(duì)低一些但依然存在比如兩個(gè)任務(wù)都等待對(duì)方發(fā)信號(hào)量就會(huì)形成“活鎖”式的僵局。我見過不少嵌入式開發(fā)新手在項(xiàng)目里不加區(qū)分地混用互斥鎖和信號(hào)量結(jié)果出現(xiàn)問題后很難排查。我的建議是保護(hù)共享資源優(yōu)先用互斥鎖任務(wù)間通信或事件通知優(yōu)先用信號(hào)量。這樣邏輯清晰出問題也好定位。5. 死鎖排查一個(gè)真實(shí)的嵌入式故障分析過程前面講了原理和預(yù)防手段但真實(shí)項(xiàng)目中死鎖問題往往不會(huì)在你寫完代碼的當(dāng)下就暴露出來。它通常是在某次壓力測(cè)試、某次極端時(shí)序下突然出現(xiàn)的。下面我分享一個(gè)模擬項(xiàng)目X中“系統(tǒng)間歇性卡死”的排查實(shí)錄幫你理解真實(shí)場(chǎng)景里的死鎖長什么樣。5.1 故障現(xiàn)象與初步判斷模擬項(xiàng)目X是一套基于某RTOS的嵌入式數(shù)據(jù)采集系統(tǒng)里面有4個(gè)主要任務(wù)采集任務(wù)C負(fù)責(zé)從傳感器讀取數(shù)據(jù)通過DMA搬運(yùn)到內(nèi)存然后通過串口發(fā)送。顯示任務(wù)D負(fù)責(zé)把采集到的數(shù)據(jù)在屏幕上刷新。存儲(chǔ)任務(wù)S負(fù)責(zé)把壓縮后的數(shù)據(jù)寫入外部Flash。通信任務(wù)N負(fù)責(zé)通過以太網(wǎng)口上報(bào)數(shù)據(jù)。某天測(cè)試時(shí)發(fā)現(xiàn)系統(tǒng)偶爾運(yùn)行十幾分鐘后所有任務(wù)全部停住串口不再輸出屏幕畫面定格看門狗沒有觸發(fā)板子“假死”。當(dāng)時(shí)第一反應(yīng)是“系統(tǒng)卡在死循環(huán)里了”。但用調(diào)試器掛上去一看發(fā)現(xiàn)各個(gè)任務(wù)都停在lock調(diào)用上CPU占用率卻不為零——這說明不是死循環(huán)而是多個(gè)任務(wù)在互相等待鎖。我立刻開始抓資源申請(qǐng)順序。通過調(diào)試器查看每個(gè)任務(wù)當(dāng)前持有的鎖和正在等待的鎖很快就還原出真實(shí)的死鎖鏈路任務(wù)C持有串口鎖正在等Flash寫鎖任務(wù)S持有Flash寫鎖正在等串口鎖。兩個(gè)任務(wù)互相等環(huán)形成了。這就是教科書級(jí)別的死鎖。5.2 根因分析為什么之前沒被發(fā)現(xiàn)問題根因是任務(wù)C和任務(wù)S的加鎖順序不一致。任務(wù)C的代碼路徑里是先鎖串口、再鎖Flash而任務(wù)S的代碼路徑里是先鎖Flash、再鎖串口。正常情況下兩個(gè)任務(wù)同時(shí)運(yùn)行且恰好“交錯(cuò)申請(qǐng)”的概率不高所以前期測(cè)試沒暴露。但在壓力測(cè)試中數(shù)據(jù)量增大任務(wù)C和任務(wù)S并發(fā)執(zhí)行的頻率大幅提升死鎖觸發(fā)概率就上來了。這也解釋了為什么死鎖問題最怕“偶現(xiàn)”——它和時(shí)間、負(fù)載強(qiáng)相關(guān)單次功能測(cè)試往往覆蓋不到。我們?cè)诖aReview階段沒有嚴(yán)格要求“全局統(tǒng)一資源編號(hào)”所以在設(shè)計(jì)階段就埋下了隱患。5.3 解決方案與經(jīng)驗(yàn)沉淀我當(dāng)時(shí)的修復(fù)方案很簡單但很有效給共享資源定義全局編號(hào)規(guī)定任務(wù)C和任務(wù)S都必須按“串口鎖 - Flash寫鎖”的順序申請(qǐng)。改完代碼后壓力測(cè)試連續(xù)跑48小時(shí)死鎖再?zèng)]復(fù)現(xiàn)。從這個(gè)案例里我總結(jié)出三條嵌入式死鎖排查經(jīng)驗(yàn)經(jīng)驗(yàn)一用調(diào)試器看任務(wù)棧和鎖狀態(tài)準(zhǔn)確定位環(huán)。不要靠猜。先在調(diào)試環(huán)境里掛到目標(biāo)板上查看每個(gè)任務(wù)的“持有鎖列表”和“等待鎖列表”還原出完整的資源申請(qǐng)圖。只要發(fā)現(xiàn)環(huán)就百分之百是死鎖。經(jīng)驗(yàn)二代碼Review階段就要檢查和統(tǒng)一加鎖順序。很多死鎖問題是“設(shè)計(jì)階段不統(tǒng)一、寫代碼時(shí)各寫各的”造成的。如果項(xiàng)目里有多個(gè)人并行開發(fā)一定要在資源鎖的使用規(guī)范上達(dá)成一致最好寫在編碼規(guī)范里。經(jīng)驗(yàn)三引入“鎖超時(shí)”作為源碼級(jí)保護(hù)。給所有l(wèi)ock調(diào)用加上超時(shí)參數(shù)一旦超時(shí)就記錄日志并嘗試恢復(fù)。這樣即使預(yù)防措施沒到位問題也能被快速定位不至于在現(xiàn)場(chǎng)“假死”時(shí)無從下手。另外補(bǔ)充一點(diǎn)在嵌入式系統(tǒng)里死鎖伴隨的常見癥狀往往是“任務(wù)無響應(yīng)、看門狗未觸發(fā)”。很多人看到這種現(xiàn)象會(huì)先懷疑中斷或任務(wù)優(yōu)先級(jí)配置但如果你能在調(diào)試器里看到多個(gè)任務(wù)卡在lock上那基本可以直接鎖定死鎖方向。6. 死鎖考點(diǎn)拆解與備考做題技巧最后這部分專門服務(wù)備考計(jì)算機(jī)四級(jí)嵌入式的同學(xué)。死鎖在考綱里屬于“操作系統(tǒng)原理”的難點(diǎn)模塊出題形式以選擇、判斷、簡答為主偶爾會(huì)有“安全性分析”類的大題。我結(jié)合真題風(fēng)格梳理了幾個(gè)高頻考點(diǎn)和做題技巧。6.1 高頻考點(diǎn)清單考點(diǎn)一死鎖的四個(gè)必要條件。題目通常是“以下哪個(gè)條件不是死鎖的必要條件”或者“下列哪種情況不屬于死鎖的四個(gè)必要條件之一”。這類題的干擾項(xiàng)很喜歡設(shè)置“饑餓”“活鎖”“優(yōu)先級(jí)反轉(zhuǎn)”等概念你需要把死鎖和這些相鄰概念嚴(yán)格區(qū)分開。考點(diǎn)二死鎖預(yù)防的四種方法。核心是每種方法破壞哪個(gè)條件。比如“資源一次性申請(qǐng)”對(duì)應(yīng)破壞“持有并等待”“資源編號(hào)排序法”對(duì)應(yīng)破壞“循環(huán)等待”“允許搶占”對(duì)應(yīng)破壞“不可剝奪”??键c(diǎn)三銀行家算法的安全序列推導(dǎo)。給你一張進(jìn)程-資源需求表讓你判斷系統(tǒng)是否安全以及求一個(gè)安全執(zhí)行序列。這類題目看起來復(fù)雜但只要有固定的解題套路模擬分配并反復(fù)掃描就能穩(wěn)定拿分??键c(diǎn)四資源分配圖與死鎖判斷。給一張資源分配圖問是否存在死鎖。判斷方法是找環(huán)資源分配圖里有環(huán)且有向環(huán)上每類資源數(shù)量都滿足“占滿”條件那死鎖成立。要注意的是一般圖論里有環(huán)還不一定死鎖比如資源數(shù)量大于1時(shí)環(huán)內(nèi)某個(gè)資源還有盈余要結(jié)合“資源實(shí)例數(shù)量”仔細(xì)看??键c(diǎn)五死鎖與饑餓、活鎖的區(qū)別。死鎖是“永久相互等待”饑餓是“進(jìn)程長期得不到資源但系統(tǒng)還在推進(jìn)”活鎖是“進(jìn)程狀態(tài)在變化但就是無法實(shí)現(xiàn)真正的推進(jìn)”。三者極易混淆做題時(shí)要把定義咬準(zhǔn)。6.2 銀行家算法做題步驟完整示例我用一個(gè)小數(shù)據(jù)量的例子演示一遍標(biāo)準(zhǔn)解法假設(shè)系統(tǒng)有3類資源A、B、C總量分別是10, 5, 7。當(dāng)前系統(tǒng)里有如下5個(gè)進(jìn)程它們的最大需求Max、已分配Allocation、剩余需求量Need如下進(jìn)程Max (A,B,C)Allocation (A,B,C)Need (A,B,C) Max - AllocationP0(7, 5, 3)(0, 1, 0)(7, 4, 3)P1(3, 2, 2)(2, 0, 0)(1, 2, 2)P2(9, 0, 2)(3, 0, 2)(6, 0, 0)P3(2, 2, 2)(2, 1, 1)(0, 1, 1)P4(4, 3, 3)(0, 0, 2)(4, 3, 1)當(dāng)前分配總量A類023207B類100102C類002125。 剩余資源向量Available 總資源量 - 當(dāng)前分配總量 (10-7, 5-2, 7-5) (3, 3, 2)。接下來找一個(gè)能“滿足Need且不超過Available”的進(jìn)程P0需要(7,4,3)Available是(3,3,2)不夠跳過。P1需要(1,2,2)Available是(3,3,2)夠。讓P1執(zhí)行完畢釋放它的Allocation2,0,0Available變?yōu)?32, 30, 20)(5,3,2)。繼續(xù)找P3需要(0,1,1)Available(5,3,2)夠。讓P3執(zhí)行完釋放(2,1,1)Available變?yōu)?7,4,3)。再找P4需要(4,3,1)Available(7,4,3)夠。讓P4執(zhí)行完釋放(0,0,2)Available變?yōu)?7,4,5)。再找P0需要(7,4,3)Available(7,4,5)夠。讓P0執(zhí)行完釋放Allocation(0,1,0)Available變?yōu)?7,5,5)。最后P2需要(6,0,0)Available(7,5,5)夠。全部進(jìn)程都能完成。安全序列之一是P1 - P3 - P4 - P0 - P2。做題時(shí)只要按這個(gè)流程走基本不會(huì)失分。關(guān)鍵點(diǎn)是每次模擬執(zhí)行完一個(gè)進(jìn)程后Available要加上它的Allocation然后再找下一個(gè)可以執(zhí)行的進(jìn)程。不要搞混“Need”和“Allocation”——釋放資源時(shí)釋放的是Allocation不是Need。6.3 考場(chǎng)上容易踩的三個(gè)坑坑一分不清“死鎖”和“不安全狀態(tài)”。不安全狀態(tài)是“可能發(fā)生死鎖”并不是“一定發(fā)生死鎖”。銀行家算法拒絕的資源請(qǐng)求會(huì)使系統(tǒng)進(jìn)入不安全狀態(tài)但拒絕它之后系統(tǒng)依然是安全的。做題時(shí)要注意安全狀態(tài)一定不會(huì)死鎖但不安全狀態(tài)不一定立刻死鎖。坑二把“循環(huán)等待”當(dāng)成死鎖的充分條件。資源分配圖里有環(huán)不一定死鎖例如環(huán)內(nèi)的某類資源還有空閑實(shí)例但四個(gè)必要條件全滿足時(shí)就一定死鎖??荚?yán)锵矚g用“有環(huán)死鎖”這種不嚴(yán)謹(jǐn)說法當(dāng)干擾項(xiàng)??尤梆囸I”和“死鎖”混為一談。饑餓的進(jìn)程并沒有形成循環(huán)等待只是某個(gè)進(jìn)程一直得不到資源。比如低優(yōu)先級(jí)任務(wù)長期被高優(yōu)先級(jí)任務(wù)搶占就是一種饑餓但它不是死鎖。判斷時(shí)先看“有沒有環(huán)”。7. 最后的實(shí)戰(zhàn)建議死鎖防治要在“設(shè)計(jì)階段”下手回頭看這篇文章你會(huì)發(fā)現(xiàn)死鎖問題的本質(zhì)在于“并發(fā)資源分配”這個(gè)系統(tǒng)設(shè)計(jì)問題而不是簡單的編碼錯(cuò)誤。它決定了你的系統(tǒng)在極端負(fù)載下是穩(wěn)定運(yùn)行還是突然假死。我個(gè)人在嵌入式項(xiàng)目里的體會(huì)是死鎖防治要前置到架構(gòu)設(shè)計(jì)階段而不是等出了問題再靠檢測(cè)和恢復(fù)兜底。具體來說可以在項(xiàng)目啟動(dòng)時(shí)就做這幾件事第一梳理所有共享資源和它們的使用者做一張“資源-任務(wù)矩陣”。哪個(gè)任務(wù)會(huì)用到哪些資源、什么順序申請(qǐng)全部畫出來。只要在矩陣?yán)锇l(fā)現(xiàn)“加鎖順序有交叉”的跡象立刻調(diào)整設(shè)計(jì)。第二寫編碼規(guī)范時(shí)明確資源申請(qǐng)順序和鎖使用邊界。特別是多人協(xié)作的項(xiàng)目如果每個(gè)人都有自己的加鎖習(xí)慣死鎖風(fēng)險(xiǎn)會(huì)成倍增加。規(guī)范里可以強(qiáng)制要求所有互斥鎖申請(qǐng)必須按資源編號(hào)升序進(jìn)行如果確實(shí)需要反序申請(qǐng)必須走評(píng)審流程。第三在系統(tǒng)聯(lián)調(diào)階段加入“鎖等待超時(shí)監(jiān)控”和“周期性狀態(tài)快照”。給每個(gè)任務(wù)增加一個(gè)“當(dāng)前等待鎖”的狀態(tài)變量在調(diào)試打印里定期輸出。一旦出現(xiàn)異常等待超過閾值日志里就能直接看到“哪個(gè)任務(wù)在等哪把鎖”排查效率會(huì)提升一個(gè)數(shù)量級(jí)。第四最后再分享一個(gè)小技巧如果實(shí)在沒辦法給所有鎖加超時(shí)那么在代碼里加一個(gè)“看門狗喂狗注釋約定”——凡是持有鎖超過約定時(shí)間的代碼路徑都要在注釋里寫明原因。這樣未來排查時(shí)可以直接通過日志和代碼注釋快速縮小范圍。死鎖防治不是一個(gè)高深的理論問題而是一個(gè)非常依賴工程紀(jì)律和前置設(shè)計(jì)的實(shí)踐問題。把這篇文章里提到的“四個(gè)必要條件”“資源編號(hào)法”“鎖超時(shí)”“調(diào)試定位”結(jié)合起來你的嵌入式系統(tǒng)就會(huì)穩(wěn)很多??荚噷用姘雁y行家算法的做題步驟練熟把死鎖與饑餓、優(yōu)先級(jí)反轉(zhuǎn)的區(qū)分邊界理清這塊分?jǐn)?shù)基本就能穩(wěn)拿。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天日天天舔| 久久9视频欧美| 玖玖色资源站| 成人视频网| WWW五月婷婷| 婷婷五月天色播| 在线播放成人| 亚洲精品亚洲人成人网| 色色色色色爱| 黄网在线免费观看| 中文字幕1区2区。| 午夜九九九九九九九九九九九九九| 美女网黄| 免费看欧美成人A片无码| 日本熟妇人妻在线| WWW·色色色·COM| 婷婷五月天视频| 日本天堂网站99| 国产偷人妻精品一区| 综合色色五月| 91九色网| 伊人啪啪网| 超碰精品国产首页| 91人久| 9|无码久久久久久| 久久免费高| 天天做天天爱天天玩| 99日本在线| 天天干一干| 美国色五月天婷婷资源站| 玖玖婷婷精品| 久久婷婷五月丁香蜜桃网| 五月天天天天天天天天天天天婷婷婷| 九九色综合网| 月丁香久久久| 久99热在线观看| 成人版视频在线观看| 色区久久| 久久免费操| 九九这里只这里只有精品| 色婷婷六月精品| 97久人人| 99九九在线| 国产日韩精品SUV| 五月丁香性| 色色综合无码| 亚洲综合1024| 亚洲AV第二区国产精品| 亚洲殴洲精品Av在线| 91大神操美女| 久久精典| AV操逼网| 97狠狠色| 91超级碰碰| 天天综合中文| 丁香五月天啪啪a日本| 成人va在线观看视频| 大鸡巴伊人网| 亚洲婷婷丁香五月| 极品五月天| 98永久精品| 六月婷婷激情小说网| 超碰在线国产| 六月婷婷深深爱| 日韩肏屄网| 色综合99色| 大地9中文在线观看免费高清| 激情第四色| 天天爽天天做| 婷婷五月精品中文字幕| 26uuu国产激情视频| 婷婷丁香色五月天久久88| 亚洲婷婷婷| 97超喷视频在线观看| 无码成人播放器| 婷婷视频网| 天天久久狠狠色综合| 五月丁香六月婷婷无码| 六月丁香色色| 99性视频| 综合六月久久| 色色综合热| 玖玖九九9999在线观看视频精品| 不卡在线超碰| 91人人爽人人操| 色婷婷亚洲综合网站| 天天日中文| 麻豆AV一区二区三区| 伊人综合网站| 丁香伊人五月色婷婷五十路| 激情六月丁香| 色五月 激情婷婷 综合五月天| 狠狠色狠狠干| 亚洲六月色| 天天狠狠干| 精品久久艹| 激情亚洲网| 色五月第四色| 日日天天干| 五月天婷婷色综合| 91精品91久久久久77777| 狠狠干综合| 97碰在线视频| 五月色丁香婷婷综合| 七七色综合| 五月天激情黄色网址| 九九色黄色| 第五婷婷伊人丁香| 激情五月天婷婷免费观看| 天天粽合合合合| 高清无码.com| WWW,五月天| 日韩无码成人电影| 激情色色| 99精品热视频只有精品10| 九九RE视频在线精品| 五月激情综合网| 婷婷五月天中文字幕.| 五月婷婷干干干| 色欲丁香| 欧洲综合色| 99视频激情四射| 婷婷导航| www.99热精品99.com| 97在线/亚洲| 天天人人综合| 亚洲精| 99热.com| 日韩少妇内射免费播放| 国产操B视频| 激情美女五月天| 婷婷伊人五月| 女人天堂AV| 九月丁香八月婷婷加勒比| 一区操| 色婷婷在线播放| 亚洲精品操一操、噜一噜、摸一摸、爽 | 五月亭亭开心网| 久久久婷婷| 青青草婷婷久久| 亚洲天堂亚洲色色色| 色婷婷亚洲六月婷婷中文字幕| 丁香五月影院| 夜夜躁婷婷AV| 五月色影院| 婷婷五月成人| 亚洲艹网| 97色婷婷| 亚洲综合在线伊人婷| 日本五月婷婷| 五月天天综合网色婷婷| 丁香五月婷婷88在线| 久艹大香蕉| 国产av一区二区三区| 久久婷婷亚洲无码一起| 成人超碰Av| 99婷婷| 色约约视频一区二区三区四区五区| 激情六月丁香综合| 99久热| 日本A片一区| 天天色天天爽| 99自拍视频在线观看| 91综合色噜噜| 欧美VA在线| 人妻熟女一区二区AV| 婷婷操无码| 五月天丁香六月综合| 天天爽天天爽视频| 91男人资源站| 色婷婷基地| 风流少妇A片一区二区蜜桃| 久久精品五月天| 亚洲天天操| 久久R激情| 久久永久网址| 亚洲欧洲中文日韩久久AV乱码| 欧洲毛片基地c区| 91婷婷五月天嫩女| 欧美婷婷综合网| 婷婷丁香五月六月激情| 久久涩视频| 五月婷婷五月天激情视频| 丁香五月婷婷色情综合| 丁香五月婷婷色| 99视频色在线观看| 99这里都是精品6| 激情综合色五月丁香| www久久五月com| 五月天另类激情在线| 综合网色| Blackedraw视频一区二区| 五月丁香色婷婷婷基地| 粉嫩AV久久一区二区三区| 91在线日本| 思思热视频在线| 亚洲正能量欧美| 日韩精品二三区| 久久成人亚洲欧美电影| 色五月五月婷婷| 大香蕉视频婷婷| 狠狠xx| 综合色七七| 五月天色社区| 久久这里只有精彩| 五月丁香视频色色| 婷婷综合色网| 夜夜躁狠狠 | 99久久久国产大片| 北条麻妃伊人| 91婷婷丁香| 五月丁香六月激情综合网| 九九视频在线观看视频6 | 伊大人久久| 人人爽欧美婷婷久久久五月丁香| 成人版视频在线观看| 这里只有精品免费视频| 婷婷五月色網站| 大香蕉操操| 丁香五月天激情视频| 丁香五月天激情视频| site:wpjngj.com| 色欲五月丁香| 99热这里有精品| 插插五月天| 久久网址99热| 日日躁夜夜躁狠狠久久AV| 婷婷丁香成人五月天| 在线观看av网站| 丁香五月性| 国产在线另类五月婷婷| 久9视频| 日韩性视频| 九九热a| 99原创自拍视频在线观看| 99热这里只有精品中文字幕| 天天日,夜夜爽| 7777精品伊人久久久大香线蕉最新版| 日韩在线观看网址| 久色资源| 激情五月丁香六月综合AVXXXX| 性日本激情| 婷婷丁香五月天色色| 在线观看中文字幕亚洲| 激情五月天伊人影院| 99热在线精品播放| 久久婷婷草| 亚洲乱码日产精品BD| 九九在线精点品| 人人干人人操人人摸人人做| 五月激情四射婷婷丁香| 久久婷婷热| 久久月天堂| 色无码| 日韩啊啊啊| 日韩视频女神99| 青青草视频免费观看| 在线天堂9| 夜夜综合色| 五月天天天操天天爽夜夜操| 激情综合久久| 激情小说五月天社区丁香| 婷婷国产五月天17c| 精品国产AV色一区二区深夜久久| 综合色色网| 色伊人婷婷| 99视频| wwccc久久久| 成久综合视频| 99re这里只有精品国产99| 丁香五月婷婷偷拍| 狠狠色噜噜狠狠| 亚洲AV日韩AV永久无码网站| 啪啪五月综合| 天堂综合久久| 五月婷婷色播| 香蕉操亚洲| 91大神在线免费看视频全集男男一起操| 激情综合色婷婷啪啪六月天| 久9无码视频| 日韩无码色色| 成人免费高清在线播放| 激情5月婷婷| 激情综合啪啪| 9色在线| 亚洲五月婷| 婷婷六月天天| 日韩无码专区| 亚洲偷| 欧美性生交XXXXX无码小说| 久久思思热| 五月色网| 激情五月成年| 九九99男女视频在线观看| 亚洲不卡123| 一本狠婷婷综合| 色婷婷五月综合色婷婷| 激情五月,激情综合网| 婷婷综合色网| 精品九九在线观看视频| 国产精品国产VA片国产| 欧美成人在线观看| 亚洲在线成人| 另类天堂| 五月天婷婷青青草| 97欧美在线| 99热自拍| 少妇高潮呻吟A片免费看软件| 婷婷激情五月呦呦| 97婷婷狠狠久久综合9色| 超碰人人91| 婷婷永久在线| 丁香5月婷婷| 夜夜爽天天干| 97av在线视频| 97爱综合| 国产六月婷婷| 久色大| 婷婷五月天福利| 国产高清av黄色看片| 人人干天天舔| 丁香婷婷六月男男| 亚洲人成播放网站| 99re在线视频| 婷婷深爱网| 五月激情天| 亚洲视频99| 操操操B| 99热插| 美女va| 五月婷婷丁香网| 91久久久久久| 婷婷五月天丁香激情| 99久久婷婷| 五月婷婷无码专区| 99九九久久| 五月天天丁香婷婷| 九九热AV| 天天干天天拍| 五月天开心色色网| 久久人妻久久久久| 丁香六月啪啪啪| 丰满少妇猛烈A片免费看观看| 另类视频在线| 五月情婷婷| 国产成人网址| 国产精品丝| 人妻九九九九| 六月丁香综合| 三日本无码| 色 免费网站视频| 五月丁香婷婷成人网| 日本丁香五月| 99色婷婷视频| 亚洲天天操| 青柠影视免费高清电视剧| 99九九中文字幕视频| 99热精这里只有精品| 91成人视频| 久久se 综合网| 丁香六月啪啪| 五月丁香婷婷爱| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 婷婷五月蜜桃成人桃色丁香| 国产密乳av一区二区三区四区| 色五月婷婷五月天| 久久99热只有精品| 色婷婷久久| 久草九九| 色五月亚洲| 婷婷碰碰| 日本欧美国产| 影音先锋自拍网| 人妻久久久久久久久妻久久久久久久久| 五月丁香啪啪网| 午夜]香婷婷深深爱| 五月丁香六月婷婷在线小说视频| 成人片在线播放| 五月丁香精品| 99色综合网| 久热超碰91| 综合网啪| 中文字幕不卡+婷婷五月| 亚洲国产精品VA在线看黑人| 五月天全国最大成人网| 国产成人网| 欧洲永久精品| 成人国产欧美大片一区| 五月婷在线视频免费播放| 久99999热视频在线观看免费| 亚洲五月天综合色| 丰满老熟妇BBBBB搡BBB| 丁香五月网在线观看| 国产精品VIDEOSSEX久久发布| 色婷婷影院| 99性色| 深爱五月激情网| 在线不卡视频| 五月丁香成人版| 综合六月久久| 狠狠操天天干| 狠狠色婷婷7777久| 被男人添B超爽视频| 天天爱天天日| 久久婷婷九月国产精品| 色五月人妻| 久久六月天| 综合网色综合| 亚洲激情网| 婷婷五月天日本国产| 日日躁夜夜躁狠狠久久AV| 99久久综合网| 黄色AAAAAAA| 五月天综合在线观看视频| 琪琪色五月天| 五月婷婷激情久久| 日在线V视频在线播放| 91国产精品视频播放| 可以直接看的av| 久久婷婷网站| 91精品激情9| www.狠狠艹| 丁香六月婷婷色播| 国产精品18久久久| www.五月婷婷久久.com| 97自拍99| 成人无码精品1区2区3区免费看| 婷婷五月天六月| 日亚二欧美| 思思热在线播放| 大香蕉五月丁香| 色五月之第四色| 五月九九综合| 色婷婷综合网站| 色综合色综合网| 插逼综合网| 92久久精品一区二区| 色五月丁香网| 五月天色五月天| www.五月丁香| 亚洲黄色网址| 久久这里有精品| 日日操日日射| 色婷婷综合久久久久| 精品香蕉99久久久久网站| 色色com| 亚洲婷婷丁香五月在线| 丁香五月777| 欧美电影在线观看| 热99这就是精品视频| 午夜丁香五月天综合| 亚洲AV综合在线观看 | 99热只有| 人妻激情综合| 色播五月| 99亚洲无码| 欧美婷婷六月丁香综合色连续高潮抽搐| 欧美日韩国产成人在线| 成人无码精品1区2区3区免费看| 五月婷婷九九热| 亚洲五月综合色播| 国产成人+综合亚洲+天堂| 欧美成人网婷婷综合在线| 久99热| 五月婷婷综合社区| 丁香五月激情五月| 婷婷丁香91综合| 涩五月婷婷| 91大神操美女| 婷婷五月综合体验看| 成人电影丁香六月天| 五月婷婷内射网| 91色色色| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 色吧综合网| 丁香六月婷婷色XXXXX| 国产XXXX搡XXXXX搡麻豆| 综合大香蕉| 天天插天天插| 午夜爱爱网站| www久| 4399在线观看免费高清毛片| 精品国产一区二区三区四区阿崩| 色五月婷婷在线| 五月丁香色婷婷| 亚洲AV人人操| 五月色色色| 99这里都是精品| 性爱视频99| 丁香婷婷视频| 五月婷婷六月丁香色| 日日懆天天懆| 夜夜操,天天撸| 99热这里只有是亚洲国产| 久久久久久综合五月婷婷| 99r久久这里只有精品| 激情婷婷五月亚洲| 天干天天干天天天天天| 伊人综合网4| 日日爽日日操| 操嫩逼电影| 91九色国产熟女| 婷婷六月久久综合导航| 婷婷六月丁香欧美视频在线| 丁香激情网| 亚洲在线综合| 成人丁香| 欧美色五月| 久99999热视频在线观看免费| 8090在线影视少妇| 色婷婷啪啪综合网| 五月丁香六月激情综合| 婷婷五月深情丁香深爱日韩| 亚洲中文无码成人| 涩婷婷五月天| 激情综合网五月丁香| 九九99在线免费在线观看视频| 99ri在线观看视频| 亚洲日韩久久婷婷伊人| 超碰97久久| 久久婷婷成人综合色怡春院| 91视频免费后入强操| 成人网站av免费网站推荐| 五月丁香六月婷婷啪啪| 日本高清久| 操人91| 色狠狠伊人久久五月丁香| 乱抡小BB| 久久亚洲无码| 欧美槡BBBB槡BBB少妇| 成人精品网站在线观看| 婷婷久久久久| 99精品网站| 啊v视频在线观看| 五月丁香婷婷综合久久| 另类小说色婷婷| 激情婷婷丁香五月天| 激情小说婷婷| 热久久婷婷| 99精品在线播放| 婷久久久| 色的色综合| 亚洲这里只有精品| 五月激情综合网| 91综合视频在线| 婷婷丁香成人色综合| 超碰99热精品| 五月丁香狠狠地噜噜噜噜| 99熟女啪啪视频| 日韩免费视频| 久久久大香蕉| 色国产五月| WWW.99热| 激情视频综合| 丁香五月天成人| 丁香久久| 免费黄色AV| 激情五月天色婷婷综合| 丁香婷婷基地| 97欧美在线| 亚洲综合婷婷| 少妇高潮呻吟A片免费看软件 | 婷婷五月免费观看| 九九香蕉网| 丁香六月天婷婷| 天天爽—爽| 五月丁香六月综合激情| 超碰国产在线播放| 99小精品| 天天综合网在线| 亚洲有码在线视频| www.五月丁香av| 亚洲妇女熟BBW| 亚洲区视频| 亚洲成人五月| 色综合网页| 精品人妻久久久久久久| 免费无码毛片一区二区A片| 婷婷五月丁香基地在线视频官网| 久久婷婷五月天激情四射| 亚洲操B| 欧美六月| 亚洲色A| 丁香六月婷婷综合| 一级黄在线| 色播丁香五月婷婷操:屄| 99精品在线播放| 五月婷婷偷拍| 激情综合无码| 色婷久久| 9久久久久| 九九99热| 日韩无码成人电影| 丁香六月婷婷综情欧美| 思思热精品在线| 丁香九月久久| 综合性爱网| 欧美日韩成人在线观看| www.zbzhongsen.com| 婷婷永久在线| 丁香五月性爱| 99热精品一区| 猫咪伊人AV| 天天狠狠干| 久久久91精品| 五月天激情久久| 啪精品| 婷婷丁香五月网| 综合激情在线观看| 超碰在线免费| 狠狠狠狠免费| 五月天婷婷成人网| 天天日夜夜夜操操操操| 9999热在线| 另类小说五月天| 婷婷色九月| 婷婷丁香六月| 开心五月丁香婷婷| 狠狠色婷婷7777久综合| 色久女| 这里只有精彩小视频视频网站| 极品人妻VIDEOSSS人妻| 五月天色婷婷基地| 六月婷欧美| 天天干天天做| 久 久9 9 热 视 频| 亚洲免费观看高清完整版AV线| 99ri国产在线| 亚洲狠狠婷婷综合久久久| 碰人人97| www.99热| 激情综合丁| 日韩精品一区二区亚洲AV观看| 丁香色五月天| 26uuu欧美宗合| 97干视频| 五月丁香狠狠爱婷婷综合| 99.N在线视频| 99这里只有精品国产| 超级碰 久久9| 亚洲av网站| WWW.99热| 91久久综合亚洲噜噜成人在线 | 亚欧州精品视频| 婷婷丁香成人| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 99爱精品视频| 九月婷婷久久| 开心五月网 | 国产精产国品一二三在观看| 狠狠干在线| 五月丁香婷婷无码中文| 9久热在线视频| 91欧美| 美女妹子后射视频网站在线观看| 怡红院 久久| 久久女人九九| 国产精品天天狠天天看| 99黄色性生活| 噜噜国产| 五月丁香婷婷AV天堂| 第五婷婷伊人丁香色| 95精品区一区二| 六月丁香激情网| 五月天婷婷激情综合| 激情婷婷内射| 日韩性视频| 欧美啪啪五月天| 丁香五月五月婷婷欧美大香蕉| 狠狠综合久久| 色色色五月婷| 狠狠色噜噜狠狠狠888| 人妻性爱| 色色婷婷五月天| AV成人在线播放| 九九色中文| 七七婷婷综合| 香蕉久久av一区二区三区| 99热99在线| 97碰人人操| 激情内射p| 婷婷综合五月色播| 九九草热在线观看| 狠狠操天天操综合| 亚洲亚洲激情| 亚洲 25P| 五月丁香好婷婷姑娘综合网| 狠狠狠婷婷五月综合| 丁香色婷婷| 色色色国产| 五月丁香成人| 日日噜噜夜夜狠狠久久丁香六月| 一月婷婷色色| 91综合国免费久入| 91狠狠色丁香婷婷综合久久精品| 色碰碰| 色五婷婷| www.久久久久| 激情丁香婷婷六月天| 18av天堂| 丁香五月婷婷狠狠色| 亚洲激情在线| 激情五月深爱五月| 99热精品网| 四五月婷婷| 思思精品久久艹| 丁香色情五月综合网站| 久久A区B区| 久久久久思思热| 亚洲综合色色| 日韩高清成人| 丁香五月偷拍| 九九无码AV| 日噜噜色| 九九热99熟女| 激情五月激情综合俺也去婷婷小说| 色五月婷婷五月丁香五月激情五月视频| 99re热精品视频国| 99色色网站| 婷婷丁香五月六月激情| 婷婷六月激情在线视频| 激情色色色| 日韩啪| 色999亚洲人成色| 少妇高潮呻吟A片免费看软件| 日韩成人AV在线| 亚洲五月婷| 狠狠婷婷色| 夜色综合网| 久久99网站| 欧美韩日AAA网站| 狠狠狠人妻| 99啪啪视频| 人人干人人操人人摸人人做| xx人人xx| 97久久视频| 涩涩激情五月婷婷| 五月天婷婷色| 九九九九九无码| 99er热精品视频| 中美日韩成人在线| 97caop| 五月丁香婷婷婷激情爱爱| 婷婷五月播| 激情五月婷婷老师| 国产成人亚洲综合A∨婷婷| 激情六月综合| 丁香婷婷综合影院| 99亚色色色| 97色色综合| 婷婷综合网伊人| 五月天成人免费视频| 国产成人精品一区二三区熟女在线 | 日韩黄色中文字幕| 操逼视频一区| 六月婷婷色宗合| 五月婷啪啪| 九九综合久久| 无码动漫AV| 欧洲亚洲最新精品| 国产无人区大片| 青青草护士中出内射-欧美电影在线天堂新版 | 人人操人人添人人摸97| peg 2区三区四区的| 99爱爱网| 丁香五月天操B| 99re在线视频精品,这里只有精品18,| 亚洲色亚洲精品| 在线日韩视频| 成人五月天丁香| 色综合色综合色综合| 日本欧美成人片AAAA| 婷婷综合在线视频| 五月花丁香婷婷| 亚洲色五月| 99热免费精品| 舔色婷婷| 伊人激情网| 激情影院免费视频婷婷五月天| 五月丁香啪啪综合| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 婷婷99中文字幕| www.开心激情| 少妇2做爰HD韩国电影| 丁香六月啪啪| 99视频久久| 婷婷干五月综合在线播放| 伊人五月婷婷| 九九热短视频在线观看| 成人超碰Av| 老师的粉嫩小又紧水又多A片视频| 激情综合国产| 五月天偷拍| 爆乳熟女-区二区三区| 国产在这里只有精品| 久久婷婷夜| 五月婷婷综合在线视频小说| 99ree6| 婷婷色色综合激情| 丁香五月天啪啪| 色综合天堂| 婷婷五月天影院| 九九色天堂| 日日操夜夜爽| 亚洲一级AV在线免费播放| 丁香五月天论坛| 看逼中文字幕| 天天草天天摸| 亚洲精品影视| 夜精品无码A片一区二区蜜桃| wwccc久久久| 9精品国产在热久久| 丁香五月六月综合激情| 午夜激情婷婷| 99久久国产宗和精品1上映| 日日婷婷不卡| 性爱五月婷婷| 天天狠天天叉| 亚洲、热| 激情五月,激情综合网| 五月婷婷久久综合| 激情综合五月.....| 婷婷五月成人社区| 婷婷久久亚洲| 天天cha成人综合网| 成人AV网站在线| 色色日本| 色永久| 亚洲综合成人网| 丁香六月婷婷色XXXX| 夜夜爽天天爽| 蜜臀A∨在线水帘洞| 亚洲一二三网| 色五月婷婷久久| 久久人妻情侣| 色99在线视频| 校园春色亚洲色| 久热人妻| www.亚洲激情| site:pzdcoin.com| 狠狠久久婷| 97在线精品| 深爱激情综合| 99热99免费| 久操福利| 五月停停99| 天天日夜夜爽| 天天日日夜夜| 久热最新视频| 激情五月天婷婷图| 超碰中文字幕在线| 免费无码毛片一区二区A片| 26uuu欧美| 色久免费| 日日操夜夜爽白洁| 欧美超级视频97| 五月婷婷六月激情| 色偷偷五月天| 手机旧版看人妻1025| 99re思思热这里| 婷婷色影院| 婷五月天丁香婷五月| 亚洲精品又粗又大又爽A片| 五月丁香大相交| 欧美啄木乌丝袜人妻系列| 婷婷激情五月天网站| 五月丁香六月婷婷成人| 色九九九综合| 大香焦啪啪啪| 天天日天天插| 日韩AAAAA| 91黄址| 天天综合色| 美女美女美女三级色天天天天天| 综合亚洲五月天| 九九热中文| www,com,五月色色| YW无码| 激情综合网激情五月丁香五月俺也去| 久99| 99九九久久| av九九| 97久久草草超级碰碰碰| 丁香五月成人婷婷| 精品久久久人妻| 狠狠操天天日| 天天插天天很| 99热久只有精品首页| 久热这里只有精品6官网亚洲| 日本系列_4页_777FP| 五月婷婷丁香综合,亚洲天堂| .青娱乐天天操B| 三年高清大片免费观看国语| 九九热精品| 九九这里只有精品| 丁香婷婷色五月| 超碰精品在线| 丁香五月偷拍| 亚洲日韩一页精品发布| 国产偷人爽久久久久久老妇APP| 思思热99热| 五月天综合在线| 欧美日韩999| 99精品偷自拍| 无码激情AAAAA片-区区| 风流少妇A片一区二区蜜桃| 欧美内射AAAAAAXXXXX| 99在线精品免费视频| 中文成人在线| 9国产在线视频| 激情综合五月丁香六月婷婷| 东北熟女高潮99综合99| 一婬一伦一区二区三区| 狠狠综合色网| 思思热久久艹| 激情丁香久久| 久热最新视频| 亚洲色在线观看| 天天综合色丁香| 久久久97| 成人国产欧美大片一区| 日操熟女| 婷丁香五月天| 国产片天天爽夜夜爽| 五月婷婷五月天天| 婷婷色五月色| 色综合色五月| 国产午夜精品AV一区二区麻豆| 国精产品一区一区三区免费视频 | 天天色天天噜| 天天干天天av天天射| 五月天色色色网| 亚洲综合999| 那里有AV网址| 婷婷五月天激情AV影院| 人人摸人人摸| 99久久6| 极品人妻VIDEOSSS人妻| 人人操超碰| 99日精品视频| 五月丁香天天| 丁香五月婷婷香| 九九热在线精品| 色99久草在线| 狠狠香蕉| 99热这里只有精品一区| 99九九99九九九视频精彩| www.久久99| 激情五月婷婷她| 五月丁香| 99久久成人| 天天射综合网天天插| 婷婷激情丁五月| 五月天天天天天天天天天天天天天天天婷婷婷 | 999热视频精品99免费在线| 中文字幕网站在线观看| 99热在线精品播放| 99色1| 色色网站在线| 五月丁香六月婷综合成人综合| 最近中文字幕2019视频1| 久久青草国| 久久久久久综合88| 亚洲国产色色| 超碰在线观看9| 久久AAAA片一区二区| 67194线路二在线观看| 婷婷色丁香五月| 婷婷六月中文字幕| 色综合色五月| 成人国产网站在线免费看| 99riAV国产精品视频| 欧美性丁香色色五月天综合爱爱| 五月综合丁香婷婷| 内射在线CHINESE| 操B五月天| 欧美色欲色欲天天天www| 亚洲中文乱字字幕在线永久| 五月天大香焦| 婷婷五月天色综合翘| 色色婷婷丁香五月天| 新激情五月天| av免费人人| 久久综合九色综合97婷婷| 色婷婷五月天在线观看| 国产干逼片| 男人天堂亚洲综合| 色婷婷综合网| 九九爱激情| 丁香六月婷婷激情综合| WWW.桔色成人.COM| 超碰v| 超碰碰碰碰| 99精品在这里| 91黄色五月天视频| 青青热视频| 五月婷九月| 97色色婷婷| 97精品自拍| www99精品亚| 伊人狠狠操| 日本久久天堂| 五月天激情综合网俺也去| 亚洲色色香蕉| 亚洲黄色操逼| 日本在线视频手机播放五月婷| www九九热| 婷婷久久影院| 这里只有精品视频| 欧美性生交XXXXX无码小说| 性爱网五月天| 亚洲激情婷婷| www一起操在线观看| 5月丁香六月情| 丁香六月激情综合| 99热国产在| 色色色色热| 久久99这里只有精品| 91九色熟女| 久久多色| 色情五月天丁香社区| 欧美色色色色色色色色色色| 色久天| 狠狠久久婷婷| 99热精品一区| 97碰碰九九视频| 亚洲激情.com| 九九九干精品| www.99热这里只有精品| 九九艹女| 色婷婷色99国产综合精品| 久久婷鲁| 五月婷婷亚洲色视频| 日日操夜夜操中国无码| 五月天色影院| 色开心五月丁香| 丁香婷婷九月| 97干在线观看| 色婷网| 99热这里只有精品手机在线观看| 久久久性爱视频| 色五月婷婷在线视频| 欧洲第一无人区观看| 久久网思思| 久久受www免费人成| 5五月综合网亚洲| 91好好热日本在线| 26uuu| 婷婷性爱| 五月婷婷操操| 色五月激情五月开心五月| 人妻激情视频| 亚洲色五月| 欧美色骚婷婷五月天| 久超免费视频| 色噜噜狠狠色综无码久久合欧美 | www.久久| 色综合综合综合| 66精品成人免费网站在线观看| 婷婷五月综合免费在线| 婷婷色五月在线视频| 亚洲网视屏| 国产成人综合亚洲| 五月情婷婷| 亚洲综合在线视频| 97精品综合久久| 丁香五月天天久久综合小说| 五月天激情亚洲| caop在线视频| 99热色精品| 涩综合在线 | 国产一级黄色影片,| 六月丁香深深爱| 丁香综合久久| 色婷婷亚洲婷婷| 求可以看的AV网址| 中文在线视频久9| jiZZdr| 99热亚洲精品66| 91porn一起草| 人人人操 超碰| 美女激情婷婷| 五月丁香色婷基地综合久久| 成人在线网址| 美女主播野战视步页| 狠狠爱激情网| 极品人妻VIDEOSSS人妻| 夜色综合网| 免费99情趣网视频| 91丨九色丨熟女丰满| 国产99久| 九九久久综合| 中文av网站| 丁香五月天激情婷婷丁香六月| 色五月av| 色综合丁香| 精品一二三区久久AAA片| 天天天天天久久久久久| 亚洲国产精品成人免费一区久久久在线观看AAAA | 欧美群妇大交乱婬网| 狠狠干五月丁香综合网| 黄久久久| 婷婷五月天成人视频| 99re热在线视频| 丁香六月无码播放| 天天搞夜夜叫| 婷婷五月六月| 欧美色男人网站| 色色色99| 色99热| 天天色天天爽| 91色色色| 狠狠爱婷婷丁香| 一本色综合色| 日本99视频| 噜啊噜在线| 深爱激情婷| 九九热视频思思| 秋霞黄色一级久久| 99人人干| txt五月激情四射网综合俺也来了 五月天婷婷丁香人人操91 | 色婷婷影院| 免费观看的婷婷五月视频在线| 99精品爱| 婷婷久久婷婷色五月| 亚洲在线成人| 久8色色| 久9久成人精品视频| 久久在线视频免费观看| 久久ww| 99ri在线| 九九热这里只有精品6| 婷婷五月天AV| 国产在这里只有精品| 91黄操| 99免费| 婷婷色色婷婷| 五月天com| 五月天久久综合婷婷丁香| caopeng超碰| 91丨九色丨白浆| 久久婷婷五月综合伊人| 五月丁香成人| 婷婷丁香五月天熟女丝袜| 亚洲欧洲一二| 亚洲熟女乱色综合亚洲网站| 色五月婷婷影视| 人人妖人人97| 亚洲AV成人精品网站在线播放| 五月婷婷丁香日韩在线| 另类少妇人与禽zOZZ0性伦| 狠狠色综合网| 99热在线观看| www.婷婷,com| 五月婷中文字幕| 九九视频在线| 伊人在线视频| 大香蕉伊人久久| 精品国产一区二区三区四区阿崩| 丁香婷婷狠狠97| 丁香五月婷婷少妇| 丁香五月婷婷激情蜜桃| 超碰国产AV| 99久久综合| 色五月婷婷中文字幕在线观看| 五月丁香久久综合| 精品九九视频在线观看| 很很干夜夜干| 久久爱婷婷| 色欲色香综合网| 国产熟妇的荡欲午夜视频| 丁香婷婷性爱| 丁香五月影院| 亚洲综合欧美色丁香婷婷888月图片 | 99re热精品在线视频| 亚洲婷婷丁香五月亚洲| 丁香婷婷五月天亚洲| 五月天五月婷五月激情网| 人人草人人看| 夜夜爽天天爽| 九九热超碰| 丁香五月婷婷久久久| 999热在线视频| 色综合久久伊伊婷婷五月| 五月婷婷欲色| 97丁香婷婷| 亚洲成人AV高清字幕| 欧美三9久九观看| 久久天堂色| 欧美一级色| 69色色视频| 日本狠狠色| 免费无码毛片一区二区A片| 久久婷婷五月激情综合| 五月天婷亚洲天综合网综合| 丁香激情合作五月| 思思99久久| 少妇水多A片太爽了| 婷婷在线中文字幕| 99久久网站| 九九亚洲小视频| 久久久久久久97| 99九九这里有免费视频| 伊人碰碰婷婷| www.精品99| www久久久| 99天堂在线观看免费视频| 亚洲综合色色| 五月激情偷拍婷婷| 婷婷五月丁香伊人| 99热爱爱干干日| 丁香五月停停av| 六月99天天婷婷激情综合| 九热视频这里只有精品| 婷婷综合激情| 五月丁香婷婷狠狠操| 色玖玖综合网| 久久久五月四色| 五月婷婷五月天| 丁香五月ⅤA久久久| 日本色频| 天天草天天爱| 久99久在线| 人人97操| 91欧美| 99热这里只有精品2| 被强行糟蹋的女人A片| 欧美婷婷丁香五月社区| 99视频这里只有久久精品| 啊v视频在线观看| 欧美天堂久久| 一级A片天天操夜夜操| 99热官网| 色频玖玖五月天| 丁香美女五月天婷婷| 欧洲综合一区| 色五月激情综合| 91丨九色丨大屁股| 超碰在线免费9| 六月丁香啪啪啪| 综合网视频| 欧洲综合一区| Av性爱网| 婷婷五月天开心网| 99在线热| 伊人久久大香网| 伊综合蕉| 97婷婷五月天| 99视频免费播放| 五月天色婷婷图片| 99re免费精品视频| 91精产品自偷自偷综合| 五月激情六月宗合| 国产免费av网站| 成人精品一区日本无码网| 久久9视频欧美| 超碰免费99| 中文字幕第四色.999| 98热精品| 国内精品玖玖| 97色色综合| 3DAV亚洲香蕉久久 一区二区| 久久五月激情| 色在线免费观看| 九九成人精品| 五月天色小说|