亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于真實(shí)硬件的操作系統(tǒng)安全實(shí)驗設(shè)計

        2024-06-03 11:35:25陳波何玲娜韓姍姍
        中國信息技術(shù)教育 2024年10期
        關(guān)鍵詞:實(shí)驗教學(xué)

        陳波 何玲娜 韓姍姍

        摘要:本文探索了基于開源硬件,教授低級安全概念的相關(guān)方法,包括與構(gòu)建實(shí)踐學(xué)習(xí)環(huán)境相關(guān)的嘗試,并對嵌入式內(nèi)核進(jìn)行擴(kuò)充,引導(dǎo)學(xué)生深入了解支持樹莓派3B+上的系統(tǒng)調(diào)用和內(nèi)存保護(hù),且設(shè)計的作業(yè)旨在幫助學(xué)生深入了解復(fù)雜的硬件細(xì)節(jié)。最終教學(xué)結(jié)果表明,基于真實(shí)硬件設(shè)計操作系統(tǒng)安全實(shí)驗,提供了一種培養(yǎng)學(xué)生分析和解決較復(fù)雜問題的有效方法。

        關(guān)鍵詞:操作系統(tǒng)安全;開源硬件;實(shí)驗教學(xué)

        中圖分類號:G434? 文獻(xiàn)標(biāo)識碼:A? 論文編號:1674-2117(2024)10-0090-05

        引言

        在硬件課程的教學(xué)中,真實(shí)硬件上的操作能夠激發(fā)學(xué)生的好奇心,增強(qiáng)學(xué)生的成就感和參與度。然而,硬件課程對教室、教師、物料有著較高的要求,如在教授操作系統(tǒng)和計算機(jī)安全等課程時,由于商用操作系統(tǒng)的龐大,學(xué)生的學(xué)習(xí)范圍被限制為單個組件或子組件,無法合理地呈現(xiàn)基于硬件的設(shè)計決策,而使用教學(xué)操作系統(tǒng)——用于觀察和開發(fā)操作系統(tǒng)的組件則可以有效解決這一問題。因此,筆者嘗試在操作系統(tǒng)安全課中引入嵌入式Xinu操作系統(tǒng),并設(shè)計了系統(tǒng)服務(wù)及內(nèi)存保護(hù)相關(guān)作業(yè)。

        背景

        嵌入式Xinu操作系統(tǒng)源自Xinu,其中心目標(biāo)之一是讓學(xué)生接觸真實(shí)的硬件。現(xiàn)有嵌入式Xinu移植已用于嵌入式系統(tǒng)課程的教學(xué),如移植到樹莓派3B+上,允許硬件系統(tǒng)和操作系統(tǒng)課程提供多核執(zhí)行的實(shí)踐實(shí)驗,但對操作系統(tǒng)安全方面的關(guān)注較少,沒有實(shí)施明確的安全設(shè)施。

        那么,如何設(shè)計一個操作系統(tǒng),讓它既能監(jiān)督特權(quán)執(zhí)行又能安全地操作用戶線程?系統(tǒng)服務(wù)調(diào)用(Supervisor call,SVC)提供了此功能。SVC調(diào)用是非特權(quán)線程臨時訪問特權(quán)操作系統(tǒng)資源的接口。在arm架構(gòu)上,系統(tǒng)模式功能強(qiáng)大,而用戶模式受到限制,SVC在稱為Supervisor模式的特權(quán)環(huán)境中執(zhí)行。一般情況下,該模式具有與系統(tǒng)相同的高權(quán)限模式,而如修改CPU寄存器的指令,只能從特權(quán)模式訪問。一個簡單的操作系統(tǒng)(如教育操作系統(tǒng))可能只包含幾個SVC應(yīng)用程序,生產(chǎn)操作系統(tǒng)則提供更多保護(hù),但復(fù)雜度高。

        嵌入式Xinu操作系統(tǒng)依賴GNU交叉編譯器(GCC)來轉(zhuǎn)換主要用C語言編寫的內(nèi)核源代碼到一系列目標(biāo)文件。這些目標(biāo)文件鏈接在一起以創(chuàng)建可傳輸?shù)淖罱K可執(zhí)行操作系統(tǒng)映像到受支持的機(jī)器上并運(yùn)行。GCC等編譯器有一組可用的優(yōu)化選項,常見的優(yōu)化程序的好處包括:更小的代碼大小、更快的程序執(zhí)行,且采用更少的分支(執(zhí)行指令重新排序,在當(dāng)前位置繼續(xù)執(zhí)行,而不是跳轉(zhuǎn)到內(nèi)存中較遠(yuǎn)的空間)。

        系統(tǒng)服務(wù)調(diào)用SVC

        筆者認(rèn)為,學(xué)生應(yīng)嘗試硬件提供的保護(hù)設(shè)施,如基于模式的保護(hù)。一個處理器的執(zhí)行模式定義了其當(dāng)前狀態(tài),即它將用于執(zhí)行svc等指令的方法。樹莓派3B+的CPU有七種執(zhí)行模式:系統(tǒng)模式、用戶模式、管理員模式、中止模式、快速中斷請求(FIQ)模式、中斷請求(IRQ)模式、未定義模式。

        在嵌入式系統(tǒng)課程中教授Embedded Xinu時,系統(tǒng)僅在System模式、IRQ模式或FIQ模式下執(zhí)行。系統(tǒng)模式是特權(quán)模式,所有指令在此模式下均有效。對所有基本執(zhí)行使用系統(tǒng)模式提供了優(yōu)雅的設(shè)計,但是內(nèi)置硬件安全設(shè)施未使用。當(dāng)處理器在User模式下執(zhí)行時,特權(quán)指令變得未定義。因為Pi 3B+的SoC沒有公開可用的文檔,很難準(zhǔn)確確定哪些指令被認(rèn)為是特權(quán)的,以及哪些在用戶模式下可用。

        Supervisor模式與系統(tǒng)模式一樣,是一種特權(quán)模式,但它是一種異常模式,而系統(tǒng)模式不是。因此,要進(jìn)入超級用戶模式(或任何異常模式),處理器生成一個異常,該異常被Xinu的異常處理程序捕獲。

        管理員模式有自己的存儲堆棧指針(一個跟蹤運(yùn)行時堆棧的寄存器)和鏈接寄存器(一個保存當(dāng)前執(zhí)行的函數(shù)完成時返回的指令地址的寄存器)。根據(jù)ARM調(diào)用約定,寄存器r0-r3在函數(shù)調(diào)用時被壓入堆棧。當(dāng)處理Supervisor模式異常時,使用其各自的堆棧來保存這些參數(shù)是有益的。因此,它的堆棧是在引導(dǎo)加載程序中初始化的。

        當(dāng)樹莓派上電后,內(nèi)核的bootloader會執(zhí)行初始化步驟,如為每種潛在的執(zhí)行模式準(zhǔn)備堆棧內(nèi)存。當(dāng)處理Supervisor等異常時,平臺要求相應(yīng)的堆棧根據(jù)ARM過程調(diào)用標(biāo)準(zhǔn)進(jìn)行8字節(jié)對齊。在開始執(zhí)行由異常處理程序分支到的函數(shù)(如處理程序例程)之后,模式切換意味著堆棧指針已更新。

        雖然樹莓派3B+配備了四核處理器,但本課程使另外三個核心處于禁用狀態(tài)。當(dāng)不存在多核并發(fā)問題時,擴(kuò)展內(nèi)核變得更加簡單。這對開發(fā)者有利,因為消除了對有關(guān)跨內(nèi)核的系統(tǒng)調(diào)用的探索。這一決定也符合Xinu作為教學(xué)工具的用途。學(xué)生不必因與新硬件細(xì)節(jié)一起引入的多核系統(tǒng)而不知所措。

        在嵌入式Xinu加載Null線程后,處理器仍處于系統(tǒng)模式(如圖1)。 接下來是一些關(guān)鍵的初始化步驟。為了在網(wǎng)絡(luò)傳輸后執(zhí)行內(nèi)核,必須首先初始化以太網(wǎng)設(shè)備,而樹莓派平臺的一個特點(diǎn)是網(wǎng)絡(luò)通信通過USB設(shè)備進(jìn)行,所以,首先要啟用USB子系統(tǒng)。USB傳輸需要啟用中斷,因此整個過程在系統(tǒng)模式下進(jìn)行。為了保持簡單性,在主線程開始執(zhí)行之前盡可能晚地進(jìn)入用戶模式。

        SVC接口或系統(tǒng)調(diào)用接口是一種抽象,允許在非特權(quán)模式下運(yùn)行的處理器安全地執(zhí)行特權(quán)指令并返回到正常執(zhí)行。圖2顯示了getcpuid()的系統(tǒng)調(diào)用序列,該函數(shù)返回當(dāng)前處理器核心的數(shù)字標(biāo)識。

        svc指令是32位arm狀態(tài)指令集和16位thumb指令集的一部分。為了區(qū)分所提供的內(nèi)核服務(wù),每個svc編號在頭文件include/svc.h中唯一定義。

        在使用USB(通用串行總線)設(shè)備等板載設(shè)備的嵌入式操作系統(tǒng)上,必須采用一種機(jī)制來促進(jìn)操作系統(tǒng)和設(shè)備之間的通信。對于許多設(shè)備來說,中斷請求線是必要的通信媒介。在初始化后,操作系統(tǒng)將對與其連接的每個設(shè)備啟用請求線。在此工作之前,Xinu內(nèi)核為許多設(shè)備啟用了中斷。最值得注意的是UART(通用異步接收器-發(fā)送器)和USB。UART中斷允許接收器傳輸數(shù)據(jù),這對于獲取輸入的系統(tǒng)函數(shù)非常有用,如getc()。但是,如果沒有啟用中斷,用戶模式函數(shù)將無法獲取輸入。

        如圖1所示,關(guān)鍵初始化序列可能發(fā)生在System模式。但是,當(dāng)?shù)谝淮螐挠脩裟J竭M(jìn)行上下文切換時,更新CPSR中斷位的msr(從寄存器傳送到狀態(tài))指令未定義,這是因為如果不訪問該指令,就無法在啟用中斷的情況下啟動新線程。筆者試圖通過從上下文切換例程發(fā)出svc指令來回避這個問題,隨后,在更改SVC處理程序中的SPSR后,啟用中斷。然而,從svc返回后,系統(tǒng)定時器立即中斷了上下文切換代碼。在當(dāng)前狀態(tài)下,時鐘處理程序(在系統(tǒng)定時器中斷后調(diào)用)無法在用戶模式下執(zhí)行。最后,為了節(jié)省時間和簡單便捷,不需要啟動中斷來實(shí)現(xiàn)預(yù)期目標(biāo)。

        本節(jié)中設(shè)置的作業(yè)涉及ARM編程和更高級的C編程,允許更多的編程自由。這樣就為學(xué)生提供了一個啟動到用戶模式的內(nèi)核,但尚未在引導(dǎo)加載程序中初始化Supervisor模式堆棧。他們的任務(wù)是:①建立Supervisor模式堆棧;

        ②實(shí)現(xiàn)create()的系統(tǒng)調(diào)用。這個功能接受可變數(shù)量的參數(shù),使其API和調(diào)度案例寫起來更有挑戰(zhàn)性。

        在學(xué)生不知道將要測試的參數(shù)數(shù)量的情況下,教師可以要求他們編寫一個優(yōu)雅的C實(shí)現(xiàn)才能獲得滿分。此作業(yè)的書面測試用例可能包括準(zhǔn)備創(chuàng)建執(zhí)行參數(shù)檢查的線程。

        內(nèi)存保護(hù)

        內(nèi)存管理單元(MMU)是一個功能單元,負(fù)責(zé)監(jiān)督處理器對可用物理內(nèi)存的使用。因此,可以配置內(nèi)存管理單元來實(shí)現(xiàn)內(nèi)存保護(hù),緩存是處理器之間的中介和物理內(nèi)存。對于支持緩存的單元,標(biāo)記為可緩存的區(qū)域相應(yīng)地保存在翻譯后備緩沖區(qū)(TLB)中。

        處理器請求的內(nèi)存地址首先由MMU檢查以確保其有效。為了實(shí)現(xiàn)這一點(diǎn),MMU檢查存儲在硬件寄存器中的信息,其中包含給定區(qū)域的讀寫權(quán)限。在確定地址可訪問后,進(jìn)行地址轉(zhuǎn)換。這些翻譯存儲在TLB中,因此MMU只需引用此翻譯并抓取相應(yīng)的物理內(nèi)存地址。對于store操作,內(nèi)存系統(tǒng)不需要返回值。如果執(zhí)行l(wèi)oad,請求將被更新以包含位于物理地址的值,并將其發(fā)送回請求者。

        樹莓派3B+支持兩種虛擬內(nèi)存系統(tǒng)選項——MMU和內(nèi)存保護(hù)單元(MPU)。MPU對編程區(qū)域提供更簡單的接口,但由于嵌入式Xinu已經(jīng)啟用了MMU,因此選用MMU。這個決定更符合硬件系統(tǒng)教學(xué),因為MMU是學(xué)生熟悉的必要計算機(jī)組件。

        樹莓派3B+定義了兩級緩存——L1和L2。在默認(rèn)情況下,樹莓派3B+上禁用二級緩存。嵌入式Xinu最新移植初始化了MMU,但僅使用已啟用的L2系統(tǒng)進(jìn)行原子操作,從而在內(nèi)核之間強(qiáng)制執(zhí)行互斥。在此工作之前,啟用的MMU并未利用其內(nèi)存保護(hù)功能。

        圖3顯示了該器件實(shí)現(xiàn)的存儲系統(tǒng)。當(dāng)MMU初始化時,L2緩存已啟用,并且可以開始轉(zhuǎn)換。如上所述,需要一個硬件寄存器來確定訪問控制。在這個平臺上,協(xié)處理器寄存器15(CP15)保存有關(guān)正在訪問的內(nèi)存區(qū)域的信息,如是否可緩存,或者是否允許當(dāng)前執(zhí)行模式訪問它。在地址轉(zhuǎn)換之后,物理地址可能駐留在兩個緩存層次結(jié)構(gòu)中的任何一個中,或者駐留在RAM中。該內(nèi)核以虛擬和物理轉(zhuǎn)換1∶1的方式配置MMU,這使得設(shè)計更加簡單,其中翻譯后的內(nèi)存地址對請求者是可見的。該平臺的內(nèi)存架構(gòu)允許將內(nèi)存區(qū)域編程為多種固定大小之一:4KB頁、64KB頁、1MB節(jié)或16MB超節(jié)。最新的內(nèi)核移植使用1MB部分,無子頁面,以簡化設(shè)計。為使代碼更便于學(xué)生理解,此實(shí)現(xiàn)保留1MB部分。

        MMU區(qū)域由轉(zhuǎn)換表描述符定義,所選的1MB節(jié)大小使用第一級描述符格式。當(dāng)C位設(shè)置后,1MB區(qū)域是可緩存的。當(dāng)考慮外設(shè)地址空間時,該區(qū)域的C位必須禁用,否則即使有基本輸出也可能會產(chǎn)生嚴(yán)重影響。描述符的12位保留用于該節(jié)的基址部分,AP位允許擴(kuò)展正常訪問權(quán)限(AP)位。當(dāng)設(shè)置APX時,將提供兩種額外的特權(quán)狀態(tài),如特權(quán)只讀,而不是特權(quán)和用戶訪問控制權(quán)限的四種狀態(tài)。本實(shí)驗不設(shè)置APX位,而是使用完全訪問模式或使用AP位的用戶寫禁用模式。域格式定義了內(nèi)存區(qū)域集合的訪問類型,從而使高級內(nèi)核具有更大的靈活性。為簡單起見,在此實(shí)現(xiàn)中,為整個1MB部分定義了一個域。之前的嵌入式Xinu移植將域位設(shè)置為Manager訪問類型,這阻止了根據(jù)訪問描述符中的權(quán)限位對訪問進(jìn)行檢查,因此永遠(yuǎn)不會生成權(quán)限錯誤。因此,要實(shí)施一定程度的內(nèi)存保護(hù),不僅需要更改AP位,還要更改域位。將這些位更改為客戶端模式,根據(jù)條目中的AP位檢查訪問。嵌入式Xinu的MMU初始化代碼是用C和ARM匯編編寫的。mmu_init() C函數(shù)使用輔助函數(shù)mmu_section()來監(jiān)督區(qū)域的一般初始化,以設(shè)置適當(dāng)?shù)拿枋龇袷轿弧R粋€for循環(huán)循環(huán)訪問內(nèi)存地址,調(diào)用helper,而一旦所有段基地址都被映射并且外設(shè)被標(biāo)記為不可緩存,MMU就可以啟動。ARM例程啟動mmu()通過CP15執(zhí)行必要的操作。首先,所有指令和數(shù)據(jù)高速緩存行都無效。在設(shè)置域和TLB基址之前,TLB會失效,以防止硬件留下無效引用重置。

        在對某個區(qū)域應(yīng)用受限訪問權(quán)限(即用戶模式只讀)并且啟用MMU后,中止模式成為可能的執(zhí)行模式。Abort模式是內(nèi)存中止時使用的異常模式。內(nèi)存中止是由無效的數(shù)據(jù)內(nèi)存訪問引起的,如變量存在于內(nèi)存地址0x00300處,并且該區(qū)域由第一級描述符定義為用戶模式只讀,則嘗試從用戶更改該處的值的行為將導(dǎo)致數(shù)據(jù)存儲器中止。中止處理程序可以編程為以某種方式處理此類故障,具體方式取決于處理者的設(shè)計,它可能會在執(zhí)行動態(tài)配置指令后再次嘗試錯誤指令。否則,簡單的中止處理程序?qū)⑻^錯誤指令。

        在本節(jié)設(shè)計的作業(yè)中,學(xué)生將看到一個按順序創(chuàng)建并運(yùn)行兩個線程的主程序。運(yùn)行的第一個線程模擬普通線程,它進(jìn)行一些系統(tǒng)調(diào)用,如gettid()、getcpuid(),并打印每個結(jié)果。第二個線程模擬全局變量的惡意賦值,將導(dǎo)致內(nèi)核出現(xiàn)不可恢復(fù)的故障。學(xué)生的任務(wù)是防止故障發(fā)生,而無需刪除或更改惡意線程的指令。

        該作業(yè)包含三個主要部分:

        ①將insert()函數(shù)設(shè)為系統(tǒng)調(diào)用;

        ②在mmu_init()例程期間修改訪問權(quán)限位;

        ③編寫一個簡單的中止模式處理程序來跳過無效指令。

        全局線程就緒列表通過insert()修改,它將已就緒線程ID放入就緒列表中。將列表索引賦值為-1將導(dǎo)致調(diào)度程序發(fā)生故障,并打印內(nèi)核錯誤消息,打印錯誤消息后不會繼續(xù)執(zhí)行,所以學(xué)生可以先考慮執(zhí)行模式提供的保護(hù)。如果在Supervisor模式下執(zhí)行insert(),那么就緒列表將只能從特權(quán)模式寫入。因此,如果就緒列表的地址已知,則MMU可以配置為只允許從特權(quán)模式對該地址進(jìn)行寫訪問。

        該實(shí)現(xiàn)使用一種方案來挑選出就緒列表,將其放入遠(yuǎn)離內(nèi)核內(nèi)存的已知位置。首先,為了使就緒列表地址已知,需要進(jìn)行修改。在initialize.c中,聲明了就緒列表隊列,可以使用編譯器指令,與加載器腳本一起,將就緒列表復(fù)制到已知位置(如圖4)。因為MMU使用1MB的部分進(jìn)行1:1轉(zhuǎn)換,就緒列表可以定義在較高的物理部分,如0x00800000。

        通過可見的已知位置的就緒列表,學(xué)生可以開始修改mmu_init()以使用USER READONLY訪問權(quán)限位。最初,兩個AP位均被設(shè)置,允許對特權(quán)和非特權(quán)模式進(jìn)行完全讀寫訪問。修改僅需要設(shè)置第二個AP位,從而授予用戶對保存就緒列表的區(qū)域進(jìn)行只讀訪問。一旦完成,學(xué)生將注意到內(nèi)核在嘗試進(jìn)行現(xiàn)在無效的分配后掛起,這不是期望的行為,描述要求跳過無效指令,因此下一部分需要一些ARM匯編。內(nèi)核掛起是因為它嘗試內(nèi)存寫入時出現(xiàn)錯誤,導(dǎo)致內(nèi)核陷入了中止模式。學(xué)生必須修改中止處理程序以跳過出錯的指令。當(dāng)處理器進(jìn)入中止模式時,鏈接寄存器被設(shè)置為中止指令的地址+8。因此,要返回到無效賦值之后的指令,中止處理程序必須從鏈接寄存器中減去4并跳轉(zhuǎn)到該地址。

        結(jié)果與展望

        本文引入了系統(tǒng)調(diào)用,這是嵌入式操作系統(tǒng)的一個重大結(jié)構(gòu)變化。此外,還提供了基于模式的內(nèi)存保護(hù)實(shí)現(xiàn),所設(shè)計的作業(yè)提出了相關(guān)理論在實(shí)踐中的應(yīng)用方式。通過教學(xué)實(shí)踐,取得了較好的效果。

        未來工作的許多方向都涉及更高層次的擴(kuò)展,如可以研究嵌套SVC調(diào)用。嵌套SVC指令的能力將簡化Xinu內(nèi)核,特別是如果需要單獨(dú)的用戶和內(nèi)核空間。另外,據(jù)學(xué)生反饋,他們對現(xiàn)代CPU的多核技術(shù)較感興趣,因此,筆者目前正在設(shè)計啟用樹莓派上其他三個核心的實(shí)驗材料。

        參考文獻(xiàn):

        [1]劉威,常瑞,謝耀濱.面向系統(tǒng)能力培養(yǎng)的嵌入式系統(tǒng)課程教學(xué)模式改革與實(shí)踐[J].計算機(jī)教育,2019(01):39-43.

        [2]ARM Ltd.ARM Architecture Reference Manual Armv8,for Armv8-A architecture profile[EB/OL].https://static.docs.arm.com/ddi0487/ea/DDI0487E.

        [3]ARM Ltd. SVC Handlers.[EB.OL].https://infocenter.arm.com/help/index.js?topic=/com.arm.doc.dui0203j/Cacdfeci.html.

        [4]Dennis Brylow. An experimental laboratory environment for teaching embedded operating systems[C].Proceedings of the 39th SIGCSE technical symposium on computer science education:192-196.

        [5]Douglas Comer.Operating System Design:The Xinu Approach[M].鄒恒明,周亮,曹浩,等,譯.北京:機(jī)械工業(yè)出版社,2013.

        [6]陳剛,關(guān)楠,呂鳴松,等.實(shí)時多核嵌入式系統(tǒng)研究綜述[J].軟件學(xué)報,2018,29(07):2152-2176.

        猜你喜歡
        實(shí)驗教學(xué)
        問題引導(dǎo)在初中化學(xué)實(shí)驗教學(xué)中實(shí)踐探索
        家長(2023年2期)2023-03-14 06:55:16
        關(guān)于基礎(chǔ)教育階段實(shí)驗教學(xué)的幾點(diǎn)看法
        光反應(yīng)與有機(jī)化學(xué)實(shí)驗教學(xué)結(jié)合的研究
        云南化工(2021年8期)2021-12-21 06:38:04
        小議初中化學(xué)演示實(shí)驗教學(xué)
        甘肅教育(2020年4期)2020-09-11 07:42:36
        電容器的實(shí)驗教學(xué)
        物理之友(2020年12期)2020-07-16 05:39:20
        對初中化學(xué)實(shí)驗教學(xué)的認(rèn)識和體會
        甘肅教育(2020年8期)2020-06-11 06:10:04
        幾何體在高中數(shù)學(xué)實(shí)驗教學(xué)中的應(yīng)用
        基于云計算的計算機(jī)實(shí)驗教學(xué)探討
        高中生物實(shí)驗教學(xué)中形成性評價的實(shí)施——以“觀察根尖分生區(qū)組織細(xì)胞的有絲分裂”實(shí)驗教學(xué)為例
        高中自然地理課堂實(shí)驗教學(xué)的探討
        久久久久久久久无码精品亚洲日韩| 无码骚夜夜精品| 男同gay毛片免费可播放| 就去吻亚洲精品欧美日韩在线| 欧美国产伦久久久久久久| 亚洲国产av午夜福利精品一区| 一区二区三区国产高清视频| 欧美老熟妇乱xxxxx| av无码人妻中文字幕| 亚洲国产精品久久久久秋霞1| 国产欧美日韩网站| 青青草视全福视频在线| 国产亚洲av看码精品永久| 亚洲日韩中文字幕无码一区| 久久99精品久久久久久hb无码| 人妻无码人妻有码不卡| 国产极品大秀在线性色| 国产在线视频一区二区天美蜜桃 | 午夜精品一区二区三区的区别 | 丁香婷婷色| 国产免费精品一品二区三| 激情在线一区二区三区视频| 激情综合丁香五月| 久草视频这里有精品| 亚洲av中文字字幕乱码| 一个色综合中文字幕人妻激情视频| 久久aⅴ人妻少妇嫩草影院| 九九99国产精品视频| 国产精品一区二区久久精品蜜臀| 国产女人乱码一区二区三区| 亚洲国产一二三精品无码| 欧美操逼视频| 国产精品高潮av有码久久| 亚洲精品成人久久av| 中文字幕有码人妻在线| 一本一道av无码中文字幕麻豆| 精品国产人成亚洲区| 亚洲韩国在线| 高清成人在线视频播放| 精品国产一区二区三区三级| 国产一区二区三精品久久久无广告 |