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

ARTICLE DETAIL

資訊詳情

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

從零編寫Linux 0.11中斷機制:CPU如何響應(yīng)外部事件?

從零編寫Linux 0.11中斷機制:CPU如何響應(yīng)外部事件? 從零編寫Linux 0.11的系列寫到這一章系統(tǒng)已經(jīng)能啟動、能進保護模式、能打印字符了。但說實話這時候的內(nèi)核頂多算個“大號引導(dǎo)程序”——因為CPU還在傻乎乎地按順序執(zhí)行指令。外部設(shè)備來了數(shù)據(jù)它不知道定時器走了它不知道連程序自己犯了錯它也來不及反應(yīng)。中斷機制就是讓這顆CPU從“被動執(zhí)行”變成“主動響應(yīng)”的那一錘子。寫這一章時我最大的體會是中斷不是操作系統(tǒng)的一個“功能模塊”而是整個內(nèi)核賴以生存的底層骨架不理解中斷后面講進程調(diào)度、內(nèi)存管理都會像在聽天書。先回顧一個最基礎(chǔ)的問題CPU怎么知道外部有事情發(fā)生答案只有兩條路輪詢和中斷。輪詢是CPU每隔一段時間就問一遍設(shè)備“你有事嗎”有事就處理沒事就接著干。這種方式簡單直觀但CPU的大部分時間都浪費在“問”上面而且延遲不確定——設(shè)備正好在上一次問完之后來消息CPU得等到下一次輪詢才能知道運氣差一點延遲能被拉得很長。中斷正好反過來設(shè)備主動發(fā)一個電信號CPU在每執(zhí)行完一條指令后檢查一下“有沒有中斷請求”有就暫停當(dāng)前工作跳轉(zhuǎn)到對應(yīng)處理程序處理完再回來。這個“檢查”是硬件在指令周期的微操作里完成的開銷極小而且響應(yīng)是事件驅(qū)動的來了就處理不來了CPU安心做自己的事。用人類打個比方輪詢像你每隔十分鐘去門口看快遞到了沒有中斷像給快遞員一個門鈴他到了按一下你再放下手頭的事去開門。門鈴這個機制就是8259A和IDT配合實現(xiàn)的。1.2 中斷向量號從0到255的編號世界CPU能識別的中斷事件不是一個而是256個每個都有一個編號叫中斷向量號。這個256不是拍腦袋定的而是因為IDT最多放256個描述符每個描述符8字節(jié)總共2KB正好是頁大小的整數(shù)倍查表方便。其中0到31號向量是CPU保留的異常由CPU內(nèi)部觸發(fā)包括除零、缺頁、非法指令等32到255號是外部中斷和軟件中斷。在Linux 0.11里32到47被用作8259A映射過來的硬件中斷號1280x80被用作系統(tǒng)調(diào)用軟中斷48到255還空著一大把后面要加什么新功能再分配。這個編號跟你平時說的“中斷號”IRQ0、IRQ1不是一回事中間差了一個偏移量。8259A的IRQ0對應(yīng)CPU向量號32IRQ1對應(yīng)33這就是Linux 0.11里init_IRQ要做的“重新映射”工作。如果你不重新映射IRQ0默認對應(yīng)CPU向量8一進來就會直接撞上Double Fault異常系統(tǒng)當(dāng)場崩掉。我當(dāng)初偷懶跳過PIC初始化結(jié)果模擬器直接重啟查了半天不知道怎么回事。1.3 保護模式與實模式的分水嶺這一章的標(biāo)題是“中斷與異?!钡绻豢磳嵞J奖热鏐IOS階段的中斷那跟裸機編程沒什么區(qū)別中斷向量表放在內(nèi)存地址0x00000開始處每一項4字節(jié)存的是段地址和偏移查表跳過去完事。但進入保護模式之后一切都變了。實模式的“中斷向量表”變成了“中斷描述符表”表的位置不再固定在0x0而是由IDTR寄存器告訴你它在哪里。每一項不再是一個簡簡單單的地址而是一個8字節(jié)的門描述符——里面不僅有處理程序的地址還包含特權(quán)級和類型信息。這意味著CPU在跳轉(zhuǎn)之前還要做一大堆安全檢查。很多人第一次寫保護模式內(nèi)核最容易掛在這一點上你在實模式下的中斷能跑進了保護模式一開中斷就重啟十有八九是IDT沒建立或者門描述符的類型/特權(quán)級不對。提示CPU在保護模式下每執(zhí)行完一條指令都會檢查“當(dāng)前有沒有待處理的中斷”。只要中斷允許位IF是1并且IDT里對應(yīng)向量是有效描述符它就會立刻走中斷流程。所以“開中斷”這件事不是簡單的sti就能完事你得先保證IDT已經(jīng)就緒。2. IDT一張8字節(jié)一行的查找表2.1 門描述符的位級拆解IDT里的每一項叫門描述符一共8字節(jié)。以Linux 0.11的啟動初始化代碼為例最終要填的是這樣一個結(jié)構(gòu)內(nèi)存小端序字節(jié)0到1處理函數(shù)偏移地址的低16位字節(jié)2到3段選擇符就是要跳轉(zhuǎn)到的目標(biāo)代碼段這里固定填0x0008也就是內(nèi)核代碼段字節(jié)4這個字節(jié)比較特殊一共8位大部分被用作類型字段的低位在Linux 0.11的寫法里它和字節(jié)5一起構(gòu)成屬性字節(jié)5P存在位、DPL2位、S1位、Type4位字節(jié)6到7處理函數(shù)偏移地址的高16位一個字一個字拆開看對于中斷門來說Type111014對于陷阱門Type111115。P位必須為1DPL是特權(quán)級。內(nèi)核態(tài)的中斷門DPL0系統(tǒng)調(diào)用門DPL3。所以內(nèi)存里看到的屬性值一般是0x8E00內(nèi)核中斷門、0x8F00內(nèi)核陷阱門、0xEF00系統(tǒng)調(diào)用陷阱門。Linux 0.11源碼里的set_intr_gate、set_trap_gate、set_system_gate往描述符屬性字段里塞的就是這幾個值。我不厭其煩地把位布局講清楚是因為后面手工寫_set_gate宏時只要任何一個位放錯系統(tǒng)表現(xiàn)都會非常詭異。比如DPL寫成了0你去用戶態(tài)調(diào)int 0x80CPU直接判定為特權(quán)級違規(guī)扔一個13號異常出來用戶程序根本進不了內(nèi)核。2.2 中斷門、陷阱門、任務(wù)門選哪個CPU一共支持三種門。任務(wù)門會觸發(fā)硬件任務(wù)切換Linux 0.11基本沒用我們直接跳過中斷門和陷阱門的區(qū)別只有一個細節(jié)進入中斷門時CPU會自動把IF標(biāo)志清0也就是關(guān)中斷防止在處理過程中被新的中斷打斷而陷阱門不會清IF。這個區(qū)別決定了它們的用途。硬件中斷比如時鐘中斷、鍵盤中斷通常用中斷門因為處理過程是高優(yōu)先級的不希望被打擾異常和系統(tǒng)調(diào)用通常用陷阱門因為進入內(nèi)核后我們往往要主動管理中斷狀態(tài)比如缺頁異常處理中你可能希望保持中斷開啟讓磁盤請求完成時能觸發(fā)中斷來喚醒自己。Linux 0.11里trap_init用set_trap_gate注冊異常init_IRQ用set_intr_gate注冊硬件中斷set_system_gate注冊系統(tǒng)調(diào)用門各司其職。2.3 lidt只做一件事告訴CPU表在哪IDT準備好以后需要執(zhí)行l(wèi)idt指令把表的位置和大小加載到IDTR寄存器。IDTR一共6字節(jié)低2字節(jié)是表長度減1高4字節(jié)是表的線性地址。在Linux 0.11的head.s里setup_idt這個匯編函數(shù)干的事就是把一整張“空表”鋪好setup_idt: lea ignore_int, %edx movl $0x00080000, %eax movw %dx, %ax movw $0x8E00, %dx lea idt, %edi mov $256, %ecx rp_sidt: movl %eax, (%edi) movl %edx, 4(%edi) addl $8, %edi dec %ecx jne rp_sidt lidt idt_descr ret這段代碼先把256個中斷向量統(tǒng)一指到一個ignore_int函數(shù)——這個函數(shù)暫時什么都不做只在出錯時打一行提示——然后把門類型設(shè)成中斷門0x8E00最后加載IDTR。這其實是一種“先把桌子擺好”的啟動策略剛開始來不及逐個設(shè)置每個中斷的處理函數(shù)就先拿一個統(tǒng)一入口頂住保證系統(tǒng)不會因為表不存在而崩潰。之后trap_init和init_IRQ再逐個替換成真正的處理函數(shù)。3. 異常CPU主動扔過來的“錯誤報告”3.1 三種異常的語義差異異常跟外部中斷最大的區(qū)別是它不是外部設(shè)備發(fā)來的而是CPU在執(zhí)行指令的過程中自己發(fā)現(xiàn)不對勁。比如你寫了一條除數(shù)為0的指令CPU在微碼層面發(fā)現(xiàn)除數(shù)是0就立刻觸發(fā)0號向量你訪問了一個沒有映射的頁就觸發(fā)14號向量。異??梢苑殖扇怓ault故障、Trap陷阱、Abort終止。用一句話解釋區(qū)別Fault指令“還沒執(zhí)行完”就發(fā)現(xiàn)問題保存的EIP指向觸發(fā)異常的那條指令處理完后CPU會重新執(zhí)行這條指令。頁錯誤就是典型異常處理函數(shù)把缺的頁補上之后回來還能繼續(xù)執(zhí)行。Trap指令“已經(jīng)執(zhí)行完”了才觸發(fā)保存的EIP指向下一條指令。調(diào)試斷點int3就是陷阱處理完直接往下走。Abort發(fā)生了嚴重錯誤程序已經(jīng)無法繼續(xù)CPU保存的EIP都不保證正確。Double Fault和機器檢查異常屬于這一類。這個區(qū)別直接決定異常處理函數(shù)返回后CPU去哪。如果你想寫一個“屏蔽掉除零錯誤”的實驗型處理程序你必須想清楚你站在Fault的立場上處理完要重新執(zhí)行那條除法指令如果除數(shù)和被除數(shù)沒改你會無限觸發(fā)這個異常。3.2 有錯誤碼和無錯誤碼另一個容易踩的點是不是所有異常壓棧內(nèi)容都一樣。大部分異常壓入EFLAGS、CS、EIP之后就跳轉(zhuǎn)到處理函數(shù)了但有少數(shù)異常會再壓入一個錯誤碼告訴你是哪個段、哪個頁惹的禍。這些異常包括10號無效TSS、11號段不存在、12號棧段異常、13號一般保護異常、14號頁異常。這個錯誤碼是硬件自動壓入的但處理函數(shù)返回時CPU并不會自動把錯誤碼彈出去。所以Linux 0.11在處理這些異常時特意把入口分成兩套無錯誤碼的在入口處先壓入一個假的錯誤碼讓后續(xù)C函數(shù)統(tǒng)一按“有一個錯誤碼參數(shù)”來處理有錯誤碼的直接使用“參數(shù)已經(jīng)由CPU壓棧”的入口。我在寫簡單實驗時曾直接把有錯誤碼的異常和沒錯誤碼的異常當(dāng)成同一個入口結(jié)果處理函數(shù)返回時棧指針對不上iret彈出的是錯誤碼程序直接跑飛。這個問題非常隱蔽你得先把哪些向量帶錯誤碼背下來不然調(diào)試到深夜也查不出所以然。3.3 Linux 0.11的traps.c結(jié)構(gòu)Linux 0.11的異常處理代碼有一個“統(tǒng)一處理差異化打印”的好設(shè)計。在kernel/traps.c里它給每個異常都注冊了一個入口函數(shù)這些入口函數(shù)最終都會跳轉(zhuǎn)到一組專門的匯編代碼把現(xiàn)場壓棧然后把“向量號、錯誤碼、當(dāng)前EIP”作為參數(shù)調(diào)C函數(shù)。比如初始化代碼void trap_init(void) { set_trap_gate(0, divide_error); set_trap_gate(1, debug); set_trap_gate(2, nmi); set_trap_gate(3, int3); set_trap_gate(4, overflow); set_trap_gate(5, bounds); set_trap_gate(6, invalid_op); set_trap_gate(7, device_not_available); set_trap_gate(8, double_fault); set_trap_gate(9, coprocessor_segment_overrun); set_trap_gate(10, invalid_TSS); set_trap_gate(11, segment_not_present); set_trap_gate(12, stack_segment); set_trap_gate(13, general_protection); set_trap_gate(14, page_fault); set_trap_gate(15, reserved); set_trap_gate(16, coprocessor_error); }這里的第二個參數(shù)是“入口函數(shù)的地址”但這個入口函數(shù)不是普通的C函數(shù)而是一段匯編。為什么不能用C函數(shù)直接當(dāng)中斷入口因為C編譯器生成的函數(shù)開頭會有標(biāo)準的棧布局和現(xiàn)場保存動作但它不會替你把EFLAGS、CS這些由硬件壓棧的值按預(yù)期順序彈出來更不會保證處理完后用iret返回。中斷入口必須嚴格遵循“硬件壓棧順序”和“iret彈出順序”所以必須有匯編包一層。這是初寫中斷時最大的思維轉(zhuǎn)換中斷處理函數(shù)的“調(diào)用約定”不是操作系統(tǒng)約定的是CPU硬件約定的。你沒辦法讓編譯器替你遵守這個約定只能手寫。4. 8259A把硬件設(shè)備的中斷請求“接線”給CPU4.1 主片從片為什么是級聯(lián)的8259A是可編程中斷控制器俗稱PIC。在PC/AT架構(gòu)里兩塊8259A級聯(lián)主片管IRQ0到IRQ7從片管IRQ8到IRQ15從片的中斷輸出接到主片的IRQ2上。所以主片IRQ2這條線承載的是“從片有中斷”的信號。這么設(shè)計的根本原因很樸實老CPU只有一根INT引腳硬件上無法直接接16個設(shè)備只能通過一個控制器匯總。8259A內(nèi)部有一個優(yōu)先級裁決器多設(shè)備同時請求時按優(yōu)先級挑一個報給CPU。你要是不初始化8259A它內(nèi)部狀態(tài)完全是亂的中斷請求的映射和屏蔽位全不對設(shè)備一觸發(fā)就覺得“有扇門倒了”系統(tǒng)立刻崩。4.2 初始化參數(shù)ICW與OCW的計算Linux 0.11的init_8259A函數(shù)寫得很清楚我把關(guān)鍵參數(shù)列一下參數(shù)主片從片含義ICW10x110x11需要ICW4、級聯(lián)模式ICW20x200x28中斷向量起始號主片32、從片40ICW30x040x02級聯(lián)關(guān)系從片掛在主片IRQ2上ICW40x010x018086模式OCW10xFF0xFF默認全部屏蔽逐個開放主片端口是0x20、0x21從片端口是0xA0、0xA1。為什么要讓主片從32開始因為0到31是CPU異常的保留區(qū)外部中斷必須避開。IRQ0對應(yīng)向量32IRQ7對應(yīng)39IRQ8對應(yīng)40IRQ15對應(yīng)47后面接設(shè)備時看到0x20、0x21這些宏就應(yīng)該條件反射地想到“這是PIC的口地址不是內(nèi)存地址”。4.3 時鐘中斷是怎么“開”起來的時鐘中斷是整個操作系統(tǒng)的脈搏。Linux 0.11在init_IRQ里除了初始化8259A還做了兩件事注冊IRQ0的handler以及操作OCW1把IRQ0對應(yīng)的中斷釋放出來。比如主片掩碼改成0xFE就是把IRQ0開放其他保持屏蔽。注意這里有一個容易混的概念CPU的IF標(biāo)志是“總閘”PIC的OCW1是“分閘”一個設(shè)備要真正觸發(fā)中斷總閘和分閘都得打開。我在實驗里只開了IF但忘了改OCW1結(jié)果時鐘中斷永遠不來系統(tǒng)像死了一樣查了很久才意識到PIC側(cè)還被屏蔽著。5. 系統(tǒng)調(diào)用讓用戶程序主動“敲門”進內(nèi)核5.1 int 0x80一條特殊指令系統(tǒng)調(diào)用是中斷機制最巧妙的用途。用戶態(tài)的程序想訪問硬件、申請內(nèi)存、打開文件直接執(zhí)行特權(quán)指令是會被CPU拒之門外的因為當(dāng)前特權(quán)級是3而特權(quán)指令要求特權(quán)級0。那怎么辦答案是用戶程序執(zhí)行一條int 0x80指令主動觸發(fā)一個軟件中斷。關(guān)鍵點是0x80這個系統(tǒng)調(diào)用門描述符的DPL被設(shè)成了3。DPL3意味著“處在特權(quán)級3的用戶代碼也有權(quán)調(diào)用這個門”。如果DPL設(shè)成0用戶程序一執(zhí)行int 0x80CPU直接判定權(quán)限不足觸發(fā)13號一般保護異常。你可以自己動手改一下DPL試試能非常直觀地看到權(quán)限檢查在起作用。5.2 system_call的入口匯編邏輯在Linux 0.11里0x80向量指向system_call這個匯編函數(shù)它的執(zhí)行分為三步用SAVE_ALL把用戶態(tài)帶來的所有寄存器壓入內(nèi)核棧形成pt_regs結(jié)構(gòu)。檢查系統(tǒng)調(diào)用號是否越界然后根據(jù)eax里的調(diào)用號跳到sys_call_table數(shù)組對應(yīng)的C函數(shù)。比如eax2就是forkeax4就是write。這里有一個很漂亮的細節(jié)sys_call_table是個函數(shù)指針數(shù)組數(shù)組下標(biāo)就是調(diào)用號所以“根據(jù)調(diào)用號分發(fā)”就是一次“數(shù)組索引間接跳轉(zhuǎn)”。拿到返回值后把返回值寫回內(nèi)核棧中原來eax保存的位置這樣iret恢復(fù)時eax自然就是返回值然后用RESTORE_ALL彈出寄存器執(zhí)行iret回到用戶態(tài)。很多人在理解系統(tǒng)調(diào)用時會把它當(dāng)成普通的“函數(shù)調(diào)用”但它的本質(zhì)是中斷調(diào)用用戶程序不壓返回地址CPU壓的是EFLAGS、CS、EIP用戶程序不保證棧方向CPU要切換到內(nèi)核棧。所以你寫系統(tǒng)調(diào)用時不能寫“返回值在eax里”就直接return必須先把現(xiàn)場完整壓棧因為中斷的返回不是ret是iret。5.3 從用戶態(tài)到內(nèi)核態(tài)的棧切換還有一個繞不開的細節(jié)特權(quán)級變了棧也要變。Linux 0.11為每個任務(wù)都準備了一個內(nèi)核棧TSS里有ss0和esp0兩個字段記錄內(nèi)核棧的段和棧頂。當(dāng)用戶態(tài)程序觸發(fā)int 0x80時CPU看到當(dāng)前CPL3而目標(biāo)代碼段的DPL0立即從當(dāng)前棧切換到ss0:esp0指向的內(nèi)核棧然后才壓入EFLAGS、CS、EIP。整個過程由CPU硬件完成不需要操作系統(tǒng)手動干預(yù)。用戶態(tài)原本棧里的數(shù)據(jù)并沒有被搬走它們還在用戶棧上CPU壓進去的CS是用戶態(tài)CSss和esp保存在TSS里處理完通過iret彈回。到內(nèi)核態(tài)之后想訪問用戶棧里的參數(shù)就需要通過用戶空間指針去讀這也是為什么Linux 0.11里很多系統(tǒng)調(diào)用函數(shù)要從“用戶棧上取參數(shù)”這一步開始。6. 代碼落地從零初始化IDT的完整記錄6.1 分階段先setup再trap_init再init_IRQ我在實際搭建內(nèi)核的過程中中斷相關(guān)的初始化是分三個時間點進行的這個順序是Linux 0.11源碼給我的啟發(fā)也強烈推薦大家遵循同樣的節(jié)奏第一階段在head.s里setup_idt把256個向量全部指向ignore_int。這一步的目的是先把表建起來但先不處理任何中斷事件。第二階段在main的trap_init里把0到16的CPU異常逐個替換成真正的處理入口。第三階段在init_IRQ里初始化8259A把硬件中斷向量注冊好并打開需要的IRQ屏蔽位。這個順序不能亂。如果上來就讓硬件中斷開著但IDT里沒有對應(yīng)描述符CPU查表失敗直接引發(fā)Double Fault。先讓PIC全部屏蔽再逐個開放就能把“不知道該誰處理的中斷”扼殺在萌芽里。6.2 _set_gate宏逐行拆解_set_gate是Linux 0.11里最精華的宏之一很多人第一次看到它的內(nèi)聯(lián)匯編會頭痛。我把它逐行翻譯一下#define _set_gate(gate_addr, type, dpl, addr) \ __asm__(movw %%dx,%%ax\n\t \ movw %0,%%dx\n\t \ movl %%eax,%1\n\t \ movl %%edx,%2\n\t \ : \ : i ((short) (0x8000(dpl13)(type8))), \ o (*((char *) (gate_addr))), \ o (*((char *) (gate_addr)4)), \ d ((char *) (addr)), \ a (0x00080000))編譯器會把d約束里的addr裝進edxa約束里的0x00080000裝進eax。movw %dx, %ax把addr低16位搬到ax這時候eax就變成了0x0008xxxx——前16位是段選擇符0x0008后16位是處理函數(shù)地址的低16位。接著movw %0, %dx把屬性比如0x8E00裝進dx此時edx的高16位仍然是addr的高16位低16位是屬性。最后兩條movl把edx、eax分別寫入門描述符的第0字節(jié)和第4字節(jié)。一個8字節(jié)的門描述符就填好了。寫這個宏的時候我建議初學(xué)的人不要光看宏一定要把門描述符的8字節(jié)按“偏移低16位/段選擇符/屬性/偏移高16位”畫個圖對著填充一遍。我當(dāng)年在紙上畫了不下十遍才真正記住每個bit在哪。6.3 trap_init與init_IRQ的掛接細節(jié)trap_init的代碼前面已經(jīng)展示過了它調(diào)set_trap_gate把0到16的異常入口都設(shè)好。這里有個容易被忽略的點2號向量NMI也注冊了。NMI是不可屏蔽中斷不經(jīng)過8259ACPU的NMI引腳一被拉低就直接觸發(fā)2號向量。Linux 0.11對NMI的處理很佛系打印一條錯誤消息然后進死循環(huán)。因為NMI本身意味著硬件層面嚴重異常普通內(nèi)核一般不會去“處理”它。init_IRQ做的事是先初始化PIC然后把硬件中斷向量注冊到IDT。注冊時要先把門描述符填好再在PIC里開放對應(yīng)IRQ順序也是先注冊后開放。我實驗時試過反著來結(jié)果中斷先到了處理函數(shù)還沒掛上系統(tǒng)啟動到一半就崩了。這些順序問題在教科書里不會直接告訴你只有跑一遍才知道。7. 實戰(zhàn)復(fù)現(xiàn)用一個小demo驗證中斷基礎(chǔ)7.1 先搭一個最小可運行的中斷實驗環(huán)境如果你也正在跟著“從零編寫Linux 0.11”這一系列走我會建議你寫到這一章時不要急著一口氣調(diào)完整內(nèi)核而是先做一個獨立小實驗只保留最精簡的啟動代碼、建立IDT、初始化8259A用一個自定義門來模擬一個“中斷測試”處理函數(shù)里設(shè)置一個標(biāo)志變量并打印一段字符串。如果實驗?zāi)茉谀M器里跑出預(yù)期的打印結(jié)果說明IDT、門描述符、特權(quán)級鏈路已經(jīng)通了。直接構(gòu)造一個最小的測試入口void test_int_entry(void) { printk([test] interrupt handler called!\n); } void test_setup(void) { set_intr_gate(0x40, test_int_entry); __asm__(int $0x40); }如果屏幕上打出了test消息就說明IDT設(shè)置、門描述符類型、段選擇符、特權(quán)級檢查全都沒問題——這幾個環(huán)節(jié)只要有一步出錯輕則沒反應(yīng)重則整機重啟。這個小demo比在一整個復(fù)雜內(nèi)核里排查問題要快得多。7.2 用int指令主動觸發(fā)驗證玩過匯編的人都知道int指令后面跟的是向量號int 0x40這種寫法在執(zhí)行時CPU查的是IDT的第0x40項。所以在上述測試里只要把set_intr_gate(0x40, ...)設(shè)好然后執(zhí)行int 0x40就能直接跳過外部設(shè)備純靠軟件觸發(fā)一次完整的中斷流程。這一步的價值在于如果連軟件觸發(fā)的內(nèi)部中斷都進不去處理函數(shù)那問題一定出在IDT、門描述符或特權(quán)級這部分如果軟件觸發(fā)一切正常但外部設(shè)備的中斷沒反應(yīng)那問題就出在PIC初始化或設(shè)備本身。這相當(dāng)于給整個中斷鏈路做了“單元測試”排查范圍一下子縮小了。我后來調(diào)試鍵盤驅(qū)動時就是靠這個把IDT的問題和PIC的問題區(qū)分開的。8. 調(diào)試心得與避坑清單8.1 Triple fault是怎么發(fā)生的剛連上模擬器跑內(nèi)核時遇到最多的一個現(xiàn)象是啟動到某一步屏幕上最后一行打印消失了或者模擬器直接黑屏甚至整個模擬機自己重啟。這個現(xiàn)象叫Triple Fault——CPU在處理第一個異常時發(fā)現(xiàn)IDT無效觸發(fā)Double Fault處理Double Fault時IDT還是無效那就無藥可救硬件直接復(fù)位重啟。它連顯示錯誤的機會都沒有。最常見的原因有這幾個lidt指令還沒執(zhí)行就開了中斷IDT放在了一個不可訪問的內(nèi)存區(qū)域或者IDTR的基地址算錯了IDT描述符里的段選擇符指向的段不存在或者特權(quán)級不匹配給8259A的初始化命令順序搞錯導(dǎo)致IRQ向量號錯亂。排查Triple fault的辦法是給模擬器打開中斷日志讓它把每次中斷/異常的詳細信息寫進日志文件CPU當(dāng)前在哪個EIP、觸發(fā)哪個向量、IDT表項內(nèi)容是什么都一清二楚。我第一次看到日志里滿屏的“check_exception: 8”時才意識到是IDT表項全空引起的兜底異常。8.2 8259A的坑中斷全被屏蔽了另一個特別容易忽略的問題init_8259A之后OCW1發(fā)0xFF把所有中斷屏蔽了外部硬件中斷根本到不了CPU。這時候你需要打開對應(yīng)位。我當(dāng)時測試鍵盤中斷發(fā)現(xiàn)怎么敲都沒反應(yīng)查了很久才發(fā)現(xiàn)IRQ1一直是masked狀態(tài)。所以“要不要開CPU中斷”和“PIC里要不要開某個IRQ”是兩件事前者是CPU級IF標(biāo)志后者是PIC級屏蔽寄存器少哪一個都不行。8.3 中斷打開后系統(tǒng)正常啟動的順序我們經(jīng)常說要“先注冊后開放”其實開CPU級中斷的時間點是最后一個階段。head.s剛進保護模式時清IF是必須的因為此時IDT還沒建好。trap_init、init_IRQ都完成之后才在main里用sti打開IF。你如果一開始就讓IF1系統(tǒng)在IDT半成品狀態(tài)下一有風(fēng)吹草動就崩。還有一個小細節(jié)Linux 0.11里的sti不是放在init_IRQ之后馬上做的它是在調(diào)度器第一次schedule之前才做。也就是說內(nèi)核把“能響應(yīng)中斷的所有條件”準備好之后才把門打開。這個思想特別值得學(xué)習(xí)不要在任何前置條件未滿足時打開中斷寧可晚一點開不要冒一點險。9. 寫在最后中斷讓內(nèi)核活了起來這一章寫到這里我對中斷機制的看法已經(jīng)變了不少。以前看操作系統(tǒng)教材總覺得中斷是一堆規(guī)范和術(shù)語的堆砌真正自己從零寫完一個能響應(yīng)中斷的內(nèi)核之后才明白“中斷”就是操作系統(tǒng)活起來的“呼吸”。沒有中斷內(nèi)核只是一個執(zhí)行完就停的批處理程序有了中斷它才能感知外部世界、管理進程、調(diào)度任務(wù)。我個人的建議是如果你也在手寫操作系統(tǒng)不要只滿足于“能把Linux 0.11跑起來”。試著拆掉IDT、拆掉PIC一點一點重新加回來觀察每種現(xiàn)象的根源。這個過程比跟著別人的代碼讀十遍都有用。中斷這一章是最容易讓人崩潰的但也是最能讓人建立起“CPU硬件與軟件協(xié)作”直覺的地方。接下來寫內(nèi)存分頁和進程調(diào)度時你會發(fā)現(xiàn)到處都是中斷和異常在背后撐著——到時候再回頭看這一章很多當(dāng)時覺得晦澀的細節(jié)都會變得理所當(dāng)然。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
2017大香蕉| 亚洲第一黄色av网站 | 日韩精品三级片长长久久| 有码专区最新中文字幕有码| 午夜a成v人电影| 婷婷激情五月综合| 啊啊啊啊啊啊啊啊啊啊在线观看| 超碰97伊人| 99精品欧美一区二区三区桃色| 天天插夜夜操| 成人AV素股で擦久久| 精品无码产区一区二| 婷婷涩嫩草鲁丝久久午夜精品| A V视频日本| 校园春色制服丝袜中文字亚洲| 久久最新免费视频23| 一二三四视频在线社区中文字幕| 国产综合色精品在线观看| 亚欧高清在线| 97色欧州| 免费看片黄| 亚洲熟妇乱女区二区三区| 成人五月天色网| 在线观看不卡一区二区三区| 国产性感在线观看| 亚洲乱码精品一区二区| 中文字幕乱码人妻一区二区三区,99精品 | 国产一区二区在线看| 99人妻| 亚洲最大91网| 老外又粗又长一晚做五次| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 亚洲天堂另类| 亚洲天堂男人在线| 欧美天天弄| 五月黑AⅤ| 婷婷超| 久久嫩草国产成人一区| 久久精品午夜国产亚洲AV无码| 欧美一区二区在线资源| 国内偷拍精品一区二区| 校园春色宗合网| 人人射人人操人人摸| 日日噜噜夜夜久久亚洲一区二区| 操婢日韩| 久久这里只精品99re66图| 嗯嗯啊啊视频在线看| 大香蕉乱伦视频网| 亚洲图片在线| 丰满少妇人妻久久久久久| 中文日本免费高清| 天天综合网~91| 国产大片精久久久久久| 国产亚洲国产超碰| 中文字幕天堂在线| 骚货操死你| 日韩av在线免费网站| 99热在线播放| 亚洲无码久久久久久久| 无码不卡亚洲成?人片| 98精品国产乱码久久久久久| 久久久一热在线播放| 影音先锋新男人| 乱操9999| 屁股久久久久久久久| 97在线观看免费视频l| www网站黄| 欧美v亚洲v综合v国产v妖精| 人妻人久久精品中文字幕| 75大香蕉| 天色综合网| 久久久中文| 新婚人妻扶着粗大强行坐下| 亚洲无码成人精品| 免费av高清无码| 大香蕉中文| 丝袜色综合| 午夜美女诱惑电源网| 亚洲免费看片| 激情专区综合| 丰满翘臀美女影院视频| 精品久久久久黄少妇| 哑洲在线| 超碰97日韩| 少妇熟女一区二区三区| 精品九九九| 操逼日批| 狠狠色综合网| 熟妇视频一区二区三区在线观看| 丝袜美腿射精91| 2020中文字幕在线| 超碰美国| 久久亚洲中文字幕视频| 成人麻豆av电影网站| 免费av大片| 干婷婷综合网| 国产黄色动态精品| 青青草依人大香蕉| 亚洲成人在线高清| 加勒比大香蕉视频在线| 91在线色| 久久久久久十| 精品午夜福利国产一区二区在线观看| 欧美一区二区三区四区综合| 无码人妻一区二区三区色欲aⅴ| 国产精品999zyz| 亚州宗合另类| 国产精品午夜福利| 91精品国产日韩欧美综合| 新精精品久久精品| 人妻 丝袜美腿 中文字幕| 亚洲欧洲久久天堂| 97精品视频网站| 97色97好| 亚洲丰满很很操| 一二三四视频在线社区中文字幕| av 模特一区了| 91在线视频免费中出| 国产真乱mangent| 国产97亚洲| 青青草中日韩在线| 96超碰网| 色天使大香蕉| 男人的天堂在线| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 丁香六月激情| 欧美性爱无码一区二区三区| 成人日本视频人妻在线| 久啪| 日韩精品 欧美激情| 国产乱子伦一区二区三区在线观看| 日本人妻最新在线中| 玖玖爱在线视频免费观看| 清纯唯美激情| 色屁屁影院www国产| 男女猛烈无遮掩视频免费软件| 日本人妻伦在线中文字幕| 欧美日韩电影成人在线| 男人的天堂啪啪啪啪啪蜜桃不卡| 麻豆国产尤物AV| 蜜桃精品视频一区| 97在线观看视频| 涩涩这里只有精品视频| 丁香五月天堂| 丝袜美腿丝袜| 日韩成人免费电影| 国产区在线| 97在线精品观看视频| 岛国在线免费视频| 9999久久久久| 日产123区精品免费观看| 青青草一区二区高清无码视频| 精品久久久av无码免费| 五月天婷婷色色| 亚洲丝袜99| 欧美色欧美| 欧亚免费视频| 日日夜夜骑| 一级性爱啪啪视频| 国产精品视频在线播放| 208天天久久九九九| 日韩欧美福利视频看看| 国产亚洲 中文欧美久久| 国产精品久久久久999| 亚洲女人91| 亚洲成a人在线观看久| 神马视频久久久久久| 日本大香蕉综合网红本杳社区| 搡老女人老妇女AAA一VU麻豆 | 久久性爱网站| 自怕偷自怕亚洲精品| 黄页大片在线观看| 免费在线看黄片av| 色穴精品| 91人妻精华帖| 天天色踪合| 1769一区二区| 欧美春色| 裸模AV女优| JIZZJIZZ亚洲女人被躁| 久久人妻丝袜一区二区三| 超碰在线日韩一区| 欧美三级一级| 久干9操| 中文字幕一区二区三区蜜臀| www.av家庭乱伦| 国产精品自产拍在线观看社区| 国产福利夜| 久综合国内精品自在自线| 精品一国2| 国产精品秘 福利姬在线观看| 久热精品在线| 亚洲激情色片 | 9 1果冻精品视频| 免费农村成人少妇人妻Aa一区二区视频| 日韩一级二级在线| 在线观看不卡一区二区三区| 免费网色网站| 欧美综合站| av无线看| 校园春色五月天| 日本高清一区二区在线| 亚洲欧美校园| 一区二区不卡| 人妻精品综合中文字幕在线 | 99热精品在线观看| 6080YYY午夜理论片在线观看| 少妇内射视频| 国产亚洲精品av一区| 不卡二三区人妻少妇| 亚洲精品不卡一二三区| 成人综合网 欧美| 日韩成人色图| 熟女六十路| 国产精品久久久久久高清无码免费看| 一区,二区,三区视频| 成人电影一区| 五月天婷婷久久| 国产亚洲深夜激情| 97爱| 婷婷中文字幕| 亚洲一卡二卡在线免费| 厕所偷拍在线| 91伊人久| 亚洲欧美天| 中文字幕av亚洲在线| 嗯嗯啊啊亚欧精品| 中文字幕中文字幕一区二区| 大干人妻| www鬼畜国产男人的天堂| 日韩熟女精一区二区三区不卡| 欧美熟妇乱码在线一区| 日韩偷拍一区二区三区| 九九天堂| 欧美色图综合网| 亚洲精品久| 中国AAAAAA黄色片| 操逼999| 欧美性爱日韩高清| 国产精品久久久久999| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 国产精品老师| 国产日韩怡红院| 美女超碰978| 久久久97| 韩国一级做A片免费的| 不卡av在线中文字幕| 爽爽淫人网| 少妇熟女1区2区3区| 日韩电影天堂视频二区三区| 激情五月丁香五月| 亚洲av无码成电影在线播放| 亚洲AV不卡在线观看| 成人激情无码在线视频| 亚洲欧美清纯| 日韩精品国模| 91大神电影天堂| 欧美熟妇视频| 亚洲欧美变态| 久草色悠悠在线视频| 亚洲制服aⅴ中文字幕| 高清无码91| 国产久久久9999| 三级网色| 中文字幕精品一区欧美| 综合 青草 伊久久 影院 综合| 亚洲精品xxx| 欧美激情专区| 欧亚第一综合网| 亚洲成人久久美女| 日韩99999色| 久久久无码精品人妻二区| 97色插| 97精品一区二区视频在线观看| 在线v中文字幕一区二区三区| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 无套内射人妻在线播放| 美女91AV| 精品女同一区| 超碰天天操| 920日本午夜免费| 一区二区三区高清天码| 国产精品乱码久久久| 久极品在线观看| 17c在线成人免费A片观看| 99热在线只有精品| 久久精品高清无码一区| 91久久18禁| 久久精品国产精品亚洲艾通辽熟妇| 玖玖久久久| 啊啊啊啊啊啊啊啊要喷了| 一区二区你上我| 午夜理论片在线观看免费| 欧洲精品二区| 久久久偷拍| 中文字幕视频2区| ji熟女.com| 日本东京热久久久电影| 亚洲性天堂| 天美av在线| 国模91| AV99热18这里只有精品| 久久人人爽av亚洲精品天堂桃色| 亚洲第一页欧美| 女优免费一区二区永久| 激情四射五月天| 日韩国产精品人妻无码久久久| 欧美激情区| 综合网亚洲在线| 极品少妇久久久久| 欧美姓爱综合网| 78精品在线| 97精| 亚洲福利影院一区久久| 中文字幕免费在线观看| 亚洲在钱| 色婷婷综合视频| 欧美色97| 日本2020一区二区| 亚洲91射| 99这里只有精品| 亚洲综合色在线| 国产精品亚洲免费| 最近的最新的中文字幕视频| 人人操av| 97精品国产97久久久久久户外免费| 中日韩熟女| 人妻性爱一区二区| 人人操人人色网| 九九热av| 色偷综合| 亚洲无线码欧洲精品区别| 久久欧洲| 国产精品夜夜夜| 桃色五月天| 精品偷拍13p欧美dodk视频| 欧美性巨大╳╳╳╳╳高跟鞋| 中文?日韩?免费?精品| 校园春色美腿丝袜| 天天插网| 人人搞人人插人人操| 思思热国产在线视频| 日韩三级在线观看mp4| 日韩一级二级三级免费看完整版国语版| 九久9热| 情侣操 逼视频99| 中文字幕伊人| 国产99热| 探花熟女,姿勢到位,體驗感也到位| 色综合久| 欧美人妻二区三区| 久久仑合| 天天看片麻豆| 97超碰美女| 100啪啪视频大全| 国产小黄片在线免费观看| 久久人妻办公室视频| 超碰在线974| 成人精品视频一区二区| 久久r精品| 欧洲亚洲人妻无码中字久久三区四区| 国产白丝在线| 九九九九AV| 日韩视频中文字幕| 成视频在线观看免费看| 亚熟hd视频在线| 91在线观看,天天综合| 69XX一中文字幕人妻91| 九九热免费视频| 青青青艹在线视频| 欧美操人视频| 干婷婷综合网| 日韩精品怡红院| 亚洲男人天堂av| 日本性爱少妇| oumeizonghese,www| 亚洲精品欧洲色| 国产精品探花在线| 亚洲男人天堂2016| 另类图片天天影视| 五月天婷婷基地| 色老汉色| AV中亚| 欧美一级色| 无码男人天堂| 精品久久久久久中文字幕三区 | 少妇二级| 变态综合色| 97国产成人精品免费视频| 性爱精品一区| 欧美综合777| 成人影院永久免费观看网址| 91成人社区| 亚洲国产一级黄色视频| 蜜臀AV一区二区三区激情综合| 涩涩久久精品| 婷婷爱五月| 久久久久久久久国产| 国产多人在线观看视频| 91亚洲欧美色图| 91蜜臀人妻中文字幕在线| 国产色精品午夜大片| 99这里只有精品| 75大香蕉| 波多野结衣之双飞调教在线播放| 久久久中文| 北京专精特新企业招聘信息| 国产精品高潮久久久无码| 亚洲中文字幕在现观看| 国产麻豆一区二三区| 亚洲AV无码翔田千里网站| 亚洲日韩97| 老熟女乱子伦中文字幕一区二区| 91亚洲黑人| 青娱乐欧美激情一区二区| 亚洲综合在线高清| 国产精品不卡一区二区三区av| 国产一区二区二区按摩精品啪视频| 性开放中文AV高清无码免费看| av激情亚洲五月天| 日韩欧美麻豆| 777奇米影视777四色| 国产精品色哟哟| 韩日色费| 国产精品嫩草久久久久| 极品销魂美女一区二区| 亚洲天堂久久| 精品人妻一区二区乱码一区二区 | 五月天大香蕉| 久久久精品中文字幕麻豆| 久久久久亚洲?V片无码V| 亚洲综合情色| 免费观看的av| 色哟哟综合| 国产噜噜噜噜噜久久久久久久久| 狠狠久久手机视频精品| 国桃视频产巨乳精品一区二区在线| 色一色综合网| 夜夜骑夜夜操| 激情视频一二三| 99热这里只有精品地址| 亚洲色图综合| 久久人妻少妇| 91视频国品一二三区| 超碰在线欧美性爱激情| 97视频www| 婷婷综合激情| 2018天天干在线视频| 精品少妇高潮久久| 四虎884a| 涩五月婷婷| 欧美一级特黄淫片在线观看| 婷婷五月天av| 亚洲成人久久美女| www久久精品| 少妇毛片久久| 殴美大黄片| 日语五十路和六十路亚洲国产精品 | 午夜精品久久久久久久男人的天堂| 人人爱人人乐人人操| 国产青一二三| 欧美一区二区三区日韩| 久热影视| 综合久久97| 97超碰中文字幕| 厕所偷拍在线| 丁香六月婷婷| 日韩少妇一区二区三区| 超碰九7免费| 国产自产22区| 国产中文福利| 亚洲精品一区二区三区新线路| 爆操无码| 日本熟女不卡视频| 日日做夜狠狠爱欧美黑人| 亚洲精品久久久久毛片A片拉屎| 人妻黑丝袜电影| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 97在线资源| 熟女精品一区二区三区| 五月丁香社区婷婷日韩欧美精品影院| 日韩精品国产一区二区| 欧美裸体美女日麻屄| 国语av最新自产拍在线观看| 玖玖爱免费观看视频| 亚洲色电影在线| 亚州Av天美传媒| 麻豆天美传媒在线视频天堂| 国产超碰人人操| 天天视频黄网站| 三级特黄60分钟播放| 无遮挡男女激烈动态图| 视频一区二区免费在线| 亚洲高清少妇| 大地资源在线观看中文第二页| 免费公开人人操| 秋霞视频一区二区| 99这里有精品视频| 国内精品久9| 国产精品久久| 天天看天天日| 久久肏大逼| 91精品无码人妻系列| 色综合婷婷| 九一综合精品视品av| 中国熟女91| 国产精品无码AV网站| 中文操逼字幕| 大香蕉乱级| 国产辣妈在线视频福利| 风韵犹存大大大大香蕉 | 9长久久精品| 欧美性天天| 91老熟女老女人国产老太 | 在线强奷到舒服的无码视频| 国产午夜无码片在线观看影视| 中文字幕中文字幕一区二区| 青草成人免费视频一com| 精品对白久久不卡| 992大香蕉| 北野未奈加勒比av| 久久的网站啊啊啊啊啊| 97精品国产手机| 九九九精品一区二区无码| 九月丁香婷婷| 亚洲 另类 丝袜 自拍 动漫| 久久一本大香蕉 | 黄色人人| 乱抡国产91| 91精品国产日韩欧美综合| 日本高清_区二区三区| 天堂中文日本在线观看| 国产精品一级特黄aaa大片在线观看| 日本成a人v网站在线观看| 国产精品播放| 亚洲无码成人精品| AV天堂丝袜| 久久一二三四五六七八九区区区 | 无码视频黄色网战| 九九久久九九久久| 九九性视频| 强奸乱伦亚洲第一页| 精品国产无码中文| 婷色五月| 一区二区国产视频在线观看| 亚洲女人91| 少妇久久| 国产亚洲禁久一区二区| 91老司机在线视频免费观看 | 日韩极品无码B| 日韩精品 视频一区二区| 亚洲天堂,男人| 亚州春色| 操东北女人| 在线观看色视频| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 欧美不卡五十路| 亚洲色 国产 欧美 日韩| 欧亚综合一卡二卡中文字幕| 91操人| 蜜臀久久99精品久久久久久无删减 | 欧美 熟女 日韩| 东京热99999| 91色夜| 国模艳艳啪啪一区| 日韩精品熟妇| 欧亚韩国999| 综合av社区| 96精品在线| 久久成人精品| 大黄片做爱的大的| 久久久不能久久久久| 欧美 日韩第一性色| 艹精品| 嗯嗯啊啊啊好舒服| 色香欲综合| 天天做日日做| 欧美 传媒 麻豆 日韩 偷拍| 亚洲毛片基地专区| 亚洲天堂一区二区久久| 色婷婷六月| 丰满丝袜少妇AV| 啊啊啊免费视频| 一块操欧美| 伊人嫩草| 亚洲精品官网在线观看| 婷婷色网| 久久超碰亚洲人| 国产九九久久久精品| 超碰99热中文字幕| 亚洲做性| 五月丁香黄色网| 国产 日韩 欧美一区| 成人性生活高清视频在线播放| 99热日| 丁香婷婷激情五月天无毒不卡 | 加勒比综合九九99视频在线播放| 狠狠亚洲| 欧美一级在线观看成人| 九九草| 噜噜在线| 日本 情色 1区2区3区| 亚洲精品xxx| 伊人久久亚洲中文字幕不卡| 操逼视频亚洲| 懂色AV中文| 岛国激情视频在线观看| 国产精品视频| 久久性爱网站| 久久超碰天天| 91丨九色丨东北熟女| 国产97色在线| 国产精品久久久久绯色| 国产传媒午夜理伦精品| 97精品在线| 久久精品国产96精品亚洲拳交| 青青草久草AV| 乱老女人一区二区视频| 欧美天天射| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 午夜视频久久久久一区| 99re8免费高清在线| 韩日性爱av| 欧美淫乱视频| 欧美超碰9798| 高清无码一区二区三区| 日韩中文字幕宗合在线| 九热视频| 波多野结衣之双飞调教在线播放 | 国产传媒日韩| 手机在线观看不卡无码av| 欧成人在线| 久热久一区二区三区| 一区操逼| 欧美人妖内射| 亚洲男人的天堂AV| 久久欧美性爱视频| 欧美精品三级黄片| 91亚洲丝袜熟女| 富二代亚洲精品99| 天堂中文资源在线bt| 97在线免费看视频| 欧美日韩人妻婷婷一区| 亚洲国产第一页综合视频| 亚洲乱色熟女一区| 天天日天天屌天天操| 亚洲欧洲网站免费观看| 久96热在线观看视频| 本道在线| 天天干一区二区| 日韩欧美俄罗斯A片| 夜草网站| 日本欧美不卡| a人片中文字幕一区二区| 99色在线观看| 欧美一级国产一级| 欧美不卡五十路| 视频二区美腿制服人妻欧美| 一区麻豆 高清中文字幕| 超碰97综合网| 欧美97视频| 国产久久视频| 亚洲天堂男人在线| 天天日B夜夜干B时时操B| AVE乱伦| 国产精品久久久久9999小说| 98超碰日本| 四虎免费看黄| 久久久久久精品免费看A级| 不卡在线观看视频| 欧美日韩亚洲五月天婷婷| 色综合美国| 日本精品第一视频在'| 丝袜制服字幕在线| 男人天堂.AB| 美女91AV| 大香蕉色欲AV| 制服少妇欧美| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 色色色色日本| 熟女一区二区三区四区| 欧美性暴力猛交XXXX| 九九这里只有精品| www色婷婷| 欧美成人午夜免费福利785| 久操网无码在线| 国产色综合亚洲色综合吹潮| 日韩精品资源专区二区| 国产三级中文字幕粉嫩| 久久久久久波多野吉衣高潮| 熟女色图在线| 一区二区三区日韩欧美| AV无码久久久精品| 色婷婷六月丁香七月婷婷| 国产精品密臀网在线观看| 亚洲免费日韩在线一区二区| 第二页中文字幕| 澳门成人网站久国产日韩| 五月婷婷五月天| 婷婷九月色| 久热91| 色99视频| 久久久久精| 91精品电影18| 欧美高潮在线| 男人网站婷婷| 91亚州欧美| 午夜后入| 中文字幕一区二区三区蜜桃视频| 懂色AV一区二区三区| 少妇免费视频| 中 文字幕一区二区三四 五 区日 日 骚| 青青操少妇| 亚洲Av噜噜一区二区三区妖精| 欧美老妇女内射网址| 精品无码久久久久| 怡红院亚洲怡春院av| 亚洲 欧美 日本 国内 首页| 日日摸日日碰夜夜爽视频| 啊啊啊要高潮了| 欧美在线55555| 96久久久精品| JuliaAnnXXX888| 东京热男人的天堂| 亚洲色图尤物视频| 熟女人妻一区二区三区| julia高潮后不停追击中出| 禁片 高清 在线观看视频网站| 九月AV| 日欧美色| 亚洲综人| 亚洲欧美人妻| 日韩精品在线放| 日本www操操操| 中文字幕一区av| 久久国产对白激情浪潮| 人人妻人人色| 992视频一区| 国产美女口爆吞精视频| 亚州AV无码国产精品| 天美麻花大全视频| 嗯嗯嗯嗯啊啊啊好紧好大| 久久线上视频免费看| 国产精品视频自拍在线| 婷婷五月天激情网| 天天日少妇逼AV| 起碰97| 色婷婷A V一二三四区麻豆综合| 亚洲天天自拍| 精品丝袜无码一区二区三APP| 国产操逼逼网| 搡老女人老妇女老妇老熟女怎么读| 国产十八禁视频| 素人伊尹大香蕉免费下载视频| 欧美99999| 久久久久久久9| 操逼操逼逼操操逼91 | 91色s| 天天日天天操天天射河南省| 男男H黄动漫啪啪无遮挡网站| 伊人大香蕉在线| 亚洲天堂日本| 立川理惠被中出无码| 国产精品一区二区久久精品| 狠狠狠狠狠狠| 伦理日韩国产久久| 日韩性爱一级片| 天天综合色| 国产乱码久久| 中日韩久久久免费看| 免费看黄片现成| 91久久精品国产| 中文字幕一区二区三区视频播放| 欧美日韩操逼动图| 激情五月天丁香社区| 啊啊啊啊啊在线视频| 欧洲人妻视频| 欧美顶级黄片AAAAA在线免费看| 欧美日韩情色一区二区| 人妻黑丝袜电影| 91人精品妻入口| 欧美极品女人的天堂| 97在线免费公开视频| 久久无码成人| 国产乱人妻精品入口| 女人香蕉久久毛毛片精品| av无线看| 亚洲少妇色图自慰直播| 四虎免费在线观看| 最新欧洲欧美日本激情网站| 亚洲区小说| 天天综合91| 超碰超碰95| 60秒不遮不挡| 婷婷五月天av| 亚州色图欧美| 日韩综合无码一区久久92| 碰碰在线视频| 人妻激情视频| 国产精品宅男免费| 久久人妇| 国产h片在线观看视频| 动漫av中文| 超碰人妻天天干| 97香蕉人人乳| 热久久国产| 欧美日韩婷婷中文| 久操网视频| 久热大香蕉网站| 一级性爱网| 日韩三级一区| 欧美后入| 色五月69夫妻| 欧美1区二区三区公司| 久久久久久久久久久久久9999| 最新亚洲黄色免费电影 | 欧洲亚洲天堂精品| 天天色综亚洲91污| 一本色道久久综合熟妇| 亚洲欧美激情在线视频| 97在线视频免费看| 青草青青久久久久久国产| 亚洲AV成人精品网站在AV| 国产嫩草精品A88AV在线| 激情熟女12P| 青青青草伊人精品| 婷婷99狠狠| 伊人影院日本| 操我啊啊啊啊啊| 狠狠色狠狠色狠狠五月| 91女优在线观看 | 中日亚韩免费视频| 欧美一区二区三区成人性生活| 亚州AV无码国产精品| 欧美亚洲丝袜人妻制服中文99| 五月丁香成人网| 农村妇女精品一二区| 亚州色站 日韩电影| 亚洲无码一二三区| 九九九九九九九| 日韩AV片| 日本Xx性爱| 色五月激情AV在线| 日韩一级片在线看| 97在线播放 | 国产曰批免费观看久久久| 无码人妻精品一区二区三区九九| 亚洲各类熟们中文字幕| 国产女大学生AV| 欧洲亚洲人人爽爽视频| 国产精品久久久三级无码| 97色97干| 神马午夜久久久| 九九人人操| 91人妻精华帖| 91人妻熟女| 综合视频91| 男女一级A片大黄,一进一出| 色噜噜狠狠色综无码久久合欧美| 亚洲棕合电彰| www.夜夜| 国产中文字幕曰本毛片| 国语av狠狠色丁香婷婷综合激情| 激情文学小说一区二区| 午夜精品久久久99| 国产蜜臀在线| 欧美少妇大量自拍视频在线观看| 人人做,人人操,人人摸| 国产成人精品一区| 亚洲熟妇乱女区二区三区| 伊人久久大香大香线蕉中文| 另类小说综合网| 精品福利| 久热这里只有精品9| 中文字幕丝袜美腿| 色色热| 国产精品麻豆免费视频| 亚洲色欧美| 91欧美网| 亚洲区 欧美区| ,国产乱人伦精品一区二区三区| 久久久婷| 凹凸久久人人| 午夜视频久久久久一区| 好吊色综合| 今日头条成人一区二区三区四虎精品| 色九九九九久| 中字乱伦AV| 欧美亚洲第一页| 一起草三级AV电影在线观看| 美女诱惑久久| 久久午夜神马| 999热日韩精品| 欧美人妻另类在线| av72网| 国产欧美伊人| av日韩手机在线影视| 日韩在线观看三级电影| 欧美天天| V A在线| 3PAV乱伦视频| 麻豆天美91| 偷拍精品一区二区三区| 超碰成人人人爽人人爽| 久久久无码精品人妻二区| 亚洲影视高清第一页| 中文熟女五十乱码在线| 国产精品色| 国产夫妻性生活视频| 青青草在线视频美女| 观看免费区二区三区二| 偷拍 精品 另类 四区| 天天看片天天爽| 亚洲日韩av一区二区三区百合| 啊啊啊啊啊在线观看网址| 日本熟妇熟色97一本在线观看| 中文字幕在线观看二区三区| 巨爆乳肉感一区二区三区竹菊影视 | 亚洲色鬼| 九九热精品免费视频| 日日狠狠久久偷偷色综合免费| 色播五月婷婷| 好淫网一二三视区| 亚洲丝袜色图| 蜜桃一区二区三区| 久久久草草精品| 美女黄页网站| 狠狠操,使劲操| 啊啊啊爽爽| 综合97| 久久精品国产99精品亚洲蜜...| 一区二区三区视频国产免费| 久久高清欧美国产| 亚洲激情在线| 蜜臀AV一区二区三区激情综合| 91oumei| 久草精品热视| 综合色播| 亚洲高潮少妇| 国产丰满少妇久久久精品影院| AV色五月天| 美女网站91| 日日操免费视频| 92午夜免费福利视频| 超碰97综合网| 亚洲图片91| 六月丁操逼| 9久久精品| 97精品综合久久| 成人av免费观看| 国产原创精品| 久久高清无码夜夜操| 97精品97久久| 一起草视频在线| 九月丁香婷婷色| AAA久久| 日本大片日本一区二区免费高清| 内射白嫩美女| 欧美老妇女内射网址| 九九久精品| 高清不卡 中文 人妻| 成人怡红院| 最新国内自拍av免费| 五月婷丁香| 国产视频一区二区在线| 欧洲精品欧洲精品| 色网亚洲人| 岛国黄| baisiav| 91精品人妻五十路| 国内精品嫩模A∨私拍小视频| 日人妻视频91| 国产成人无码a| av天堂5| 中文字幕天天天天天| 日本2020一区二区| 人人艹亚洲| 中文字幕日本久久| 色天堂综合| 97视频播放| 色嗨嗨在线| 亚洲第一页欧美| 超碰97亚洲| 色情五月丁香| 天天看人人操屄犊摸阴| 神马麻豆福利院 | 中文字幕黑人大片| 青青草国产一区二区三区| 性饥渴少妇av无码毛片| 欧美亚性天堂| 综合少妇网| A 天堂在线观看视频| 日本999精品| 久久↗↗| 久久精品国产亚洲AV嘿嘿| 综合久欧洲| 春色综合免费| 国产熟女完整版中字| 青青操在线亚洲视频观看欧美在线 | 韩三级a视频在线观看 | 色区97| 去干网最新版| 91色射| 日韩AV熟女乱伦| 国产精品高潮久久AV| 91av熟女人妻| 中文字幕在线观看第二页| 久久久久夜夜夜夜| 日日狠狠久久偷偷色综合免费| 久久久九精品| 精品性爱一二三区| 夜夜夜夜爽| 久久综合国产精品国产| 五十路熟女工口| 天天射日日干| 日本熟妇熟色97一本在线观看| 一级免费精品| 国产一区二区三区精品观看啪| 日韩精彩视频| 超碰99热| 综合色欧美| 综合激情五月丁香| 欧美激情视频一区二区| 亚洲 欧美 手机在线观看| 狠狠亚洲| 日韩精品黄片免费观看| 欧美激色| 99ri在线视频| 久久 精品| 色色无码| 久久精品电影在线| 色穴精品| 亚洲视频中文一区| 极品色社| 夜夜操美女| 少妇二级| 日本操逼aaaaa| 91精品婷婷国产综合久久竹菊| 欧美强奸乱| 超碰97国产欧美| 亚洲天堂性爱| 日本性爱欧美性爱| 亚洲精品黑丝| 免费的av网| 日韩乱伦影音先锋| 蜜屁av| 久久久熟妇熟女国产| 日本三级网页| 日韩精品一区二区人人人| 看黑丝美女操逼青青网站| 久久美女国产| 操逼无毒无码免费视频| 日日操天天操| 天天谢天天干| 一区二区三区精品黑丝白丝酒店对鸡 | 亚洲 欧美 另类 日韩 人妻一区| 日韩乱伦视频| 国产日韩久久| 亭亭在线资源| 色女女女导航| 日韩乱伦AⅤ| 夜夜爽夜夜操| 欧美日动态视频| 国产一区96在线| 亚洲欧美综合| 黄久在线| 天天综合91在线| 亚洲精品一二区| 97欧美| 久操影视| 三级片大波波| 婷婷六月天| 五十路三级片| 欧美亚洲天天| 人妻在线臀日韩| 国产福利精品最新在线| 国产福利一区二| 亚洲性刺激| 91xingse| 99热在线观看| 性综合网| 成人黄页| AV一二区| 青青草视频这里只有精品| 强奸乱伦AV网站| 欧美巨大性舒爽顶到了| 少妇天堂| 国产精品高朝久久久久久久| 青青草日韩无码| 日韩无码a片| 成人97人人超碰人人| 免费操逼91| 国产白丝网站| 国产日本熟女顶级一区二区三区视频| www…国产操逼| 波多野结衣先锋影音| 操婢日韩| 人人人干干人人干| 天天日天天干少妇日| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 久久精品国产97欧美精品亚洲| 狠狠2050在线观看| 亚洲人成网www| 无码又爽又硬又激情免费视频| 大屁股人妻女教师撅着屁股| 欧美色图色综合| 狠狠爱夜夜| 97精品一区| 亚州欧美综合| 亚洲高清少妇| 884t在线| 大香蕉综合在线| 91九九九馒头| 天天综合日韩网| 色婷婷五月综合激情中文字幕| 亚洲日韩美国人妻| 亚洲囯产精品女人久久久| 久久精品国产AV一区二区三区| 国模艳艳啪啪一区| 久久少妇视频| 五月天黄色av| 东京热激情视频一二三区| 国产亚洲99久久精品| 丁香婷婷色五月| 黑人无码一区二区| 熟女五十路一区二区三| 青娱乐亚洲自拍| 中文字幕交换人妻| 男人a天堂手机在线版| 日韩av在线播放不卡| 欧美伊人久久综合网| 国产视频一区二区三区在线免费观看| 蜜臀AV秘一区翔田千里| 操逼无码操逼| 五十路六十路七十路熟婆| 久久久国产av美女私房| 好爽免费视频| 亚洲影院成人| 亚洲欧洲中文日韩女优乱码| 人人贴人人摸| 欧美人妻精品一区二区| 国产家庭乱伦表演| 又大又大又大又粗爽高潮观看 | 国产亚热在线久久| 少妇综合网| 国产精选三级在线观看| 日韩欧美国产高清视频| 色色激情五月天| 99re9在线| 好好的日:com久久九九| 97视频www| 日本精品一区二区三| 天天爱天天操| 国产无码高清操逼视频| 在线免费观看日韩一区| 特级丰满少妇一级AAAA爱毛片 | 日本一区二区电影网站| 青青草色情网站视频| 欧洲精品一区二区三区| 久久有码视频|