日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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í)行完一條指令后檢查一下“有沒有中斷請求”有就暫停當前工作跳轉(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)當場崩掉。我當初偷懶跳過PIC初始化結(jié)果模擬器直接重啟查了半天不知道怎么回事。1.3 保護模式與實模式的分水嶺這一章的標題是“中斷與異?!钡绻豢磳嵞J奖热鏐IOS階段的中斷那跟裸機編程沒什么區(qū)別中斷向量表放在內(nèi)存地址0x00000開始處每一項4字節(jié)存的是段地址和偏移查表跳過去完事。但進入保護模式之后一切都變了。實模式的“中斷向量表”變成了“中斷描述符表”表的位置不再固定在0x0而是由IDTR寄存器告訴你它在哪里。每一項不再是一個簡簡單單的地址而是一個8字節(jié)的門描述符——里面不僅有處理程序的地址還包含特權(quán)級和類型信息。這意味著CPU在跳轉(zhuǎn)之前還要做一大堆安全檢查。很多人第一次寫保護模式內(nèi)核最容易掛在這一點上你在實模式下的中斷能跑進了保護模式一開中斷就重啟十有八九是IDT沒建立或者門描述符的類型/特權(quán)級不對。提示CPU在保護模式下每執(zhí)行完一條指令都會檢查“當前有沒有待處理的中斷”。只要中斷允許位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)到的目標代碼段這里固定填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標志清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壓棧”的入口。我在寫簡單實驗時曾直接把有錯誤碼的異常和沒錯誤碼的異常當成同一個入口結(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)場壓棧然后把“向量號、錯誤碼、當前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ù)直接當中斷入口因為C編譯器生成的函數(shù)開頭會有標準的棧布局和現(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標志是“總閘”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拒之門外的因為當前特權(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ù)組下標就是調(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)用時會把它當成普通的“函數(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)核棧的段和棧頂。當用戶態(tài)程序觸發(fā)int 0x80時CPU看到當前CPL3而目標代碼段的DPL0立即從當前棧切換到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位”畫個圖對著填充一遍。我當年在紙上畫了不下十遍才真正記住每個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è)置一個標志變量并打印一段字符串。如果實驗?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è)備本身。這相當于給整個中斷鏈路做了“單元測試”排查范圍一下子縮小了。我后來調(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當前在哪個EIP、觸發(fā)哪個向量、IDT表項內(nèi)容是什么都一清二楚。我第一次看到日志里滿屏的“check_exception: 8”時才意識到是IDT表項全空引起的兜底異常。8.2 8259A的坑中斷全被屏蔽了另一個特別容易忽略的問題init_8259A之后OCW1發(fā)0xFF把所有中斷屏蔽了外部硬件中斷根本到不了CPU。這時候你需要打開對應(yīng)位。我當時測試鍵盤中斷發(fā)現(xiàn)怎么敲都沒反應(yīng)查了很久才發(fā)現(xiàn)IRQ1一直是masked狀態(tài)。所以“要不要開CPU中斷”和“PIC里要不要開某個IRQ”是兩件事前者是CPU級IF標志后者是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)下一有風吹草動就崩。還有一個小細節(jié)Linux 0.11里的sti不是放在init_IRQ之后馬上做的它是在調(diào)度器第一次schedule之前才做。也就是說內(nèi)核把“能響應(yīng)中斷的所有條件”準備好之后才把門打開。這個思想特別值得學(xué)習不要在任何前置條件未滿足時打開中斷寧可晚一點開不要冒一點險。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)到處都是中斷和異常在背后撐著——到時候再回頭看這一章很多當時覺得晦澀的細節(jié)都會變得理所當然。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
最新国产精品久久精品| 人妻少妇无码| 爱干爱射网啊啊啊| 91狠狠狠| 香蕉免费一区二区三区不读| 欧美亚洲国内自拍| 亚洲欧洲自拍| 免费观看日本操逼视频| 你懂的在线观看区国产| 中文三一区| 亚洲一二三四区在线免费看视频| 一区二区亚州激情久婷婷欧美| 五月婷婷激情综合| 国产99热| 婷婷久久大香蕉| 免费看黄视频亚洲网站| 精品亚洲国产成人av网站| 99热这里只有精品18| 久久大陆| 欧美日日人人天天| 小电影欧美91| 超碰诱惑| 老司机香蕉| 亚洲美女黄色| 亚洲。天堂。日本在线观看| 欧美日韩人妻婷婷一区| 2017大香蕉国产精品久久| 97香焦色区| 五月天色色色| 美女AV一区二区| 97国产精品国| 久久夜夜夜夜| AV色五月天| 99国内熟女露脸视频| 久久久久久久久久久久黄色| 双插在线| 密臀AV在线| 91五月天| 91AV天美在线视频| 超碰在线综合97| 91九九九吃| 久久r精品| 大香蕉欧美国产日韩高潮| 躁躁日曰躁2020| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 国产精品探花视频| 色综合婷婷| 亚洲精品美女久久久久久久久| 日本一本道A级黄色毛片试看60分钟| 秋霞一集毛片观看| 操穴国产| 91日日| av中文字幕在线熟女| 天美av在线观看| 久久久久ab| 国产精品69久久久久久久| 国产精品不卡少妇白| 亚洲综合电影| 中文色综合| 国产精品无码在线| 久久久久久久久久久久久9999| 熟妇视频一区二区三区在线观看| 中文字幕人乱码中文字的预防方法| 日韩钢筋无码高清啾啾啾| 天天操人人操骚逼网站| 天天色综合影视网| 一起草三级AV电影在线观看| 中文字幕精品一区二区精| 日本高清_区二区三区| 91人妻PORNY九色大屁股| 麻豆天美电影一区二区| 老鸭窝在线视频播放| 东京热综合久久一区二区| 最近2018中文字幕在线高清第一页 | 在线观看日韩av不卡| 天天插天天干| 精品少妇人妻| 91福利网在线观看| 强奸xx国产| 台湾佬中文娱乐自偷自拍| 锕锕好爽 死我在线观看| 日韩97| 欧美性生活免费网| 大香蕉伊人色偷偷在线| surenchaopeng| 91亚洲网站| 少妇人妻好深太紧了vr91| 99性视频| 91性网| 国产美女高潮叫床视频| 亚洲日韩东京热一区| 老女人综合网| 99热18| 另类专区加勒比| 久久大黄片| 天天看,天天做| 1204金沙人妻懂旧版免费| 欧美成人精品一区| 91狠狠色丁香婷婷综合久久| 尤物视频偷拍免费| 欧美激情欧美精品| 日本一区二区中文字幕久久| 99久久9| 天天综合网合集91| 国产精品色片一区二区| 蜜臀AV成人精品蜜臀| 欧美极品| 人人色97| 91亚洲在线| 思思热在线| 亚洲狠狠入| 另类视频在线| 91丨九色丨43老版熟女| 久色99999| 色色色色日本| 日韩特一级久久| 欧美老妇曰批的视频| 色眯眯射| 国产精品第一区第一页| 超碰偷拍| 色婷久久| 国产精品白领在线观看 | 操老熟女AV| 狠狠色狠狠色狠狠五月| 啊啊啊好大好湿| 一线黄色免费性爱片| 亚州色图欧美| 国岛片视频| 伊人午夜福利视频| 五月婷婷五月天| 蜜屁av| 中文字幕五区| 日本熟女不卡视频| 999综合色| 永久免费av无码网站国产app | 一级日本牲交大片好爽在线看| 好爽,再快点啊哈嗯嗯嗯嗯| 青草成人免费视频一com| 人妻天天夜夜爽一区二区| 熟妇色99| 超碰国产情侣自拍网| 青娱乐淫乱1314| 啊啊啊97视频| www.狠狠| 日产欧美电影一区二区三区| 久久精品日韩专区免费观看| 国产精品经典一卡久久久| 天天做天天爱夜夜爽毛片试看| 91伊人大香蕉| 午夜久久一区二区无码中出| 成人精品久久久午夜福利| 嫩草 我啊~嗯~在线| 果冻国产精品麻豆成人av| 蜜区区视频79 | 伊人一级免费黄片| 超碰 欧美| 日韩人妻操B| 亚洲精品一区二区精品| 蜜臀久久99精品久久久久久-DVD原版全| yirendaxiangjiashipin| 黑人精品一区二区在线播放| av草草在线电影| 久99久视频精选| 隔壁邻居波多野结衣中文字幕| 看看日B真人视频| 日韩精品国产精品五码一区二区| 男女性感激情网站| 超碰95| 91丨精品丨国产丨丝袜| 久久久久久夜夜夜夜夜| 天美麻花大全视频| 国产操逼视频在线观看| 中国一级αV| 欧美日韩亚洲国产中文永久天天看 | 尤物视频网 刘玥| 色综合色综合网| 日韩熟女操逼| 午夜精品久久一区二区| 啊啊啊啊,啊啊好多水| 久久e6只有精品| 91狼人| a片久久久久久久久久久久 | 欧美淫穴| 国产99 中文字幕日韩小视频| 色色色日本| 国产高清自拍| 欧美97在线欧| 加勒比中文av| 国产日本顶级一区二区三区| 色九九综合AV| 亚洲Av噜噜一区二区三区妖精| 国产欧美第五页| 大香蕉免费乱伦视频| av一区二区三区四区| 久草新在线| 久久成人东京热人妻| 欧美午夜视频| 日日夜夜噜| 96精品久久久久中文字幕| 人人扣人人操| 国产67194| 18禁的网站在线| 一级特黄aaa大片在线观看成人一级片在线观看| 天天干夜夜操一区二区| 自拍啪啪视频| 免费视频观看60秒| 97超碰色情| 美女91| 久久久无码精品人妻二区 | 天天日天天干天天色| 日韩中文字墓| 操逼大黄片| 日韩欧美午夜一区二区| 人人妻人射| 日va操| 日欧亚洲二三区大片不卡| 最新岛国大片| 日本三级R| 国语对白在线播放视频| 五月天婷婷久久| 久热婷婷| 精品.99999| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 日韩成人高清一区二区| 色狠狠 - 百度| 精品一啪| 狠狠躁AV| 97在线青| 亚洲国产精品成人久久蜜臀| a片在线播放| 天天谢天天干| 久9视频| 丁香五月自拍| 91人妻丝袜无码| 美女91在线观看| 亭亭在线资源| 性爱视频啪啪啪啪| 99爱精品| 日日日大屁股骚女人精品| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 亚洲在钱| 色综合国产在线观看| 最新亚洲人成网站在线影院| 国产高清无码一区二区三区四区皇冠| 五月丁香六月激情| 综合久久99亚洲人妻中文在线| 久久久久幕乱码| 97干色| 操操操日本的逼| 色色97爱| 欧美精品四区| 欧美精品双插| 青青五月天| 香伊人在线| 天天做日日爱夜夜爽| 久久久9品一区二区三区| 免费超碰97久久| 三级色影综合网| 国产多人在线观看视频| 99无码视频| 亚洲综合夜色| 婷婷婷婷婷婷久久久久| 9999免费精彩视频| 成人在线午夜视频一区| 视频国产成人精品日本亚洲18| 在线欧美69V免费观看视频| 国产女人高潮视频| 高潮9999外国| 性爱av在线免费观看| 美女的肌被草喷水视频| 韩国免费播放一级毛片| 日韩精品99999| 久久久成人免费av电影| 成人免费看吃奶视频网站| 九九这里只有精品| 久久免费9| 久久成人国产| 中文字幕午夜精品久久久| 国产精品久久aV| 日韩AV电影网站| 一区二区三区四区在线不卡| 国产av又色又爽又黄| 日本裸体久久色噜噜| 天天久久| 亚洲 日本 一 二 三| 性色高清..……| 亚洲成?V人片在线观看福利| 亚洲区限制级| 亚乱色| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 大香蕉十区| 亚洲天天操| 婷色五月天| 午夜毛片亚洲精品片国产久久久| 欧美亚性天堂| 亚洲日韩人妻中文字幕一区| 97 九色| 91亚洲色人| 久久久久久波多野吉衣高潮| 大香蕉www.超碰| 久久99999| 手机在线播放国产福利| 男人的天堂久久狠| 操逼日韩无码 | 色狠狠色| 五十路熟女人妻一区二区三区四区五| 日韩偷拍色图| 国产操逼网站亚洲一级黄色| 99超碰色| 午夜福利一区二区影院| 九九精品美女高溯喷水| 一本精品日本在线视频精品| 久久97超碰香蕉| 中文自拍欧美影视| 国产精品内射婷婷一级二| 成人久久无码www| 久久精品日韩| 久区视频| 欧美78| 3p国产欧美99热| 精品人妻一区二区免费看| 91亚·色| 操迟操逼在巾线Fre看| 人妻少妇久久| 91爽啪| 亚洲va有码在线天堂| 曰本特级特黄特色黄色A级网站高清在线免费看 | 口爆欧美91| 色噜噜精品一区二区三| 91人人操| 九九九九欧美| 日韩三四五区| 操逼操网| 97综合久久| 91老熟女老女人国产老太| 大地资源在线观看中文第二页| 夜夜欢天天干| 美女主播色欲91抠b在线播放| 3d成人精品一区二区| 97精品一区二区视频在线观看| 91一区二区| 久久精品日韩| 久久精品黄色| 日韩大香蕉精品在线视频| 91原创在线观看| 秋霞影音一区二区三区| 日韩无码视频黄色| 亚洲色图欧美| 国产超碰97| 亚洲精品欧美专业| 99ri视频| 国产三区免费在线观看| 国产A v无码专区| 自拍偷拍2025在线观看| 尤物视频网 刘玥| 中文字幕在线日亚州9| 欧美一级AAAAAAA| 免费A片三p视频| 97久久久久| 美女爽爽爽刺痛洞洞| 污污污8888| 欧美成人一区二区| 久久日本熟女精品一区| 日韩少妇丰满亚洲| 嗯阿好爽好紧| 欧美激情亚洲情色| 亚洲97网站| 国产精品久久久| 亚洲一区中文字幕| 国产精品人妻无码久久久老鸭窝| 欧美天天干| 一区二区三区国产在线播放| 84YTCOM性无码| 免费看A片毛毛片在线播| 一类av片在线看| 黄片免费久久久久久久| 色香蕉影院| 亚洲丝袜色图| 91久久国产精品| 日韩99999| 大二网站亚洲| 伊人久久艹| 九九九九九九九九九九九免费国产| 色五91| 老汉网| 三四中文字幕| 黄色欧美性爱视频| 欧美久久草熟女| 亚洲国产蜜臀系列在线观看| 婷婷色色五月天福利| 亚洲av无线观看| 国产伦精品免编号公布| 九九热精品视频六| 欧美亚洲一级在线观看| 亚州情色j区| 超碰这里有精品| 中国AAAAAA黄色片| 婷婷五月天成人网| 人人九九精| 亚洲成熟国产精品美女| 美女诱惑在线一区| 尹人免费观看视频在线| 天天天天干| 深爱伊人影院| 91精品无码人妻系列| 久久9精品视频| 国产精品操| 青青草天天亲夜夜操网| 久艹99| 日韩啪啪网| 天堂综合| 男人天堂久久精品| 日韩免费a级毛片无码a∨| 97精品国产97久久久久久| 久草看看看| 中文字幕av乱伦| 色偷偷男人的天堂麻豆| 精品国产72| 久久综合精品一区二区三区| 一级黄色影片| 91天堂丝袜美腿| 大香蕉宗合网在线| 日韩三级在线观看mp4| 色眯眯av| 91超碰在线| 欧美日韩夜夜| 97资源站日韩| 亚洲国产综合久久天堂| 国产极品粉嫩馒头一线天av| 中文字幕二区日韩天堂| se吧提供国产乱老熟视频胖女人| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 亚洲棕合电彰| 日韩av性爱在线播放| 九九九精品一区二区无码| 色九九综合AV| 无码91| 日韩欧美午夜一区二区| 九九久久久| 九九拍拍精品视频在线播放 | 精品福利视频| 亚洲欧美精品福利在线| 内射夫妻三片| 国产精品乱码久久久| 精品97久久综合| 2025亚洲男人天堂| 日本人妻一区二区| 五月丁香社区婷婷日韩欧美精品影院| 啊啊啊啊啊啊在线| 亚洲情色图片区| 国产天天骚| 婷婷激情综合网| AV不卡在线| 国产亚洲精品久久久久小| 91人妻人人澡人人爽人人精品| 激情视频一二三| 熟女熟妇一区二区三区视频| 婷婷激情四射| 收看日本人日bb| 欧美一区二区观看在线| 欧美成人9797| 国产AB视频| 色臀av| 国产福利在线视频网站| 天美传媒av 在线| 99操| 97视频免费播放| 国产欧美日本亚洲精品| 91 亚洲 欧美 日韩 国产 综合| 婷婷五月天成人网| 欧美日韩另类字幕中文| 亚洲国产中文字幕| 国产一区二区免费福利片| 日本女优在线视频福利| 亚洲综合影片| 资源新线在线天堂| 日本黄 R色 成 人网站| 97天天做| 久久的免费性爱视频| 5278欧美一区二区三区| 97色色国产视频| 大二网站亚洲| 伊人97色天使| 一区二区三区国产在线播放| 欧美国产日韩清纯唯美| 国产熟码AV| 免费观看的黄色的网站| 志村玲子视频一区二区| 5月婷婷6月六月丁香| 99九九久久| 少妇久久久久久久| 亚洲日产专区| 欧美组图日韩亚洲中文字幕| www.狠狠| 91处女在线观看| www.狠狠干.coom | 亚洲 欧美 中文 日韩超碰| 99re视频这里只有精品| 久久久亚洲熟妇熟女| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 嫩草 人人网精品| 亚州,欧美在线| 99久久国产精品免费高潮| 国产女生在线| 制服诱惑亚洲一区二区三区在线观看| 91精品导航| 色爱国产| 91n处女在线观看| 日小BB小视频| 欧美午夜精品久久久久久3D| 亚洲se电影| 啪啪资源网| 综合色拍| 欧美极品性爱天天射| 超碰人人妻| 亚州五月| 全球成人中文在线| 欧美亚洲清纯| 婷婷五月天综合网| 亚洲欧美黄| 99热免费| 97色网| 久久人妻办公室视频| 97在线日韩中文字幕| 精品久久99| 欧美熟妇精品黑人巨大91| 欧美十八禁在线看| 精品少妇99| 91丝袜美腿网站| 波多野42部无码喷潮在线观看| 久久精品夜色国产亚洲AV| 综合av社区| 久久精品99久久久久久| 秋霞一级A片黄色视频| 91美乳| 国产精品永久免费10000| 超碰97在线 欧美 国产| 国产AV毛片| 97在线免费看视频| 婷婷五月天无码 | 高清国产精品无码| 亚洲男人天堂网站| 最新av在线| 99热最新| 国产亲戚伦亲在线| 欧美成人性爱视频在线播放| 日韩中文字幕2020| 啊a一区在线| 色色色五月婷婷| 亚洲欧美自拍偷拍| 丝袜足交视频| 欧美性爱一区| 极品白嫩福利在线| 九九热视频在线观看| 欧美αv.com| 国产强奸91| 黑人免费福利视频| 大香久久| 国产在线播放成人免费| 百度百度日本操逼| 欧美亚洲丝袜人妻制服中文99| 日日干夜夜欢| 四虎视频在线观看| 精品人妻夜夜草| 三级片大波波| 偷拍欧美激情| 国产精品亚洲四五区在线观看| 久久黄黄| AND人妻系列| 91婷婷伊人狠人| 亚洲 国产 精品一区| 久久美女国产| 1769精品一区二区三区| 免费精品福利在线观看| 九久久九九久视频| 国产美脚女优尤物在线观看| 91精品啪在线观看国产城中村| 人妻中文字幕精品无码| 91搞逼视频| 99久久精品无码一区二区毛片免费| 中文乱码字字幕在线第5页| 欧美天天综合| 黄片免费看的| 秋霞视频一区二区| 国产精品宅男免费| 91色情黑丝搞鸡在线观看一区二区三区三州| 特级丰满少妇一级AAAA爱毛片| 乱伦1色页| www狠狠| 青娱乐 成人娱乐在线| 久久综合女优| 欧美性91| 亚洲AV永久无码一区仙野| 少妇 综合| 欧美国产操逼| 亚洲情欲| 激情五月婷| 龙兴卡官方查询| 男人天堂2017| 1769精品一区二区三区| 97免费在线视频在线观看| 啊啊啊啊啊啊啊网址在线观看| 久久久久久久9999| 无码乱人伦中文视频| 国产有码一区| 91热爆在线| 最新欧洲欧美日本激情网站| 久欲AV| 色婷婷五月综合激情中文字幕| 9999九九九久久久| 国产在线激情| 国产美女自拍AV| 99热婷婷一区二区三| 自拍偷拍第26| AV一二区| 久久久新亚洲AV| 国产福利影视| 天天色综合影视网| 激情色色| 97超碰免费人人性爱| 搡老女人老91妇女老熟女| 日本色婷婷| 少妇久久久久久| 丝袜狠狠草尤物人妻av91| 亚洲色棕合| 天堂九九九九九九九九九| 国产sv美女内射| 久久精品人体| 97国产精选| 婷婷五月成人| 夜夜草我| 亚洲同性aV综合| 91九九| 91亚洲电影| 人妻天天爽夜夜爽精品2| 香蕉99秘 一区精品蜜桃臀| 无码伊人久久大杳蕉中文无码| 啊啊啊不要嗯嗯在线观看| 国产色呦呦| a片在线播放| 啊啊啊在线观看免费视频| 黄骗免费| 欧美日韩国产成人高清| 伊人操操| 久九干| 96久久精品一二三区色欲| 亚洲丨在线| 熟女丝袜视频| 亚乱色| 夜夜精品视频| 乱色老一区二区三区的观看方式| 乱色视频中文字幕| 亚洲人体视频在线观看| 免费看片黄| 五月天欧美色图| 欧美日韩性感| 丁香六月综合激情| 国产精品久久成人免费| 成人日韩3| 国产精品一区二区后入| 超碰97网址| 少妇二级| 人妻中文字幕日韩电影| 免费1级a做爰片观看| 日韩一级二级三级免费看完整版| 97在线欧| 91男人天堂网| 91精品国| 中文字幕日韩情色| 欧美亚州综合网图片| 欧美综合 站| 久久6热精品99视频| 有码人妻系列| 国产精品经典一卡久久久| 国产免费久久久久| 日韩无码专区| 91精品丝袜久久久久久| 五月婷婷丁香| 欧美天天拍| 超碰在线974| 青青色综合| AV99热18这里只有精品| 久久后入制服| se..亚洲欧美| 日B操| 国产亚洲日韩在线三区黑人| 在线无码操| 青青草日韩无码| 亚洲中文人妻色| 自拍亚洲综合| 啊啊啊免费| 日韩 欧美 另类 人妻| www.人人cao| 激情露脸爱| 加勒比色99999| 欧美亚洲综合高清在线| 性影在线视频| 精品久久久久,69国产成人精| 黑丝日韩av丝袜av| 欧美性高潮| www.91逼逼.com| 国产精品一区二区三区在线密挑| 亚洲涩涩| 自拍偷拍国产欧美日韩韩| 九色婷婷| 亚洲情色图片区| 国产97av| 女人爽到高潮潮喷18禁网站| 男人网站婷婷| 中文字幕美女91| 狠狠操狠狠| 黑人粗大V S日韩女优视频| 亚洲图片欧美色图| 国产剧情一区在线观看| 不卡视频一区蜜桃视频| 中文字幕成人理论在线| 蜜桃无码AV一区二区| 久久精品视频在线观看| 一区二区三区国产在线播放 | 国产和美国毛片| 在线国产福利网址导航| 日韩av熟女一区二区三区成人| 美女黑人91神马| 你懂的在线观看区国产| 日韩免费性爱视频在线观看| 性九九九九九九| 人、人、摸,人、人、草| 狠狠躁日日躁夜夜躁A| 久久男人精品| 亚州日韩97| 日本在线不卡v二区| 国产青青美女玩逼视频| 最新啪啪视频| 中文久久久| 九九玖玖精品| 久久久成人国产精品无码| 香蕉av一区二区三区| 九九热最新| 岛国免费视频在线| 粉嫩久久久极品| 亚洲操逼无码| 日本影视久久免费| 青青草视频导航官网| 91在线超高颜值国产| 狠色婷婷久久一区二区三区_| 思思性爱| 99久久久久久亚洲精品不卡| 60秒免费小视频| 亚洲人妻av| 另类TS人妖一区二区三区| 天堂av最新电影网| 99国产精品在线观看| 在线可观看的黄色网址| 97操| 色综合大香蕉| 制服中出中文人人精品| 欧美熟妇乱码在线一区| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 日韩欧美亚洲自拍偷拍| 啊啊啊男女| 伊人久久久日韩一区| 大香蕉九九| 欧美日韩性爱无码| 高清无码一区二区三区| 国产无马在线| 少妇一级无码精品| a级免费在线观看| 国产精品久久久亚洲第一牛牛_在线观看 | 亚洲另类久操网| 伊人97超碰| 五月婷婷丁香| 野狼激情网| 日本一二三高清| 日本熟妇熟色97一本在线观看| 蜜桃无码AV一区二区| 午夜精品久久久久久久99蜜桃一| 国产精品 久久久精品一牛| 亚洲激情综合另类男同| 精品人妻av在线播放| 亚洲AV操| 欧美黄色大香蕉一区二区| 国产欧美亚洲精品a第2页| 久久精品国产72国产精品福利| 99精品成人免费看| 亚洲无套久久嗯嗯| 日本在线不卡123| 国产成自自拍在线观看| 久久九操在线观看| 男女啊啊啊啊啊| 国产精品国产亚洲区艳妇糸列| 97在线观看播放视频| 熟女色综合久久| 调教熟妇 久久久久久| 亚洲天堂性爱| 欧色性第一页| 久久嫩草| 日本操BAV| 亚洲另类综合欧美| 香蕉色网| 国产精品久久久吖| 性爱乱伦一区| 一区二区首页| 啊啊啊好大好深| 欧美在线永久天堂| 超碰99在线观看| 天天影视网色欲色香| 超碰在线人人射| 午夜丁香婷婷| 久久久九精品| 99国产在线 精品 视频| 婷婷三区| 热99这里有精品综合久久| 淫妻综合网| 亚洲第一视频 欧美风情 日韩| 欧色网址| 婷婷成人五月天| 欧日韩一二三f区| 日韩精品中文字幕人妻| 十八禁网站在线| 久一区久久蜜桃| 欧美黄片欧美黄片xxx| 秋霞午夜视频一区二区| 天天躁日日躁成人字幕aⅴ| 久都青青视频| 91啪啪| 日韩av女优在线免费一区| 国语精品av| 屌逼麻豆| 国产精品com| 内射黑人| 中国乱伦一区二区| 99AV| 大香蕉在线视频重口味毛片在线| 国产亚洲福利第一页丝袜| 开心激情站| 久久久一区二区三区三州| 伊人991| 啊啊啊啊啊操我视频| 国产乱伦性爱区| 爱丝福利| 久久夜色一区二区| 亚洲av强奸乱伦| 欧美AB在线| 97超碰热线| 99久久e免费热视| 91熟女丨老女人| 大香蕉一人在线| 天天躁日日躁AAA片李宗瑞| 色噜噜人妻av中文字幕| 夜夜爽77777| 91人妻最真实刺激绿帽| 精品久9| 欧美一级专区免费大片| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 歐美一級亂黃99在綫精品| 91粉芽高清在线一区二区| av毛片aaaaa免费看| 精品免费成人久久| 男人 天堂 日 亚洲| 丁香五月激情综合| 国产女人成人精品视频| www.大香| 尤物网址| 富女玩鸭子一级毛片| 91人妻人人澡人人爽人人精品| 97 视频在线| 怡红院视频在线| 色欲天天综合网| 99色综合| 九久久九精品视频| 亚洲午夜免费狠狠干| 717影院理论午夜伦八戒| 91天堂色男人的天堂| 久久精品日韩| 国产呦精品一区二区三区下载| 国产成人无码啪| 欧美gv在线观看| 亚洲欧美激情小说| 中文字幕三四五区| 偷拍盗拍亚洲色图图片 | 久久亚州精品成人Av无| 无码高清操逼网址| 国产精品亚洲高清在线| 国产亚洲精品美女久久久| 亚洲成人福利电影免费| 日韩人妻播放| 99这里只有精品| 亚洲国产综合久久天堂| 操逼内射干逼白丝91| 日韩ab网 | 国产又猛又粗又爽又黄| 亚洲一区二区三区中文字幕| 天天日天天搞天天干| 婷婷深爱五月| 亚洲瓯美色图| 99色在线| jizz啪啪| 国产精品极品美女视频| 亚洲精品99| 熟女高潮合集-永久久久-成人AV| 97久久国产亚洲精品超碰热| 91性感在线| 欧美专区日本专区| 中文字幕人妻色偷偷久久皮 | 国产2.3.4区| 免费日韩黄片| 欧美性天天影视| 9长久久精品| 亚洲欧洲av影音| h在线看免费版在线看| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 日韩一性一交一A片俄罗斯| 嗯嗯啊操我| 大香蕉草草| 熟妇的味道HD中文字幕| 超碰亚洲97| 性色综合网| 婷婷丁香五月综合| 日韩青久久| 九月激情婷婷| 日本男人插女人的逼黄色| 日本人妻最新在线中| 中文字幕精品三级久久久| 亚洲精品国产无码高清| 日夜久久久九九九久| 少妇一级无码精品| 不卡超碰护士AV在线免费播放| 日韩十八禁| 96AV精品| 亚洲性爱电影| 九九九九九九免费视频| 94色色电影网| 9l视频自拍9l九色成人| 久操国产在线| 色眯眯射| 色综合色欲色综合色综合色综合| 蜜桃精品视频一区二区三区| 色综合久| 国产精品播放| 久久大线蕉一区| 国产小u女在线观看| 东北毛片| 嗯嗯啊啊操死我| japan日本高清乱xxxx| 成人亚欧免费视频| 欧美色图20P| 另类亚洲图色| 97最新在线播放视频| 久久久精品电影| 日韩在线电影| 国产久久男人天堂| 久久久久9久久久久| 日韩欧美国产一区二区三区四区| 麻豆色约约| 91强在线播放| 亚洲乱色视频一区、二区在线| 秋霞欧美性爰视频| 中文字幕一区二区在线日韩精品| 亚洲 欧美 第一页| 激情婷婷丁香| 欧色综合| 激情开心五月天| 999岛国大片| 乱色视频中文字幕| 欧美亚洲另类在线蜜桃| 欧美一区二区三区互相| 97免费在线| 东北女人高潮视频| 骚日日av| 9美女超碰在线免费观看| 91综合国产精品| 国产精品久久久久久久久久久久久久久久久久| 中文字幕av亚洲在线| 人妻中文字幕日韩电影| 日韩一级成人毛片免费观看 | 骚货人妻偷情自拍在线视频| 911av网站免费观看| 久久精品国内Av熟女高清| 女性喷水高潮在线观看| 亚洲97成人在线观看| 1024人妻熟女一区二区三区| 欧美大香蕉专区网| 色狠狠色| 亚洲色图加勒比| 久久久久久少妇| 精品人妻一区二区三区四区| 加勒比海色香蕉婷婷| 五十路六十路七十路熟婆| 成人激情无码在线视频| 在线观看综合精品亚洲| 高清国产成人无码| 成人日韩欧美| 第45页一区二区| 毛片99-全集电影手机免费观看完整-B029AV | 久插不卡| 久久风骚城市| 欧美91视频| 国产操逼逼网| 黄色网址久久精品欧美喷水| 久久婷婷一区二| 美女91色黄18| 亚洲欧洲日本精品中文a∨| www黄片免费看com| 97色冈| 抽插一区二区视频| 高潮毛片无遮挡高清免费| 美女诱惑爱爱| 茄子社区国产精品| 欧美人与性动交a美精品| 欧美欲色| 久久大| 久久久久久午夜男人的天堂| 亚州色图片在线色| 亚洲国产欧美中日韩成人综合视频| 亚州情色j区| 国产精品久久| 人妻AV 中文字幕的| 综合天天网| 亚洲最大AV网| 亚洲人妻色图| 亚洲一区日韩| 久久久久久久久女黄| 日本Xx性爱| 日韩欧视频| 国产又爽又黄| 嗯嗯啊啊操我| 夜夜夜久久| 日韩黄色av中文字幕| 激情小说亚洲视频| 欧美婷婷五月天| 清纯唯美激情| 亚洲乱色视频一区、二区在线| 91无遮挡| 好爽免费视频,| 99色热| 天美精品原创av片国产| 久久一二三四不卡 | 啊啊啊啊嗯嗯在线久久久| 激情五月天色播| 乱伦熟女论坛| 中文字幕第23区| 色色婷婷丁香| av三级电影在线播放| 91爱看| 成人情色一区二区| 亚洲成a人片在线观看中文!!!| 天天情欲宗合网| 超碰三级秋霞| 中文字幕奈奈美被公侵犯| 高清孕妇孕交 交孕妇| 78综合网| 精品一区二区成人动漫| 国产精品人妻无码久久久互動交流| 欧美日韩大陆黑人少妇99| 亚洲偷拍自拍在线视频| 日韩一级特黄av毛片| 在线免费观看高清无码视频 | 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 亚码激情| 女人高潮大叫一级毛片| 国产成人自拍视频视频| 久久久久久久9| 中文字幕一二三| 欧美操逼录像国产黄色国产| 都市激情人妻一区二区青青操视频| 偷拍 亚洲| 秋霞久久亚洲精品成人| 中文字幕,人妻,日韩| 久96热在线观看视频| 淫淫综合网| 好一吊区二区| 东京热毛片调教| 碰人碰碰人人开房人肉| 97在线青| 青青草久久| 一区超碰一区| 欧美图片校园春色| julia国产在线| 九九草| 天天cao在线| 国产视频人人网| 日韩强奸av| 18禁精品网站在线看| 国产精品蜜乳AV| 天天精品| 97操97色| 玖玖资源中文字幕制服丝袜| 老熟女阿 国产91| 亚州综合色| 26uuu性| 黄片国产精品一区二区| 激情网五月天| 亚洲精品一二三四区| 日欧毛片久久| 9 1果冻精品视频| 欧美少妇性爱网站| 超碰 97国产熟女| 干美女人妻| 26uuu最新| 日韩黄色一区二区三区| 狠狠狠一区二区三区| 9999久久久久| 亚洲第2页| 欧美色图亚州激情| 中文字幕精品码亚洲| 蜜乳AV一区二区三区四| 九九成人| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 色偷综合| 福利视频一区二区微拍| 日本在线一二| 久久精品国产亚洲粉嫩| 久久毛卡| 九九综合网| 大香网站| 91网站在线播放| 欧美刺激色黄片免费看| 久久精品男人的天堂| 神马久久久久久伦理片| 97频视在线| 性爱乱伦一区| 208天天久久九九九| 久久男人精品| 久久综合超碰| 91操人| 日本精品免费一区二区三区四区| 你懂的在线观看区国产| 久久精品人体| 人妻少妇久久中文字幕一区二区 麻豆 | 日韩美女,国产传媒,视频一区| 曰韩中文人妻视频| 白丝1区2区3区| 天堂а√在线最新版在线| 亚洲第一二区另类图| 欧美日本中字另类在线| 男人天堂2030| 中美日韩毛片| 成人麻豆av电影网站| 亚洲97P| 乱色视频中文字幕| 国产精品久久久久久久无码AV| 一牛一区二区三区久久| 99久久久er直播网址| julia国产在线| 日本超碰97日韩精品人妻| 六月丁丁香| 曰韩操B| 极品销魂美女一区二区 | 亚洲人成色9999精品久久| 岛国黄色大片网站| 亚洲熟女乱色一区二区三区 | 艳美熟妇先锋一二三区| 日本女厕偷拍| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 色欧洲| 久久鲁夜| 日韩av女优在线免费一区| 中文字幕美女91| 久久久久亚洲Av无码专区老牛影视 | 日韩无码第3页|