久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

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

嵌入式死鎖防治指南:從原理到建立完整防護(hù)體系 2. 死鎖的本質(zhì)不是bug是資源分配的“死局”先想一個(gè)生活場(chǎng)景一條很窄的單行橋上兩輛車(chē)迎面相遇誰(shuí)都不肯倒車(chē)結(jié)果誰(shuí)都過(guò)不去。如果兩輛車(chē)一直僵持那這條橋就徹底廢了。操作系統(tǒng)里的死鎖Deadlock就是這個(gè)味道——一組進(jìn)程線程各自占著一些資源又在等對(duì)方手里的資源而且誰(shuí)都不主動(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è)人的筷子都被別人拿著大家大眼瞪小眼誰(shuí)也沒(méi)法繼續(xù)吃。死鎖的本質(zhì)不是程序邏輯寫(xiě)錯(cuò)了雖然邏輯設(shè)計(jì)不當(dāng)往往是誘因而是“資源分配策略”和“進(jìn)程推進(jìn)順序”共同作用下的系統(tǒng)性僵局。它不同于普通的程序崩潰——崩潰至少是“有個(gè)錯(cuò)誤被逮住了”而死鎖是“所有進(jìn)程看起來(lái)都活著但沒(méi)有任何一個(gè)能繼續(xù)推進(jìn)”。這就是為什么嵌入式系統(tǒng)里死鎖問(wèn)題特別讓人頭疼現(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í)器這些資源天然具有互斥性。如果資源可以無(wú)限共享那根本不會(huì)因?yàn)椤罢加谩倍a(chǎn)生等待。第二個(gè)條件持有并等待Hold and Wait進(jìn)程已經(jīng)占著一些資源又在等待別的資源。這個(gè)過(guò)程不會(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í)是可以被剝奪的比如通過(guò)優(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ì)中最容易通過(guò)資源排序來(lái)破壞的一個(gè)條件。把這四個(gè)條件記成一句話互斥、持有等待、不可剝奪、循環(huán)等待。只要打破任意一個(gè)死鎖就不可能成立。備考時(shí)遇到判斷題或分析題第一件事就是拿這四個(gè)條件去套題干場(chǎng)景。2.2 一個(gè)最小死鎖示例拿串口和DMA通道說(shuō)事嵌入式系統(tǒng)里最常見(jiàn)的死鎖場(chǎng)景之一就是多個(gè)任務(wù)搶共享外設(shè)資源。我寫(xiě)一個(gè)極簡(jiǎn)的偽代碼示例幫你直觀感受死鎖的誕生過(guò)程// 任務(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等待串口誰(shuí)都不松手。這個(gè)例子在真實(shí)嵌入式系統(tǒng)中很常見(jiàn)——特別是用多個(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)用了哪種策略。我用一張表格快速梳理一下策略類(lèi)型核心思路優(yōu)點(diǎn)缺點(diǎn)典型應(yīng)用場(chǎng)景死鎖預(yù)防Prevention從源頭破壞四個(gè)必要條件之一簡(jiǎn)單、確定性高資源利用率偏低小型嵌入式裸機(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ù)庫(kù)系統(tǒng)3.1 死鎖預(yù)防從設(shè)計(jì)上絕掉后路預(yù)防的核心思想特別簡(jiǎn)單讓四個(gè)必要條件至少一個(gè)永遠(yuǎn)不成立。具體手法如下破壞互斥條件讓資源變成“可同時(shí)共享”。但嵌入式系統(tǒng)里串口、I2C總線、Flash寫(xiě)入這類(lèi)資源天生就是互斥的不可能讓兩個(gè)任務(wù)同時(shí)寫(xiě)同一個(gè)串口所以這個(gè)條件實(shí)際上很難破壞。這也是為什么“破壞互斥”在實(shí)際系統(tǒng)中極少被采用——資源本身的物理屬性決定了它必須互斥。破壞持有并等待條件要求進(jìn)程在運(yùn)行前一次性申請(qǐng)所有需要的資源申請(qǐng)不到就一個(gè)都不拿。這種“全有或全無(wú)”的分配方式實(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可以通過(guò)優(yōu)先級(jí)繼承機(jī)制或資源重置來(lái)剝奪。但注意剝奪資源可能造成數(shù)據(jù)丟失或狀態(tài)不一致比如一個(gè)正在寫(xiě)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)無(wú)法形成。只要每個(gè)任務(wù)都遵循“先拿低編號(hào)資源再拿高編號(hào)資源”那所有等待方向都是一致的不可能出現(xiàn)“P1等P2P2又等P1”的循環(huán)。我對(duì)資源編號(hào)法的評(píng)價(jià)是它簡(jiǎn)單、可操作性強(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寫(xiě)鎖 // 所有任務(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ā)問(wèn)題轉(zhuǎn)化為順序問(wèn)題”在工程上非常香。實(shí)際嵌入式開(kāi)發(fā)里很多成熟的RTOS方案比如基于信號(hào)量或互斥鎖的資源管理都會(huì)建議開(kāi)發(fā)者對(duì)共享資源做編號(hào)管理目的不是別的就是防止死鎖。3.2 死鎖避免銀行家算法與安全狀態(tài)死鎖避免的代表算法就是著名的銀行家算法Bankers Algorithm。它的思路有點(diǎn)像銀行貸款審批銀行在放貸前要確認(rèn)這筆錢(qián)貸出去后系統(tǒng)里還剩下足夠的錢(qián)能讓所有客戶最多完成他們的需求。如果可以就放貸如果不可以就拒絕免得客戶最后還不上錢(qián)把銀行拖垮。對(duì)應(yīng)到操作系統(tǒng)里資源就是“錢(qián)”進(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í)行序列就說(shuō)明系統(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值很麻煩。檢查算法本身有一定開(kāi)銷(xiāo)在實(shí)時(shí)性要求高的系統(tǒng)中這個(gè)開(kāi)銷(xiāo)不可忽視。嵌入式系統(tǒng)資源種類(lèi)繁多每個(gè)任務(wù)可能要鎖串口、鎖I2C、鎖DMA、鎖Flash、鎖內(nèi)存池資源矩陣規(guī)模一大更新和檢查的成本就上去了。所以我個(gè)人建議考試要會(huì)用銀行家算法做題主要是安全序列推導(dǎo)但做嵌入式工程時(shí)優(yōu)先考慮資源編號(hào)法這類(lèi)預(yù)防手段。銀行家算法更適合通用操作系統(tǒng)、數(shù)據(jù)庫(kù)這類(lèi)資源種類(lèi)少但并發(fā)度高的場(chǎng)景。3.3 死鎖檢測(cè)與恢復(fù)事后的“救火隊(duì)”檢測(cè)與恢復(fù)策略的思路是不預(yù)防、不避免讓死鎖發(fā)生然后事后發(fā)現(xiàn)并救回來(lái)。系統(tǒng)在運(yùn)行過(guò)程中周期性檢查“當(dāng)前資源分配圖”是否存在環(huán)路如果存在環(huán)路說(shuō)明有死鎖就啟動(dòng)恢復(fù)機(jī)制。環(huán)路檢測(cè)的關(guān)鍵是維護(hù)一張“資源分配圖”Resource Allocation Graph圖中包含兩類(lèi)節(jié)點(diǎn)進(jìn)程節(jié)點(diǎn)和資源節(jié)點(diǎn)。當(dāng)一個(gè)進(jìn)程申請(qǐng)一個(gè)資源時(shí)畫(huà)一條從進(jìn)程指向資源的“請(qǐng)求邊”當(dāng)一個(gè)進(jìn)程占有一個(gè)資源時(shí)畫(huà)一條從資源指向進(jìn)程的“分配邊”。如果圖中存在環(huán)就說(shuō)明死鎖發(fā)生了。恢復(fù)手段一般有三種直接終止一個(gè)或多個(gè)進(jìn)程簡(jiǎ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è)根本無(wú)法“回滾”。人工介入嵌入式系統(tǒng)出現(xiàn)死鎖時(shí)很多時(shí)候只能靠看門(mén)狗Watchdog復(fù)位系統(tǒng)。這也算是一種“恢復(fù)”——代價(jià)是整個(gè)系統(tǒng)重啟實(shí)時(shí)性任務(wù)全部被打斷。說(shuō)實(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里死鎖問(wèn)題的呈現(xiàn)方式和通用OS還不太一樣額外疊加了一個(gè)“優(yōu)先級(jí)反轉(zhuǎn)”P(pán)riority Inversion的坑。這塊內(nèi)容考試?yán)锝?jīng)常和死鎖放一起考因?yàn)樗鼈z在癥狀上很像都是任務(wù)卡住不動(dòng)。但處理方式完全不同我在這里單獨(dú)拎出來(lái)講清楚。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一直無(wú)法推進(jìn)鎖就一直無(wú)法釋放T1就一直卡死。從表面上看這就像死鎖高優(yōu)先級(jí)任務(wù)T1在等一個(gè)永遠(yuǎn)可能等不到的鎖。但嚴(yán)格來(lái)說(shuō)這不是死鎖——因?yàn)檫@里沒(méi)有“循環(huán)等待”T3并沒(méi)有在等T1的資源它只是被T2搶占導(dǎo)致無(wú)法釋放鎖。這是一種“優(yōu)先級(jí)反轉(zhuǎn)”問(wè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ù)長(zhǎng)期搶占導(dǎo)致高優(yōu)先級(jí)任務(wù)餓死”的惡性現(xiàn)象。需要注意的是優(yōu)先級(jí)繼承解決的是“反轉(zhuǎn)”問(wè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)等待”問(wèn)你這是什么問(wè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后串口”的寫(xiě)法。代碼Review時(shí)要重點(diǎn)盯這一條。建議二鎖的持有時(shí)間盡量短。鎖的范圍越小、持有鎖的時(shí)間越短發(fā)生死鎖和性能瓶頸的概率就越低。一個(gè)常見(jiàn)的反面案例是有人在中斷處理里加鎖或者在長(zhǎng)時(shí)間計(jì)算過(guò)程中一直持有鎖這些都會(huì)讓系統(tǒng)變得極其脆弱。中斷上下文里一般只做標(biāo)記或數(shù)據(jù)拷貝不要直接加鎖等待。建議三使用超時(shí)機(jī)制給鎖加上“護(hù)欄”。很多RTOS的互斥鎖API支持超時(shí)參數(shù)比如等待50ms、100ms等。給鎖等待加上超時(shí)后即使因?yàn)槟承┎豢深A(yù)知的原因真的發(fā)生了死鎖任務(wù)也不會(huì)無(wú)限期卡死而是會(huì)超時(shí)返回錯(cuò)誤碼這樣系統(tǒng)就有機(jī)會(huì)進(jìn)行恢復(fù)或上報(bào)異常。雖然超時(shí)機(jī)制并不能根除死鎖但它能把“死局”變成“可察覺(jué)、可恢復(fù)的異常”在工程里特別實(shí)用。4.3 用信號(hào)量與互斥鎖的區(qū)別再看一遍死鎖嵌入式系統(tǒng)里還有一類(lèi)并發(fā)原語(yǔ)叫信號(hào)量Semaphore。信號(hào)量分二值信號(hào)量和計(jì)數(shù)信號(hào)量?jī)煞N二值信號(hào)量和互斥鎖在用法上特別像但兩者有本質(zhì)區(qū)別互斥鎖Mutex有“所有權(quán)”概念誰(shuí)加的鎖只能由誰(shuí)釋放適合保護(hù)共享資源。信號(hào)量Semaphore沒(méi)有所有權(quán)概念一個(gè)任務(wù)釋放信號(hào)量另一個(gè)任務(wù)可以獲取信號(hào)量常用于任務(wù)間“事件通知”或“計(jì)數(shù)資源管理”。從死鎖風(fēng)險(xiǎn)看互斥鎖必須要關(guān)注“加鎖順序”否則死鎖概率很高信號(hào)量由于沒(méi)有所有權(quán)它更多用于“生產(chǎn)者-消費(fèi)者”模型死鎖風(fēng)險(xiǎn)相對(duì)低一些但依然存在比如兩個(gè)任務(wù)都等待對(duì)方發(fā)信號(hào)量就會(huì)形成“活鎖”式的僵局。我見(jiàn)過(guò)不少嵌入式開(kāi)發(fā)新手在項(xiàng)目里不加區(qū)分地混用互斥鎖和信號(hào)量結(jié)果出現(xiàn)問(wèn)題后很難排查。我的建議是保護(hù)共享資源優(yōu)先用互斥鎖任務(wù)間通信或事件通知優(yōu)先用信號(hào)量。這樣邏輯清晰出問(wèn)題也好定位。5. 死鎖排查一個(gè)真實(shí)的嵌入式故障分析過(guò)程前面講了原理和預(yù)防手段但真實(shí)項(xiàng)目中死鎖問(wèn)題往往不會(huì)在你寫(xiě)完代碼的當(dāng)下就暴露出來(lái)。它通常是在某次壓力測(cè)試、某次極端時(shí)序下突然出現(xiàn)的。下面我分享一個(gè)模擬項(xiàng)目X中“系統(tǒng)間歇性卡死”的排查實(shí)錄幫你理解真實(shí)場(chǎng)景里的死鎖長(zhǎng)什么樣。5.1 故障現(xiàn)象與初步判斷模擬項(xiàng)目X是一套基于某RTOS的嵌入式數(shù)據(jù)采集系統(tǒng)里面有4個(gè)主要任務(wù)采集任務(wù)C負(fù)責(zé)從傳感器讀取數(shù)據(jù)通過(guò)DMA搬運(yùn)到內(nèi)存然后通過(guò)串口發(fā)送。顯示任務(wù)D負(fù)責(zé)把采集到的數(shù)據(jù)在屏幕上刷新。存儲(chǔ)任務(wù)S負(fù)責(zé)把壓縮后的數(shù)據(jù)寫(xiě)入外部Flash。通信任務(wù)N負(fù)責(zé)通過(guò)以太網(wǎng)口上報(bào)數(shù)據(jù)。某天測(cè)試時(shí)發(fā)現(xiàn)系統(tǒng)偶爾運(yùn)行十幾分鐘后所有任務(wù)全部停住串口不再輸出屏幕畫(huà)面定格看門(mén)狗沒(méi)有觸發(fā)板子“假死”。當(dāng)時(shí)第一反應(yīng)是“系統(tǒng)卡在死循環(huán)里了”。但用調(diào)試器掛上去一看發(fā)現(xiàn)各個(gè)任務(wù)都停在lock調(diào)用上CPU占用率卻不為零——這說(shuō)明不是死循環(huán)而是多個(gè)任務(wù)在互相等待鎖。我立刻開(kāi)始抓資源申請(qǐng)順序。通過(guò)調(diào)試器查看每個(gè)任務(wù)當(dāng)前持有的鎖和正在等待的鎖很快就還原出真實(shí)的死鎖鏈路任務(wù)C持有串口鎖正在等Flash寫(xiě)鎖任務(wù)S持有Flash寫(xiě)鎖正在等串口鎖。兩個(gè)任務(wù)互相等環(huán)形成了。這就是教科書(shū)級(jí)別的死鎖。5.2 根因分析為什么之前沒(méi)被發(fā)現(xiàn)問(wèn)題根因是任務(wù)C和任務(wù)S的加鎖順序不一致。任務(wù)C的代碼路徑里是先鎖串口、再鎖Flash而任務(wù)S的代碼路徑里是先鎖Flash、再鎖串口。正常情況下兩個(gè)任務(wù)同時(shí)運(yùn)行且恰好“交錯(cuò)申請(qǐng)”的概率不高所以前期測(cè)試沒(méi)暴露。但在壓力測(cè)試中數(shù)據(jù)量增大任務(wù)C和任務(wù)S并發(fā)執(zhí)行的頻率大幅提升死鎖觸發(fā)概率就上來(lái)了。這也解釋了為什么死鎖問(wèn)題最怕“偶現(xiàn)”——它和時(shí)間、負(fù)載強(qiáng)相關(guān)單次功能測(cè)試往往覆蓋不到。我們?cè)诖aReview階段沒(méi)有嚴(yán)格要求“全局統(tǒng)一資源編號(hào)”所以在設(shè)計(jì)階段就埋下了隱患。5.3 解決方案與經(jīng)驗(yàn)沉淀我當(dāng)時(shí)的修復(fù)方案很簡(jiǎn)單但很有效給共享資源定義全局編號(hào)規(guī)定任務(wù)C和任務(wù)S都必須按“串口鎖 - Flash寫(xiě)鎖”的順序申請(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)一加鎖順序。很多死鎖問(wèn)題是“設(shè)計(jì)階段不統(tǒng)一、寫(xiě)代碼時(shí)各寫(xiě)各的”造成的。如果項(xiàng)目里有多個(gè)人并行開(kāi)發(fā)一定要在資源鎖的使用規(guī)范上達(dá)成一致最好寫(xiě)在編碼規(guī)范里。經(jīng)驗(yàn)三引入“鎖超時(shí)”作為源碼級(jí)保護(hù)。給所有l(wèi)ock調(diào)用加上超時(shí)參數(shù)一旦超時(shí)就記錄日志并嘗試恢復(fù)。這樣即使預(yù)防措施沒(méi)到位問(wèn)題也能被快速定位不至于在現(xiàn)場(chǎng)“假死”時(shí)無(wú)從下手。另外補(bǔ)充一點(diǎn)在嵌入式系統(tǒng)里死鎖伴隨的常見(jiàn)癥狀往往是“任務(wù)無(wú)響應(yīng)、看門(mén)狗未觸發(fā)”。很多人看到這種現(xiàn)象會(huì)先懷疑中斷或任務(wù)優(yōu)先級(jí)配置但如果你能在調(diào)試器里看到多個(gè)任務(wù)卡在lock上那基本可以直接鎖定死鎖方向。6. 死鎖考點(diǎn)拆解與備考做題技巧最后這部分專門(mén)服務(wù)備考計(jì)算機(jī)四級(jí)嵌入式的同學(xué)。死鎖在考綱里屬于“操作系統(tǒng)原理”的難點(diǎn)模塊出題形式以選擇、判斷、簡(jiǎn)答為主偶爾會(huì)有“安全性分析”類(lèi)的大題。我結(jié)合真題風(fēng)格梳理了幾個(gè)高頻考點(diǎn)和做題技巧。6.1 高頻考點(diǎn)清單考點(diǎn)一死鎖的四個(gè)必要條件。題目通常是“以下哪個(gè)條件不是死鎖的必要條件”或者“下列哪種情況不屬于死鎖的四個(gè)必要條件之一”。這類(lèi)題的干擾項(xiàng)很喜歡設(shè)置“饑餓”“活鎖”“優(yōu)先級(jí)反轉(zhuǎn)”等概念你需要把死鎖和這些相鄰概念嚴(yán)格區(qū)分開(kāi)??键c(diǎn)二死鎖預(yù)防的四種方法。核心是每種方法破壞哪個(gè)條件。比如“資源一次性申請(qǐng)”對(duì)應(yīng)破壞“持有并等待”“資源編號(hào)排序法”對(duì)應(yīng)破壞“循環(huán)等待”“允許搶占”對(duì)應(yīng)破壞“不可剝奪”。考點(diǎn)三銀行家算法的安全序列推導(dǎo)。給你一張進(jìn)程-資源需求表讓你判斷系統(tǒng)是否安全以及求一個(gè)安全執(zhí)行序列。這類(lèi)題目看起來(lái)復(fù)雜但只要有固定的解題套路模擬分配并反復(fù)掃描就能穩(wěn)定拿分??键c(diǎn)四資源分配圖與死鎖判斷。給一張資源分配圖問(wèn)是否存在死鎖。判斷方法是找環(huán)資源分配圖里有環(huán)且有向環(huán)上每類(lèi)資源數(shù)量都滿足“占滿”條件那死鎖成立。要注意的是一般圖論里有環(huán)還不一定死鎖比如資源數(shù)量大于1時(shí)環(huán)內(nèi)某個(gè)資源還有盈余要結(jié)合“資源實(shí)例數(shù)量”仔細(xì)看??键c(diǎn)五死鎖與饑餓、活鎖的區(qū)別。死鎖是“永久相互等待”饑餓是“進(jìn)程長(zhǎng)期得不到資源但系統(tǒng)還在推進(jìn)”活鎖是“進(jìn)程狀態(tài)在變化但就是無(wú)法實(shí)現(xiàn)真正的推進(jìn)”。三者極易混淆做題時(shí)要把定義咬準(zhǔn)。6.2 銀行家算法做題步驟完整示例我用一個(gè)小數(shù)據(jù)量的例子演示一遍標(biāo)準(zhǔn)解法假設(shè)系統(tǒng)有3類(lèi)資源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類(lèi)023207B類(lèi)100102C類(lèi)002125。 剩余資源向量Available 總資源量 - 當(dāng)前分配總量 (10-7, 5-2, 7-5) (3, 3, 2)。接下來(lái)找一個(gè)能“滿足Need且不超過(guò)Available”的進(jìn)程P0需要(7,4,3)Available是(3,3,2)不夠跳過(guò)。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)不一定立刻死鎖??佣选把h(huán)等待”當(dāng)成死鎖的充分條件。資源分配圖里有環(huán)不一定死鎖例如環(huán)內(nèi)的某類(lèi)資源還有空閑實(shí)例但四個(gè)必要條件全滿足時(shí)就一定死鎖??荚?yán)锵矚g用“有環(huán)死鎖”這種不嚴(yán)謹(jǐn)說(shuō)法當(dāng)干擾項(xiàng)??尤梆囸I”和“死鎖”混為一談。饑餓的進(jìn)程并沒(méi)有形成循環(huán)等待只是某個(gè)進(jìn)程一直得不到資源。比如低優(yōu)先級(jí)任務(wù)長(zhǎng)期被高優(yōu)先級(jí)任務(wù)搶占就是一種饑餓但它不是死鎖。判斷時(shí)先看“有沒(méi)有環(huán)”。7. 最后的實(shí)戰(zhàn)建議死鎖防治要在“設(shè)計(jì)階段”下手回頭看這篇文章你會(huì)發(fā)現(xiàn)死鎖問(wèn)題的本質(zhì)在于“并發(fā)資源分配”這個(gè)系統(tǒng)設(shè)計(jì)問(wèn)題而不是簡(jiǎn)單的編碼錯(cuò)誤。它決定了你的系統(tǒng)在極端負(fù)載下是穩(wěn)定運(yùn)行還是突然假死。我個(gè)人在嵌入式項(xiàng)目里的體會(huì)是死鎖防治要前置到架構(gòu)設(shè)計(jì)階段而不是等出了問(wèn)題再靠檢測(cè)和恢復(fù)兜底。具體來(lái)說(shuō)可以在項(xiàng)目啟動(dòng)時(shí)就做這幾件事第一梳理所有共享資源和它們的使用者做一張“資源-任務(wù)矩陣”。哪個(gè)任務(wù)會(huì)用到哪些資源、什么順序申請(qǐng)全部畫(huà)出來(lái)。只要在矩陣?yán)锇l(fā)現(xiàn)“加鎖順序有交叉”的跡象立刻調(diào)整設(shè)計(jì)。第二寫(xiě)編碼規(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)異常等待超過(guò)閾值日志里就能直接看到“哪個(gè)任務(wù)在等哪把鎖”排查效率會(huì)提升一個(gè)數(shù)量級(jí)。第四最后再分享一個(gè)小技巧如果實(shí)在沒(méi)辦法給所有鎖加超時(shí)那么在代碼里加一個(gè)“看門(mén)狗喂狗注釋約定”——凡是持有鎖超過(guò)約定時(shí)間的代碼路徑都要在注釋里寫(xiě)明原因。這樣未來(lái)排查時(shí)可以直接通過(guò)日志和代碼注釋快速縮小范圍。死鎖防治不是一個(gè)高深的理論問(wèn)題而是一個(gè)非常依賴工程紀(jì)律和前置設(shè)計(jì)的實(shí)踐問(wèn)題。把這篇文章里提到的“四個(gè)必要條件”“資源編號(hào)法”“鎖超時(shí)”“調(diào)試定位”結(jié)合起來(lái)你的嵌入式系統(tǒng)就會(huì)穩(wěn)很多??荚噷用姘雁y行家算法的做題步驟練熟把死鎖與饑餓、優(yōu)先級(jí)反轉(zhuǎn)的區(qū)分邊界理清這塊分?jǐn)?shù)基本就能穩(wěn)拿。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产成人综合在线播放| 欧美日韩中国x| 国产精品露脸在线观看| 校园春色五月天| 91欧美偷拍| 亚洲无码久久久久久久| 国产精品久久久久久久AV大片| 人妻丰满熟妇av无码区蜜桃| 亚洲在线A| 九九热精品在线| 无码高清专| 91久久久亚洲| 91亚洲图片| 亚洲精品 欧美精品| 青青草密桃在线播放| 深田咏美亚洲精品福利社| 成人26uuu| 91伊人| 超碰久久精品| 欧美性生活男人的天堂| 久久丝袜| 亚洲风情在线观看| 中文字幕第2页| 欧日韩一二三f区| 久久久久密臀一区二区| 欧美日韩亚洲高清不卡一区二区三区| 人妻激情偷乱视三区频一区二区| 370p日韩欧美亚洲精品| 大二网站亚洲| 伊人操你| 国产aⅴ无码片毛片一级网站| 超碰97护士| 日夜精品| 国产福利合集| 日本人妻最新在线中| 三级色影综合网| 亚州,欧美在线| 少妇蹲下露出大唇5| 怡红院成人视频| 91日产桃蜜| 蜜桃久久一区| 校园春色AV天堂| 78m成人视线| 97免费在线| 俞拍久久国应视频| AV网站高清无码在线观看| 少妇一区二区三区精选| 日本国产欧美高清在线| 精品国产肉丝袜在线拍国语| 久久免费精彩视频| A一区片| 思思热国产高清| 国产呦精品系列在线观看| 亚州91| 深夜福利黄片| 99热自拍| 九九九九九九亚洲| 国内一区二区三区| 天天激情干| 国产曰批免费观看久久久| 日韩精品在线观看观看| 少妇滛荡视频| 久久精品国产99国产精品亚洲| 天天香香欲综合| 久久国产精品,久久国产| 日本精品国产视频| 日夜尻逼网| 久久加勒比| 国产精品日韩在线一区| 免费在线观看AV无码网站| 91丨九色丨东北熟女| 志村玲子视频一区二区| 欧美老妇女内射网址| 色麻豆AV| 欧美十八禁视频| 在线综合色| 亚洲综合五月天婷婷丁香| 极品丝袜无码| 极品一区二区三区免费| 欧美色综合| 99九九久久| 中文字幕免费在线观看| 综合久久久久久久久91| 欧美性爱另类综合| 人妻另类| 九月丁香综合网| 99久久这里只有精品| 久久噜噜噜精品国产亚洲综合| 九九久久玖玖| 亚洲精品无码少妇久久| 日韩99神马视频片| 日本成人在线不卡一区二区三区| 啊啊啊啊嗯嗯嗯用力好爽 | 口爆吞精在线观看| 精品夜夜澡人妻无码| 久久人妇| 一级做a爰片性色毛片久久| 丁香五月天激情网站| 极品五月天噜噜| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 伊人热综合| 97人人干人人操| 精品九九九九九九九九九| 精品九九九九| 日本三级日本三级三级人妇四虎| 火箭成精品视频884必出精品| 91久久精品中文字幕| 97在线免费看视频| 久久久国产成人一区二区三区在线| 丝袜喷水在线| 青娱乐福利99| 亚洲在钱| 秋霞曰韩R级| 精品亚州18| 欧美亚洲国产91在线| 91在线欧色| 小电影欧美91| 九月婷婷久久| 九九九色| 国产超碰国产97| 神马麻豆福利院| 成人看片网站| 欧美成人精品欧美一级乱黄一区二…| 国产女生在线| 大香蕉2017| 插日本熟女视频| 狠狠躁天天躁日日躁97| 欧美性爱精品一区二区| 99久久99九九99九九九| 欧美老妇综合网| www.亚洲成人一区| 国产精品久久久久久久久久二区三区| 最新中文字幕在线亚洲| 五十路人妻在线| 欧美日本一区二区a人| 91N综合在线| 成人a大片在线观看| 亚洲色图 图片| 青青三级视频| 精品亚洲国产成人AV制服丝袜| 亚洲中文字幕av | HEYZO高无码国产精品227| 热热色色综合| 天天α片| 国产呦精品一区二区三区下载| 婷婷久久久精品| 久久香蕉网| 国产精品久久久久久久久久久久| 欧美欲色| 成视频在线观看免费看| 牛牛AV人人夜夜澡人人爽| 亚洲欧美setu| 色婷五月| 91三级理论片播放器| 日本 情色 1区| 67914亚洲精品| 中文操逼字幕| 色婷婷日韩精品一区二区三区 | 国产久久久久久| 日韩av熟女一区二区三区成人| 思思热久久成人| 青青草公开在线免费不卡视频| 色97| 五月丁香激情啪啪| 夜夜操青青草| 无码天堂| 草B在线| 欧美日韩人人早| 国产在线精品偷| 久久产精品一区二区三区电影| 91久久久老司机| 天天综合91在线| 一类av片在线看| 亚洲色图A| 狠插 制服 自拍| 啊啊啊啊嗯嗯在线久久久| 夫妻四区五区六区| 中文字幕高清20页视频| 在线观看黄色电话| 美女操逼福利视频| 豆花视频操逼网址| 亚洲欧美情色| 韩日欧亚a级| 日韩精品人妻中文字有码在线| 91 手机在线播放 绯色| 91粉嫩萝控精品福利网站_精品影音先锋国| 老熟妇乱轮| www亚洲欧美| 久久九操在线观看| 一二视频神马久久传媒| 91N综合在线| 99精品热| 色爱综合网欧美| 国产又粗又又黄又猛| 爱我干综合| 粉嫩粉嫩一区性色AV片| 99re免费视频精品全部| 日本性爱欧美性爱| 嫩草美女久久| 无码外流操逼视频| 免费的黄片有限公司| 久操免费在线| 高清国产精品福利网站| 亚洲学生妹高清av| 国产午夜福利专区综合| 久久中文字幕不卡人妻| 日本成人免费一区二区三区| 国产乱伦亚洲| 免费看A片毛毛片在线播| 国产黄片在线免费观看| 91草草草| 九九九九九九视频| 91久久国产精品| 91M一社| 久久婷婷一区| 大香蕉伊人75| 青娱乐休闲视频在线观看| 中国和日本人色哪个不下载能放| 久久精品黄色| 日韩成人性日韩成人性爱视频在线免费观看| 深夜国产福利| 天天看特黄的免费网站| 国产a片操逼| 超碰无码五月97| 国产熟女精品区| 91丝袜激情在线| 欧洲小说色图视频另类| 欧美日韩一二三| 91成人精品| 青娱乐妇女性生活| 无码一区免费在线不卡| 思思热er精品视频| 亚欧精品久久久久久久久久久| 九九热在线精品视频| 嗯嗯嗯啊啊啊在线免费观看| 久久大线蕉一区| 日本高清加勒比| 欧美伦乱| 一区二区三区四区理论片| 欧美色就是色| 天天做日日做天天欢。| 午夜啊啊啊| 欧美亚州色的图| 快播久久人人aV| 黄骗免费网站| 91在线丝袜视频| 情色图区| 欧美Aⅴ| 1024人妻熟女一区二区三区| 亚州操操穴网| 91女日逼| 欧美极品性爱天天射| 亚洲国男人的天堂| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 日韩无码服务区| 亚州综合色| av强奸乱轮| 亚洲宅男天堂| 哑洲在线| 婷婷激情五月天小说网| 国产无遮挡| 欧美精品系列| 亚洲无码久久久久久久| 9 7超碰在线免费观看| 日韩在线观看AV| Av手机版天堂网| 亚洲另类综合欧美| 人妻91少妇| 亚洲精品无码久久AV| 亚洲熟妇乱女区二区三区| 九九九草| 9丨亚洲一区二区在线| 天天狠| 久久久精| 国产成人午夜视频网址| 麻豆一区二区三区精品| 久久久久久亚洲中文| 九九玖玖精品| 啊啊啊草死我| 日韩有码免费视频| 熟女熟妇一区二区三四区| 高清无码 国产精品| 亚州成人a∨| 一本久道久久综合狠狠爱一密臀精| 日韩人妻一二三区视频| 校园春色中文字幕AV| 久久深夜无码| 日韩兔费看黄片| 麻豆亚洲Av成人无码一区精品| 久操免费电影| av天堂影视中文在字幕在线中文 | 不卡在线观看视频| 五月婷婷色| 欧美丝袜91| 五月天激情小说| 97超级久久| 99re在线观看| 精品一区二区三区丰满熟女-亚洲欧美一区| 日韩av不卡在线观看| 日韩精品人妻中文字有码在线| 少妇一区二区三区高速| 农村妇女精品一区二区| 人妻 丝袜美腿 中文字幕| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 岛国激情视频在线观看| 夜夜 中文视频rt| 青娱乐亚洲自拍| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 萌白酱自拍视频| 亚洲精品一区二区免费在线观看| 精品人体无圣光凹凸| 久久久99999久网站| 亚洲国产婷婷在线播放| 久久粉色| 久久国产精品熟女人妻| 欧美性爱伊人| 91oumei| 天天综合-91入口| 啊啊啊好湿久久| 久久免费99精品久久久久久| 91女优在线观看| 色999亚洲人成色| 国产 日韩,欧美 自拍| 刺激精品视频| 激情久久av一区av二区av| 色97干| 国产精品乱码久久久久久久久久久久| 3d成人精品一区二区| 老熟乱一区二区三区四区| 乱精品一区字幕二区| 日本精品中文字幕视频| 丰满少妇精品一区二区| 爱爱动态试试看6 0秒| caoni国产亚洲av| 性一级黄色录像片网站导航| 亚洲欧美setu| 国产欧美美女免费观看视频| 久久一区二区三区入口| 熟妇乱伦一区二区| 欧美日韩狠狠爱| 欧美97日韩| 任你草| 免费一级性爱久久| 久久超碰网| 老女人老91妇女老热女| 国产女上位好爽在线| 美女极品一区二区三区| 男人的天堂 在线一区| 无毛精品| 精品十三区| 一起草av| 国产欧美一区激情交| 内射老妇BBWX0C0CK| 欧美日本不卡在线| 韩国嫰模上门援交视频| 亚洲五区熟女| 欧美老熟另类| 久久久月天| 亚洲精品国产AV天美传媒| 色吧综合网| 欧美日韩在线国产在线| 欧美日韩另类在线播放| 天天看天天日天天操| 久久9精品网站| 色娱乐色呦呦夜夜夜夜av| 中文字暮97| 大香蕉人妻| 亚洲av无线观看| 色就色综合| 呦呦影院| 99精品视频在线观看免费| 国产欧美日本亚洲精品| 久久久久久久强迫| 国产亚洲色停停久久99精品91| 粉嫩AV一区二区夜夜| 玖玖资源视频一区二区三区| 亚洲欧美视| 校园春色家庭伦理欧美激情| x97av| av东京热男人的天堂| 久久蜜色情在线视频xxx免费观看| 艳美熟妇先锋一二三区| 欧美最婬乱婬爆婬性视频| 999狠狠综合| 天天综合色| 97干在线| 蜜桃精品一区二区三区ww | AV天堂因数| 亚洲色婷婷综合久久久久中文| 无码人妻毛片丰满熟妇精品区| 久久精品99| 肉丝中文无码高清| 久久国产精品m码| 91亚洲色图| 女人与公拘交酡2020视频| 丝袜人妻av一区二区| 97在线免费| 亚洲欧洲中文日韩女优乱码| 欧美日本中字另类在线| 国产无套粉嫩白浆在| 日本精品成人无码| 欧美熟爽综合| 天美传媒在线一区| 久久久一二三四区| 99国产精品| 精品人妻1区| 可以免费观看的日韩av毛片| 亚洲色久| 99色日| 国产精品乱码久久久久久| 精品无av| 豆花视频操逼网址| 一区三区啪啪| 日韩女优中文字幕| 少妇色综合| 久久久久久十| 亚洲色 国产 欧美 日韩| 麻豆这里只有精品| 99re在线观看| 91青青| 少妇厨房愉情理伦片bd在线观看| 国产视频不卡在线观看| 97 国产一区| 东京热伊久| 成人性爱免费播放| 极品尤物在线观看| 欧美亚洲se91| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 超碰 国产熟女精品一区| 风韵犹存大大大大香蕉| 精品毛片av一区二区| 五月婷婷激情| 精品久久艹| 精品久久久久久中文字幕视频免费| 少妇3P性爱自拍| 丰满欧美少妇| 一本大道青青| 18禁的网站在线| 久操高青| 婷婷激情四射| 日本午夜久久电影| 亚洲系列欧美| 超碰人妻天天干| 刺激性视频黄页| 大香蕉草草| 8050无码八戒| 丝袜高跟澳门91视频| 欧美中文字幕日韩在线| 韩国久久97| 高精欧美色| 欧美麻豆成人同性GⅤ在线| 人妻一区久久二区三区色播| 搡老女人老熟女91| 亚洲色图91欧美日韩| 欧美伦乱| 日本色色的视频| 亚洲欧美日韩电影网站一区| 国产丝袜欧美在线视频| 超碰97在线 欧美 国产| 91视频精品| 久久精品人体| 亚洲情色欧美| 久久久久久大| 日韩兔费看黄片| 国产欧美日韩在线观看麻豆传媒公司| 久久老熟女| 国产超碰| 欧美亚洲首页| 午夜免费视频1000| 少妇久久久久久久久| 五月婷婷激情综合| 精品九九九九| 色天使大香蕉| 国产精品黄色三级av| 天堂精品小草| 人妻系列无码专区中文有码| 亚洲性综合11| 天堂九九九九九九九九九| 丝袜美腿av女优在线| 久久久久久久一级黄色打同平台| 成人精品无码| 亚洲人妖网| 国产熟女乱论| 啪啪啪亚欧美视频| 熟女欧美日韩综合婷婷| 加勒比在线视频一区二区三区| 国产人妻精品一区二区三区秋霞| 影音先锋国产精品| 精品国产三级av韩国在线| 97免费视频网| 成人性爱电影一区二区| 青青草好吊色| 人妻美腿丝袜制服诱惑综合天堂-| 亚洲日韩视频二区| 亚洲人妻色图| 日han少妇无码| 精品国产乱码久久久久久口爆网站 | 人妻精品一区二区| 97在线欧洲| 日韩欧美午夜视频在线| 亚洲天天操| 亚州综合色图| 五月婷婷六月激情| 波多野42部无码喷潮在线观看 | 中文字幕亚韩| 亚洲福利影院一区久久| 97视频在线视频| 久久久com| 黑人美精品 A片| 国产sv美女内射| 亚洲www91| 亚洲高潮少妇| 国产69精品久久久久99尤物| 色吧 综合| 色欲久久99精品久久| 国产精品乱人伊人网| 国产高清精品福利| 亚洲伊人成综合成人网| 亚洲人精品久久久| 你草精品在线视频| 美女刺激久久国产欧美| 国产第25页在线观看| 激情文学88| 久久超碰天天| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 青娱乐日韩无码| 精品日韩人妻精品一二三区| 97超碰大| 97久久超碰亚洲| 国产免费久久精品99re韩国| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 91白虎| 性九九九九九九| 日本中文字幕高跟| 美女超碰978| 秋霞视频一区二区 | 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 中文字幕成人| 久草福利在线资源站| 国产高清吃奶免费视频网站| 熟女探花啪啪| 操逼操2| 啊啊啊啊网站| 夜色综合| 92久久| 国产路线专区| 熟女少妇视频| 加勒比海人人操超碰在线| 9九九国产| 超碰到97情色| 超碰这里有精品| 99精品久久久久久| 超碰一区二区| 骚鸭AV| 天天综合~91| 久久噜噜噜精品国产亚洲综合| 中文字幕AV片| 国产免费一区| 大香蕉2017| 96精品久久久| 久久岛国| 麻豆久久精品亚洲精品88| 青青青青操国内视频在线| 欧美性性性| 97干在线视频| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 黄页视频网站野外| 在线性黄高清免费视频| 超碰在线国产| 天美麻豆精品视频99| 久久极品一区二区| 不卡人妻少妇精品毛片一区23区视频| 精品国产污一区二区三区| 欧美爆操91| 久久久不卡区一区二区三区久久久| 秋霞午夜视频一区二区| 欧美激情亚洲情色| 中文 人妻 制服| 日韩一级二级三级在线不卡观看完整| 91P0RNY大屁股人妻| 影音先锋日本一区二区| 肉嘟嘟www视频在线观看高清| 九九黄色视频在线观看| 天天综合日韩网| 美女大乳久久久久久久女人18| 九九九久久久久| 亚洲素人综合| 26uuu最新| 亚洲成a人片在线观看中文!!!| 在线视频日韩欧美国产| 熟女丝袜视频| 五毛骚逼极品美女怕怕| 亚洲图片第一页| 丁香九月 婷婷| www色色com| 96AV久久久| 国产97/欧美| 青娱乐999| 伊人黄色视频免费观看| 成人AV素股で擦久久| 欧美在线 亚洲| 亚洲熟女av中文字幕| 日韩av不卡在线看| 小草三级久久观看| 99最新日韩偷拍视频| 精品九九九| 美女被艹尤物视频| 97超级欧美| 欧美色图91| 嫩草一区二区在线观看| 国产青一二三| 亚洲天在线| 干干干天天| 热久久91婷婷| 老熟女综合网 | 久日综合网| 美女天天干| 99色视频| 奇米狠999| 91久久国产综合久久| 男人成人黄色视频在线观看免费下载| 中国AAAAAA黄色片| 一起草av| 亚洲色图片区| 久久久久国产精品片区无码直播| 欧美少妇第一页| 亚洲综合首页| 国产乱码久久| 外国免费性情大片| 91呆哥人妻| 精品一区99999| 精品国产一区二区三区四区在线看| 天堂蜜桃无码视频一区二区| 欲综合网| 五月丁香啪啪网| 亚洲做性| 91在线无码精品秘 软件| 亚洲性感丝袜诱惑在线观看| 色翁荡息又大又硬又粗又爽| 97色97好| 亚洲精品尤物yw在线影院| 久久9亚洲| 中文乱码字字幕在线第5页| 私色综合网| 翔田千里AV无码秘 三区| 亚洲天堂综合AV| 久久免费9| 亚洲激情网一二三四区| 美女91AV| 综精品久久久aaaa| 久久国产逼| 操B久久| 久久久久久电影| 都市激情人妻一区二区青青操视频 | 国产一区二区在线播放量| 草伊人高潮喷水超碰| 9国产超碰| 成人热久久精品| 无码逼| 亚洲色天堂九9| 五月婷婷综合网| 亚洲 暴爽 AV人人爽日日碰| 青青青青青手机视频| 国产网红精品| 51久久夜色精品国产麻豆| av婷婷色网| 在线人成亚洲视频免费观看| 日韩精品人妻中文字幕有码午| 91精片| 色一射色一射| 欧美 日韩 亚洲 春色| 青青草成人视频在线观看二区| 操逼www.| 男人的天堂久久| 插入综合网| 日韩高清黄片| 欧美一区二区三熟女剧情| 免费看日本操逼视频| 久久久久久久久久久久97| 天天摸,夜夜摸| 强奸乱伦 亚洲一区| 伊人991| HEYZO高无码国产精品227| 九九九不卡| 久操99| 另类 日韩 熟女| 性91| 97频视在线| 亚洲黄色影视| 人妻无一区二区三区| 91国内外在线| 有码免费观看| 中文字幕jul-617人妻熟女| 天天看夜夜看日日干| 色综合超碰超| 97色冈| 国产男女无套视频免费观看| 国产乱伦视频污| 91狠狠狠| 蜜屁Av| 东北黄色电影| 中文字幕日本久久| 无码外流操逼视频| 91丝袜视频在线观看| 久久久久久久六六| 国精品一区二区三| 日本片日本片祼观看网站在线看中文版网页在线看 | 试看福利| 伊人青青一区成人视频在线观看区| 操逼逼福利视频| 日日操免费视频| 夜夜精品视频| 欧美97av| av草草在线电影| 四虎免费看黄| 久久久久久久久久久97| 天天爽天天操| 九九综合久久| 午夜福利免费福利视频| 7777奇米影视久久| 一区AV| 91天天看| 日少妇视频| 91欧美经典| 加勒比综合在线| 自拍第一页| 中文子幕一二三| 我中文字幕6区 | 四虎影视永久在线免费| 欧美日韩啪啪电影| 亚洲精品免费中文字幕| 日本乱人伦片中文三区| 婷婷超| 啪啪视频免费在线观看| 青草成人免费视频一com| 麻豆尤物视频网| 日日骚一区二区三区| 97操97干| 校园春色AV天堂| 97日亚洲欧美| 爱爱动态60秒| 99久久精品国产系列| 免费一二区| 伊人国产成人av网站| 亚洲精品久久久久毛片A片拉屎 | 欧美玖玖爱免费玖玖| 91路www| 免费草草草草草视频| 综合性视频99| 超碰欧美COM| 亚洲色人阁| 97在线视频观看| 韩国三级一线观看久| 国产午夜福利电影免费在线观看 | 97免费在线视频在线观看| 久久久工口| 黄网站黄视频网站进入口 | www.久久最新地址| 在线观看国产黄色| 污啪啪啪视频| 免费9 1久久| 色九九综合AV| 色综合大香蕉| 国产强奸乱伦欧美| 欧美一区二区三区入口| 乱伦系列一区二区| 野狼激情网| 日本五十路在线| 性高潮久久久| WWW.操逼.COM| 国产亚洲精品玖玖玖在线观看| 丁香九月激情啪| 欧美老熟另类| 中文字幕欧美日本乱码一线二线 | 色欧美天天| 妇人噜噜| 男女啊啊啊啊啊| 精品人妻一区二区三区四区石在线 | 丁香六月综合激情| 国产超碰在线一区| 成人AV在线网站| 日韩啊V| 国产在线精品偷| 超碰97资源大奶| 1204人成网站色www| 九九九久久久| 国产一区二区av综合| 九九无码久久精品视频| 激情五月天校园春色网| 亚洲色人| 国产视频一区二区免费| 99国产在线绯色一区| 夜夜免费视频| 操屄日韩| 五月婷色| 久久9精品网站| 国产精品久久久吖| 丁香五月婷婷啪啪| 日韩综合97P| 超碰精品日韩欧美国产| 噜噜在线| 九九久久国产精品怡红院| 无码精品久久| 99热超碰| 女优大全 - 91n| 五月丁香社区婷婷日韩欧美精品影院| 亚洲精品国产AV天美传媒| 在线欧美亚洲| 操婷婷逼| 蜜桃狠狠色伊人亚洲综合 | 很黄很污的免费网站| 五月天日日操夜夜操| 日韩乱伦影音先锋| 九九拍拍精品视频在线播放 | 色优久久| 天美传媒精品久久视频| 97人妻免费中文字幕| 激情露脸爱| 日韩欧美日韩| caorenqi shipin| 嗯嗯不要 视频| 成人黑料社久久| 夜夜免费视频| 欧美黑人精品一区二区| 欧美激情久久久久| 黄色在线网站| 综合网97| 久久高清欧美国产| 后入福利视频| 囯产操逼片| 欧美亚洲色的图| 国产成人精品亚洲日本| 欧美后入式| 你懂得91| 蜜臀Av一区二区三区| 91色久| 久久久夜夜夜| 精品一区二区啪啪啪| 日本久久超碰| 九九精品美女高溯喷水| 日韩成人高清一区二区| 少妇诱惑视频| 在线综合 亚洲 欧美中文字幕| 中文字幕乱碼在线| 久久欲| 激情小说亚洲图片| 一区二区三区免费岛国片| 狠狠干2020| 一区二区三区机械有限公司| 亚洲深夜福利| 视频在线观看一二三区| 欧美v亚洲v综合v国产v妖精| 超碰99热中文字幕| 国产精品久久久无码AV网站| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 欧亚日韩一区在线| 丝袜喷水在线| 干干干天天| 亚州黄站| 一区二区三区四区五区高清无码永久视频 | 成人在线视频一区| av日韩在线观看电影| 香蕉精品二区二区| 青青草吊丝| 国产男人又猛又粗又爽| 欧美精品激情| 色噜噜人妻丝袜AV资源| av线电影| 超碰人人干| 丰满人妻被猛烈进入中| 亚洲男人的天堂网| 首页亚洲国产高跟丝袜诱惑视频| 亚洲成人激情小说视频| 亚洲精品一卡二卡三卡福利视频网站| 国产高清无码一区二区三区四区皇冠| 偷拍盗拍亚洲色图图片| 欧美人妻色| 啪啪一区| 日韩免费看在线黄色片| 懂色AV网| 大香网伊人久久综合网eew| 丰满的三级少妇欧美久久久| 国产毛片毛片4p懂色| 久久视频,这里只有精品| 青青草自拍视频在线播放| 在线一道啪| 精品人妻一区二区三区四区不卡在| 九九九九九九九九九五码| 亚洲欧美经典一区二区| 国内偷自视频区视频综合| 亚洲人妻爽爽爽| 久久久禁| 国产精品 亚洲情色| 亚洲精品中文字幕一区在线视频| 大学生美女口爆| 色女免费在线观看视频网址| 91狠婷| 国产麻豆一级精品视频| aaa亚无码专区| 午夜福利合集| 91/欧美| 久久久久久亚洲精品中文字幕人妻| 美中日韩无码| 精品久久久久久AV无码| 色图综合| 丝袜美腿91| 都市激情人妻一区二区青青操视频 | 国产欧美日韩臀| 殴美牲| 婷婷97| 欧美做爰无码A片视频| αⅴ天堂| 黄色人人| 91精品微拍福利| 亚洲天堂精品日韩电影| sewuyueav| 天天综合91入口| 人妻激情在线视频| 久久少妇人妻| 一个人免费视频观看在线WWW | α√在线| 人人人人插| 在线岛| 成人97人人超碰人人| 国产在线观看一区二区三区| 亚洲久久久久| 欧美国产婷婷久久| 婷婷激情四射| 9Ⅰ超碰| 国产精品久久久亚洲第一牛牛_在线观看 | 日本高清视频在线观看黄已三辽| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 亚洲不卡三级手机播放| 久草在线| 人人爱人人乐人人操| 久久精品| 国产二区三区免费视频| 最新无码国产| 内射小黄片| 在线观看成人性爱免费小视频| 亚洲国产精品99久久久| WWW操逼| 麻花豆传媒剧国产MV出差| 日韩精品国产一区二区| 高清无码在线播放网站| 欧美日韩电影成人在线| 26uuu性物| 国产三级多多影院2022国产AA一级毛片无码| 日韩性爱人人爱人人操| 久操网视频| 99热在线观看| 久碰视频| 国产免费大片| 高潮综合网| 玖玖爱伊人玖玖爱| 偷拍导航视频网站| 亚洲人妻精品一区二区| 亚洲色图欧美色图另类图片| 亚洲中字幕日本一区二区三区| 日韩操p| 人人人人插| 国产亚洲精品自在线亚洲情侣| 九九综合久久| 免费农村成人少妇人妻Aa一区二区视频 | 久久99深爱久久99精品| 色婷婷日韩精品一区二区三区| julia国产在线 | 国产福利第一视频| 欧美熟妇视频| 香蕉免费一区二区三区不读 | 亚洲高清无码在线桃色| 久久草大香蕉| 国产夫妻一区二区| 东京热99999| 熟妇一区二区| 精品人妻一区二区视频| 亚洲激情深爱文学小说网站| 91n处女在线观看| av一区二区三区不卡| 日本视频在线观看污污污| 狂操嫩妻视频一区二区三区| 第四色亚洲色图| 超碰在线综合97| 操屄日韩| 精品久热| 裸体美女久久久| 一区二区影视| 亚欧无码在线| 麻豆精品久久久久久久| 国产人妻精品一区二区三区秋霞| 精品69网| 黄片免费看黄片免费看| 日韩pv中文| 日本黄色天堂| 国产精品久久久久久亚洲色欲| 强奸a片网| 丝袜无码a片| 欧美日韩在线小说| 日本三级R| 丰满搜索结果 -第18页- 久久高清无码| 99色在线| 又大又长又粗又爽又黄| 久久啊哟| 欧美综合色图片| 操逼操逼逼操操逼91 | 手机在线大香蕉| 日韩欧美俄罗斯A片| 老熟女熟妇| 不卡在线观看视频| 7777欧美成是人在线观看| 亚洲淫色网中文| 亚洲无992tv| 日韩一级二级| 天天色综合影视网| 国产69精品久久久久99尤物| 五月天色电影| 国产欧美在线观看免费观看| 九九热免费视频| 好一吊区二区| 韩国午夜理伦三级好看| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 伊人久大| 中文字幕成人理论在线| 婷婷五月天无码| 成人一级性爱| 精品久久久久久久久久久久 | 亚州色图欧美| 国产日韩精品无码去免费专区国产| 人人爽天天爽| 91网站18| 97青青操视频| 亚洲综合影院| 欧美久久婷| 麻豆视频国产一区二区| 不卡码视频| 一个国产在线综合网站| A啊啊在线观看| 日日噜噜夜夜狠狠视频无| 国产精品网站www| 九月激情婷婷| 天堂亚洲精品久久老牛| 综合免费无码中文| 国产精品高朝久久久久久久| 夜嗨影院| 久久精品噜噜噜成人看免欧美大片| 久久美女福利是上海美女| 久9爱精品| 日本超碰在线国产一区| 淫荡网址| 日韩99神马视频片| 91高清无码下载| 久久精品国产97欧美精品亚洲 | 国内91熟女人妻丝袜天天精品视频在线| 春色91| 成 人 影视 一区 二区 三区 四区 | 国产女同视频在线播放| 日日骚精品视频| 中文字幕av乱伦| 97超碰色情| 欧美天天谢综合网| www.av在线视频| 九九九久| 日韩精品午夜操呦呦不卡影院| 五月丁香色综合| 人人爱人人乐人人操| 蜜臀久久久| 国产一级αv免费看片| 亚州综| 97内射偷拍| 嫩草一区二区在线观看| 91美女视频直播| AV天天综合| yellow网站免费观看日韩高清无码| AV天黑人| 高潮内射在线| 26uuu国产成人综合| 一二三区精品视频| 中文字幕免费观看| 久久这里只精品99re66图 | 亚洲码和欧洲精品激情系列| 亚洲AV秘 精品久久老牛影视| 99re视频在线播放青草| 日韩精品熟妇| 免费久久精品麻豆一区二区av| 青娱乐休闲视频在线观看| 九区国产| 久久欧美按摩999| 国产区性爱在线视频秋霞豆 | 旡码电影特区| 新婚人妻扶着粗大强行坐下| 亚洲综合91| 国产自偷| 欧美国产一区二区三区麻豆传媒 | 天天综合网~91| 96免费视频在线| 亚洲另类综合欧美| 伊人五月天激情| 日韩免费中文字幕视频| 在线观看啊啊啊啊啊| 丝袜美腿校园春色| 欧美精品人妻视频| 中文字幕亚洲在线一区| AV天堂国产| 少妇久久久久| 精品二区久久| 日韩视频小说在线观看| 久久秀这里有精品| 亚洲中文字幕精品久久久久久直播| 内射夫妻三片| 欧美性暴力| 亚洲黄色电影| 亚洲色综网| 亚洲性少妇| 久久精品72| 中文高清一区二区的| 日本久久天堂| 人妻乱仑一区二区三区| 国产日韩在线播放av| 亚洲欧美高清无码| 九九自拍伦理| 亚洲欧美日韩不卡人妻| 97超碰中文| 国产美女激情| 91色黑人少妇| 97亚洲综合电影| 日本在线一二| 超碰免费人人| 97最新在线播放视频| 欧美人妻一区| 欧美亚洲另类在线蜜桃| 啪啪视频亚洲第一| 操操逼视频| 另类小说综合网| 久久精品国产AV一区二区三区| 国产精品精品系列在线观看| 97色亚洲| 女人天堂av在线播放| 一区二区三| 天天操夜夜操| 综合另类| 欧美人与动性人交a| 91av熟女人妻| 51国产午夜精品视频| 免费视频在线一区二区不卡| 国产强奸AV在线| 91人精品妻入口| 天天操人人操狠狠插| 国产精品毛片?v一区二区三区 | 亚洲色人妻综合| 91是天天| 老师充足的奶水小说| 国产天天看| 亚洲性综合| 久草电影网| 中文字幕制服诱惑| 亚洲自拍偷拍视频在线| 国产婷婷综合在线观看| AV天堂丝袜| 丁香五月天婷婷姐|