亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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)核頂多算個“大號引導程序”——因為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號向量。異常可以分成三類Fault故障、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é)的門描述符就填好了。寫這個宏的時候我建議初學的人不要光看宏一定要把門描述符的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的初始化命令順序搞錯導致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)中斷的所有條件”準備好之后才把門打開。這個思想特別值得學習不要在任何前置條件未滿足時打開中斷寧可晚一點開不要冒一點險。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
返回資訊列表
成人精品视频| 一区二区三区在线日韩影院观看| 成人小电影网站tex| 国模不卡| 欧美国产成人在线| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 超碰精品在线| 久操免费电影| 国产精品青草综合久久| com 首页 18岁 禁区 女优 免费 精选 同城| 极品综合| 中文字幕人乱码中文字的预防方法 | 智利AV在线网| 精品美女久久久久| 高清不卡视频| 国产精品成久久久久午夜午夜| 99亚洲天堂| 日本 情色 1区2区3区| 精品久久久av无码免费| 自拍视频大全亚洲专媒视频/一区二区三区 | 国内精品久久久久影院亚洲| 久久一本大香蕉 | 日韩中文字幕在线视频观看| 蜜桃丰满熟妇av无码区不卡| 久久久国产亚洲精品系列| 91色噜噜狠狠| 中国少妇XXXX做受| 嗯嗯啊好大| 高清无码一区二区三区| 国产日韩欧美| 玖玖玖玖精品国产剧情| 超碰97在线中文| www.av在线视频| www.AV有限公司一区| 国产一区二区三区免费视频在性观看| 欧美激情超碰777| A级毛片在线看免费| 黄网站黄视频网站进入口| 日本精品中文字幕视频| 国产精品午夜成人福利| 日欧亚洲二三区大片不卡| 亚洲码和欧洲精品激情系列| 中国人高清www色视频免费| 色妺妺在线视频| 国产性爱强奸乱伦大全| 青青草精品| 在线综合色| 5252色欧美在线男人的天堂| 五月天激情婷婷| 天天伊人| 国产久久久久影院老熟女| www国产天美久久久| 国产精品伦理| 97亚洲一区| 色婷婷六月丁香七月婷婷| 97精品第3页| 亚洲欧美日韩精品久久久一区二区 | 人人妻人射| 伊人四虎综合| 欧洲一级性爱视频在线观看| 亚洲图片另类| av久日| 色噜噜人妻丝袜a∨先锋影 | 精品久久一区二区三区四区五区| 欧美色999| 91高跟美女在线播放| 欧美劲爆视频一区二区| 久久精品人妻一区| 日本性一区| 综合网欧美在线| 97人人夜夜精品视频| 9999九九九久久久| 九一屌逼| 啪啪一区| 午夜国产成人福利视频| 日韩亚洲欧美中文字幕| 国产少妇高潮| 香一区二区三区| 日韩99精品视频综合区| 9Ⅰ超碰| 天天插天天操天天摸天天射天天看| 国产精品亚洲一区二区三区四区| 偷拍精品一区二区三区| 午夜.DJ高清在线观看免费7| 欧美第五页| 国精品一区二区三| 黄网在线播放| 国产人伦a片信息免费片| 超碰久超碰久| 青久久| 麻豆亚洲Av成人无码一区精品| 蜜乳AV一区二区三区四| 国产成人亚洲精品无| 午夜AV污污污| 亚洲精品国产熟女久久久| 3571色综合一区二区二区| 欧美日韩国产三级黄色| 91九色蝌蚪在线观看| 情色大香蕉| 欧美黑人猛交春色影视大全| 操逼视频亚洲| 老司机福利青青草| 热热色青青草| 97碰碰日本乱偷人妻中文的| 91麻豆天美国产欧美日| 亚洲综合婷婷| 欧美日韩性爱操大逼| 国产一级内射高清视频| 九九九九九九精品| 亚洲狠狠入| 亚洲色丰满少妇高潮| 国产女上位好爽在线| 亚洲αv一区二区三区| 我要去看2个日本美女.com曹逼| 欧美天堂在线| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 无码操逼天堂| 青青草色插素人| 香一区二区三区| 丁香五月社区| 91国产精品在线看| 日本肉体xxxx裸交| 91蜜臀熟女| 色婷网| 婷婷在线视频| 久久久久久大| 97操97色| 日本黄色天堂| 日韩丨制服丨中文|在线| 手机不卡视频不卡在线一二三区| 嗯……啊…嗯嗯…啊…好舒服| 美女尤物福利视频| 日韩亚洲美女一区久久| 99热免费| 福利风月五月天影院| 性爱久久| 欧美综合色站| 蜜桃色院一区久久 | WWW.加勒比人妻一区不卡.com| 亚洲欧美一区二区三区在钱蜜桃| 中文字幕视频一区视频二区| 激情亚洲天堂| 欧亚日韩综合精品国产| 操死我了嗯嗯嗯| 精品国产一区二区三区久久久蜜臀| 亚洲熟妇无码一区二区三区| 亚州操操穴网| 少妇蜜汁| 中文字幕片| 欧洲中文字幕| 日韩无码嘿咻黑热久| 欧美日韩岛国大片在线观看| 欧美色性爱| 二男一女成人A片| www.91逼逼.com| av日韩国产一区二区| 国产精品久久久无码AV网站| 免费观看啪视频| 五月天综合网| 国产成人主播| 老熟女综合网 | av一区二区三区四区| 国产成人一级av88| 少妇滛荡视频| 丁香五月成人| 加勒比综合九九99视频在线播放| 久草老司机| 一区二区影视| 97超碰人操| 中文字幕免费在线观看| J?P?NESEHD熟女熟妇伦| 成人美女av| 性爱av网站| 美中韩AV综合网| 嗯嗯啊啊操死我| 亚洲污污网站| 麻豆美女丝袜人妻中文| 久草国产在线视频| 色婷婷影院| 免費人妻夜夜爽天天爽爽一区| 欧美乱妇狂野欧美在线视频| 九九九久久久W精品| 狠狠干91| 亚洲日韩成人性爱视频| 日本一区二区三区精品| 亚洲欧美骚| 国产美女裸体秘 永久无遮挡| 欧美亚洲| 香港日本韩国人妇99www.wccm20| 女人香蕉久久毛毛片精品| 亚洲欧洲中文日韩女优乱码| 九九色热| www. 男人天堂成人在线| 97干97色| 亚洲精品亚洲人成在线麻豆| 91 丝袜在线| 人妻少妇精品久久久久久| 性久久久| 欧美激情总合网| 综合网97| 国产亚洲日韩在线三区黑人| 区日韩亚洲乱码av电影| 精品人妻一区二区三区不卡断 | 思思热影视| 精品熟女一区=区三区| 学生妹天天看| 欧美福利视频啊啊啊啊| 激情五月天丁香| 91超碰碰在线| 操屄日韩| 国产欧美伊人| 清纯唯美第一页| 人人操肉肉| 人人喜人人妻| 麻豆成人AV| 亚洲一区二区三区欧美日韩| 欧美影音在线| 色色毛片| 伊人天堂在线| 久久性爱视频免费看| 色五月激情网| 男人天堂免费| 性色av一区二区| 诱惑人妻欧美一区在线播放| 搡老女人老91妇女老熟女| 久久久九九网站| 超碰在线1234区| 人妻 中文 日韩| 亚洲男人天堂网久久| 精品人妻一区二区免费蜜桃视频| 久久东京国产精品视频| 物业黑人 AV一区| 爱射综合| 热的中文 热的有码 热的国产| 操婢日韩| 亚洲吊色| 中文字幕91页| 久久久久久久9最新免费视频观看| 亚洲成aⅴ人片不卡无码| 99无码| 五月天人妻综合| www.99中文字幕| 午夜精品久久久久| 日本免费一级AAA大片器| 神马午夜久久久| 久热在线精品免费观看| 人人噜夜夜操| 天天艹天天日| 97se综合| 99re在线观看| 欧美亚洲激情| 久草资源在线视频官方总站日韩丝袜美腿 | 黄色工厂这里只有精品| 亚洲一区二区麻豆影院| 精品久久无码午夜福利| 日韩钢筋无码高清啾啾啾| jizz啪啪| 久久 久久国内精品亚洲| 美国aaaaa一级黄片| 亚洲清纯唯美| 国产精品午夜高潮呻吟久久av| ...日韩成人一区二区三区字幕| 国产熟女免费观看久久| 精品一区二区三区18| 色综合婷婷| 精品人妻一区二区三区视频在线| 97资源超碰| 亚洲春色欧美激情自拍| 国产免费久久精品99re韩国| 国产精品自产拍在线观看社区| 色一区二区三区综合| 色综合色欲色综合色综合色综合| 婷婷激情四射| 久草色悠悠在线视频| 为用户提供免费看黄网址在线观看| 青青国产在线拍揄自揄拍| 金莲网址| 98久久超碰| 亚洲成人一二三区| 日操粉逼逼| 中国熟妇| 99黄页网站| a在线观看| 九九综合九九综合| 在线小说视频一区| 97视频在线免费看| 色呦呦呦在线观看视频| 丝袜美腿丝袜| 亚洲美女精品| 曰韩精品视频一区二区| 亚洲欧美综合图片| 97欧美色资源| 亚洲欧美一区二区三区在钱蜜桃| 成人无遮挡毛片免费看| 91天美| 91美女色视频亚洲| 色色无码| 亚洲成a人片在线观看中文!!!| 999精品女人| 爽极品影院| 国产成人五月天丁香花| 91操人| 日韩人妻少妇中文字幕| 国产做?爰片久久毛片?片美国| 欧美成人免费在线观看| 蜜桃传媒视频第一区入口在线看| 大香蕉 222| 欧美一区二区亚洲天堂| 操操操五月天婷婷丁香影院| 啊啊啊好大好深| 99精品网站| 婷婷久久综合久| 婷婷干黄色| 大香蕉中文网| 久久综合久色欧美综合狠狠| 国产久久视频| 丁香久久| 色婷婷五月综合| 日日操丁香五月天| 黄色大片免费在线| 亚洲图片欧美色| 亚洲好色人妻| 东京热不卡视频| 国产蜜臀精品一区免费尤物| 丁香五月天激情综合| 青娱乐国产盛宴视频| 水多多映视AV| 91人妻人人澡人人爽人人精品| 97精品久久久久中文字幕| 欧美最婬乱婬爆婬性视频 | 69人妻精品一区二区绯色| 国产欧美精选激情视频| 天天操夜夜嗨| 国产操逼视频在线观看| 五月亭亭六月丁香| 欧美资源| 91人人| 熟女少妇视频| 国产午夜精品一区二区三区牛牛| 97视频620| 99视频精品| 亚洲欧美日韩精品久久久一区二区| 再深点灬舒服灬太大了添视频 | www.狠狠干.coom| 中文字幕性感少妇av| 免费亚洲黄色视频在线观看| 多毛小伙内射老太婆| 成人无遮挡毛片免费看| 男女激烈网站最新| 国产女同视频在线播放| 久久欲| 色综合V| 狠狠久久手机视频精品| 国产一国产一级毛片古装| 久久久久久久久久久久97| 亚洲无码一区二区三区三州| 91操人| 九月丁香综合网| 黄片免费看的| 黄色电影观看久久9| 91精品久久久久五月天精品| 中国大陆国产高清AⅤ毛片| 2018天天干在线视频| 最新av网站在线观看| 国产又黄又粗的视频| 激情黄色片在线观看| 国产一级高清免费观看| 国产成人91一区二区三区| 你懂的在线观看区国产 | 国产午夜精品理论片a大结局| 国产综合久久久麻桃个| 国产 日韩,欧美 自拍| 欧美天天综合| 国产黄色影片在线观看| 亚洲天堂无码| 东京日日夜夜| av在线人气| 国产熟妇一区二区| 97操97干| 日本韩高清无砖码22o| 91大神精品长腿在线观看网站| 国产精品久久久久无码Av网曝门| 精品亚洲国产成人精品| 国内自拍 日韩激情 99| 欧美色棕合| 色91综合网| 免费成人在线熟妇网| 欧美在线|亚洲| 久久精品区| 中文一区二区三区影院| 色嗨嗨在线| 五月天色色色| 久久精品一区| 91男女| 欧美97超碰| www久久国产精品| 日韩黄片影院| 俺去俺来也在线www| 激情五月天综合网| 色综合20p| 亚州五月| 国产欧美精选自拍一区| 亚洲色啪| 大香蕉男人的天堂| 久久岛国| 色色福利| 中文乱码99| 天天久久久久久| 高清无码久操视频| 久久久国产成人一区二区三区在线| 青青11操操操操操操操操| 青青草乱入乱欲视频在线观看| 少妇熟女视频一二三区| 黑人猛交| 久久97| 狠狠躁天天躁日日躁| 熟妇人妻精品一区二区| 一区二区三区黄色片a| 色色操| 福利一级版子| 天天澡天天爽日日AV| 欧美亚洲尤物久久| 97国产亚洲中文在线| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 热99这里有精品综合久久| 无码人妻精品一区二区中文| 啊啊啊 在线观看| 久久视频,这里只有精品| 欧美福利视频啊啊啊啊| 色色色五月婷婷| 天堂涩涩| 乱伦一区二区三区‘| 亚洲另类综合欧美| 成人一二三区| 亚洲 国产 精品一区| 精品国产91久久久久久一区黄无| 肥佬影院91| 亚洲av影音先锋| 人人综合| 家庭乱伦国产精品| 亚州色交| 色欧洲| 丁香色婷婷| 色婷婷一区二区三区久久午夜| 精品人妻一区二区三区四区石在线| 色婷网| 免费男人的天堂| 日韩成人高清一区二区| 亚洲精品色| 综合熟妇一区二区三区| 美女一区二区国产精品| 久久99精品九九久久久婷婷| 一个色导综合| 夜夜高潮夜夜爽| 久久免费少妇| 神马福利久草| 白嫩少妇| 91色噜噜狠狠| 欧美色图色综合| 99色视频| 日韩熟女精一区二区三区不卡| 丁香五月激情啪啪| 国产又粗又长又大的视频| 抽插无码高清一区| 欧美草草| aaa一级黄片| 另类专区加勒比| 欧美 精品国产制服第一页| 久久蜜桃综合网| 免费观看性欧美一级| 啊嗯好大视频在线观看| se吧提供国产乱老熟视频胖女人 | 2011国产精品| a'v在线资源| 超碰久久性爱| 国产精品黑人一区二区三区| 天堂精品小草| 风流老熟女一区二区三区l| 欧美 亚洲 综合 制服 另类| 亚洲五码一区二区三区| 91欧| 99re这里只有精品中心播放| 香蕉国产精品麻豆亚洲欧美日韩| 大香蕉综合久久| 黄页视频网站野外| 国产日韩美女小穴视频网站不卡| 婷婷五月在线视频| 国产女人视频三四五区| 亚州再线| 粉嫩在线一区二区懂色| 黄色一区三区| 高清无码国产亚洲| 0755午夜福利视频| 7月婷婷综合| 日韩综合无码色欲vv| 中文字幕女同在线| 国产日比| 亚洲欧洲自拍图片专区满春格| 一区中文字幕二区日韩| 丝袜美腿制服人妻二区中文字幕| 亚洲三级。日韩三级| 人妻夜夜爽天天爽麻豆三区网站| 欧美亚洲第一页| 中文字幕av一区二区三区人妻少妇 | 国产白丝网站| 久久男人网| 激情啪啪拍91| 九九九久久久| 97伦乱| 在线性黄高清免费视频| 97人人爱人人乐| 白嫩嫩一区| 操操逼视频| 欧美综合综合| 天美精品一区二区三区四区在线观看| av天堂手机版追回| 欧美gv在线观看| 国产精品69久久久久久久| 免费视频无码| 色天使亚洲综合在线观看| 中文字幕AV中出| 亚洲视频一二区| 亚洲色啪| 婷婷午夜成人色中色| 蜜臀久久99精品久久久久久婷婷| 亚洲Av噜噜一区二区三区妖精| 四色永久成人网站| 中文字幕一区二区三区字幕| 果冻传媒A片麻豆熟妇人妻| 屌妞视频久久久久久久久久久久| www.激情| 欧美日本国产日韩激情视频| 你懂的在线观看区国产| 欧美操逼录像国产黄色国产| 欲香欲色天天天综合和网| 五月丁香六月激情综合| 亚洲精品一区二区三区在线播放| 亚洲无线观看久久| yazhououmeizongya| 午夜啊啊啊| 蜜臀久久99精品久久久久久久久| 搡老女人老妇女AAA一VU麻豆| 久久久久99精品成人片蜜臀| 亚洲精品 超碰| 天天爽天天| 国产中文字幕曰本毛片| 日韩欧美大力操| 国产一区二区二区按摩精品啪视频| 国产2.3.4区| 午夜毛片高清免费不卡| 天天综合欧美综合| 九九久久首页| 国产在线76页| 亚洲九区| 久9视频| 综合欧美日韩在线观看| 日韩精品在线观看观看| 国产欧美在线观看免费观看| 亚洲在线91| 蜜臀一二三区| 九一综合网| 男生女生啊啊啊啊| 97超碰色屌| 有码免费观看| 久久久久久久久久久人妻| 九色97| 综合五月天| 婷婷五月在线视频| 婷婷五月天激情小说| 欧美性爱另类综合| 国产精品午夜高潮呻吟久久av| 探花熟女,姿勢到位,體驗感也到位| 国产福利电影| 亚洲,日韩,欧美,成人播放| 成全动漫视频观看免费下载| av网站免费线看| 国产无码精品久久久久久| 九九综合九九综合| 欧美成熟性爱精品| 超碰在线欧美性爱激情| 国产成人拍国产亚洲精品| 欧美精品成人一区二区在线观看| 国产h小视频在线观看免费| 91亚洲电影| 亚洲欧美色图片| 99久久99久久免费精品蜜臀| 绯色一区二区三区不卡少妇| 日韩精品字幕| 国产二区视频在线观看电影| 人人摸人人添人人操 | 亚洲国产精品成人综合| 色综合20p| 亚洲色图第四色| 久久精品男人的天堂| 国产suv精品一区| 2017天天操天天日| 97亚洲欧美| 久久透逼视频| 午夜偷拍久久熟女| 999岛国大片| 中文字幕日韩综合| 99少妇精品视频| 920日本午夜免费| 乱老熟女一区二区三区| 国产91丝袜在线播放蜜月| 青青草综合在线| 国产精品免费久久久久久久久久| 强奸乱伦AV网址| 亚欧高清在线| 天天肏美女| 热久久国产精品视频大陆精品| 夜色97| 男人的天堂视频精品乱在线| 蜜臀99久久精品久久久懂爱| 中文字幕亚洲永久精品| 日韩无码专区| 草b在线| 十八禁电影伊人网| 青青草国产欧美非洲黑人 | 东北丰满熟女国产一区| 国产AV久久久蜜爱影集| 久久婷婷国产一区二区色| 欧日韩在线观看| 亚洲色电影在线| 国产精品99精品视频网站| 少妇干B| 91亚州日韩高清| 欧美亚洲se91| 黑人综合网| 蜜乳AV一区| 99re9在线| 欧美天天综合站| 国产精品另类一区大香蕉| 嗯嗯啊啊操我| 另类小色呦| 欧美少妇第一页| 欧美啪啪天堂| 欧美一级特黄淫片在线观看| 99热精品在线观看| 91美女視頻| 色综合av综合久久| 91精品大奶人妻| 夜夜騷av、一區二區| 久久久久白虎| caoni国产亚洲av| 青娱乐av在线| 国产蜜臀精品一区二区尤物| av强奸乱轮| 旡码电影特区| 亚洲色人阁| 亚洲欧美在线观看2021 | 日韩伦理久 久久 清纯| 老熟女综合网 | 五月天亚洲网| 日本性交操一区二区不卡系列| 国产免费一区在线观看| 久草精品一区 | 精品人妻av在线播放| 色女综合| 97超碰人妻| 色墦五月丁香| 久久视频,这里只有精品| 中文字幕精品探花视频| 97自拍视频在线| 亚洲交换| 日本色色色色色视频| 人妻在线大香蕉| 欧美特大AA级黄片| 超碰97资源大奶| 亚洲97在线| 欧美激情综合| 老熟女综合网| 免费精品福利在线观看| 国产情色在线| 欧美不卡二区| 青青伊人这里只有精品| 亚洲性爱乱操x| 熟女中出视频| 欧美大波激情xxxx| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲精品熟妇1区2区3区。| 久久久久久国产无码精品| 九九热在线精品视频| 国产JDAV无码视频在线观看| 人人澡人人爽人人精品| 天天看天天日| 黄页大片在线观看| 日本一区不卡| 欧美少妇大量自拍视频在线观看| 91麻豆天美| AV天天综合| 久久只有精品| 亚洲情色第一页| 亚洲精品97p| 免费看欧美美女黄色大片| 日韩欧美蜜桃精品久久中文字幕久久| 日韩午夜精品一区二区三区电影| Julia Annxxxxx| 国产真实野战在线视频| 后入福利| 久久久久久人妻| 人妻久久一区二区三区 | 国产99 中文字幕日韩小视频| 极品一区二区三区免费| 国产粉嫩出水在线播放| 伊人宅男大香蕉| 唐山老熟妇露脸啪啪叫| 欧日韩在线观看| 国产成人99久久亚洲综合| 午夜福利在线视频1000| www.大香| 亚洲九九视频| 天天流夜夜操| 国产精品麻豆成人av| 操逼999| 亚洲欧美国产其他二区| 91精品人妻一区二区三区蜜臀| 亚洲国产日韩欧美熟妇在线| 0755午夜福利视频| 欧美色色色| 亚洲伊人久久综合97| 东北女人| 操逼网站地址| 日韩无码极品| 九九九九免费高| 久久婷综合| 亚洲乱码精品一区二区| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 麻豆久久一区二区三区| 亚州春色| 欧美一级色| 日韩av性爱在线播放| 加勒比海成人视频网| 五月丁香综合激情| 国产美女在线精品免费看| 亚洲自拍欧美色综合| 91久久婷婷| 被男人吃奶很爽的毛片| 96国产污污污丝袜| 天天躁日日躁AAAXX| 无遮挡又黄又刺激的视频| 9 7超碰在线免费观看| 欧美精品1区2区3区| 秋霞色色影院| 欧美精品亚洲精品日韩传电影| 熟女丰满人妻一区| 国产精品久久久久久久黄无码| 久热最新在线杭州| 夜精品久无码| 91美女在线精品视频| 天天搞在线综合网| 精品少妇999| 呻吟 欧美 日本 中出| 久妇网| 熟女被操视频网址| 精品人妻1区| 综合色好色| 久久久91福利姬| 四季AV综合网址| 久99久视频| 亚洲欧洲综合av在线| 91高潮| 97射欧美| 中 文字幕一区二区三四 五 区日 日 骚| 熟女乱伦二区| 精品偷拍13p欧美dodk视频| 91丝袜在线观看| 亚洲欧美综合网站| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 蜜臀亚洲中文| 东京日日夜夜| 色婷婷五月综合激情中文字幕| 人人干黄色| 精品人妻av区天天看片| 中文字幕午夜精品久久久| 欧美国产视频| 欧洲无码一区二区| 九九色色| www狠狠| 黄片无码在线制服| 2017人人操,人人摸| 丰满人妻区一区二区三| 欧美成97爱| 福利天天都操| 操操操操网黑人| 欧美AB在线观看| 久久久爆乳翘臀一线天伦理视频| 亚洲AV无码久久久国产精品| 高清无码 国产精品| 另类TS人妖一区二区三区| 欧美亚洲| 九九九久久久| 超碰91在线| 亚洲日韩美女丝袜美腿人妻视频| 色爽——AV| 神马久久69| 午夜福利在线视频1000| 2019AV天堂| 人妻天天爽夜夜爽爽| 亚洲性爱高潮影院| 九九热在线视频| 无码又爽又硬又激情免费视频| 无码少妇精品一区二区60岁老人| 中国一区二区亚洲人妻| 久久久久久精品免费看A级| 欧美v亚洲v综合v国产v妖精| 天天92av| 9精品久久久久| 嗯嗯啊啊的视频| 色偷偷人人玩人人舔人人操人人摸人人爽 | 青青青草原| 熟妇艹鸡八| wwwss在线观看| 婷婷五月天伊人| 激情久久久| 亚洲AV无码天美传媒一区| 五月天婷婷基地| 欧美后进式| 91精品国产综合久久久蜜臀| 欧美色图中文字幕| 老汉网| www被窝色com| www.av不卡中文字幕| 91处女在线视频| 久久天堂网| 狠狠入| 女性喷水高潮在线观看| 亚洲欧美国产中文视频| 蜜乳AV.COM| 美国aaaaa一级黄片| 色婷婷五月综合激情中文字幕| 色色丁香| 天天操天天射青青草| 色综合加勒比四四季| 97超碰免费生活| 素人伊尹大香蕉免费下载视频| 精品人妻久久久| 免费a v| 性爱视频免费网址| 深夜国产一区二区三区在线看| 日本不卡高清视频| AA丁香综合激情| 亚洲熟妇乱女区二区三区| AV99热18这里只有精品| 欧美第五页| 激情小说在线视频| 高潮毛片无遮挡高清免费| 国产97视频免费观看| 人妻AV在线| 99999精品成人| 超碰97综合网| 蜜臀一区二区三区在线| 日本操逼视频免费| 在线观看色视频| 国语对白在线播放视频| 女人爽到高潮潮喷18禁网站| 97天天爽| 中文字幕精品专区搜索结果91| 久久系列| 美女视频尤物网在线看| 日本3级一区二区免费 | 婷婷在线视频| 欧洲精品网| 人人操人人肉久久精品| 一线黄色免费性爱片| 色色热| 色在线69堂| 久久久久少妇| 丁香六月婷婷综合| 久久有碼| 麻豆熟妇乱妇熟色A片在线看| 亚洲欧洲自拍图片专区满春格| 免费观看国产小粉嫩喷水精品午| 国产精品色| 欧美97视频| 亚洲国产97| 人人插人人摸人人| 91殴美大片| 中文字幕一区二区三区人妻不卡| 日本人妻中文字幕 | 亚洲欧洲激情卡通另类文学四射小说网站| 中文字幕精品一区欧美| 国产传媒操逼视频| 色综合网1| 久久草视频污视频| 熟女人妻精品一区二区视频| 乱伦a片视频| av天堂天堂av日韩| 久久草草欧美精品| 91高潮喷水美女| 午夜成人爽爽爽爽A片李冰冰| 国产三级电影免费观看| 欧美五区| 久久精品一区二区三区四区五区| www.av在线观看| 久久男人网| 亚洲天堂少妇| 国产在线强奸视频| 久久一区无码| 这里只有97精品| 免费A V在线播放| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 精品国产91av一区二区三区| 97视频观看| 97干在线视频| 精品日韩人妻视频| 婷婷综合网| 国产精品97超碰| 日韩乱中文| 淫乱图区 | 色色福利| 欧美色图 人妻| 欧美v日韩v亚洲v最新在线| 国产AV高清AV无码| 亚洲美欧999| 日产操逼| 美女露胸露屁股| 人伦四五区| 国产热RE99久久6国产精品首| 久久精品中文| 国产人妖视频一区在线观看| 秋霞午夜视频一区二区| 在线观看不卡一区二区三区| 欧美人妻二区三区| 亚洲色图欧美色图另类图片| 日日夜夜干| 丰满人妻一区二区三区免费| 亚洲第一综合| 欧美激情区| 98色网| 后入日本1234| av天堂手机版追回| 中日992视频| 国产一级αv免费看片| 免费99精品国产自在在线| 亚洲少妇综合在线播放| 亚洲天堂电影网| 人人操人人摸人| 天天综合站| 婷婷五月天影院| 欧美一级二级三级| 人妻久久久久久久久久久久久久久| 亚洲黄色AV电影| 91亚州日韩高清| 日本人妻最新在线中| 69AV女优男人的天堂| 丝袜美腿亚洲| 射丝袜高跟鞋99| 国产精品嫩草影院午夜两性 | 亚洲视频,小说| 人人 操人人 操人人| 在线情色电影 91大| 国产 三级自拍| 在线视频资源| 九月丁香婷婷| 日韩熟女乱伦中出| 热久久99999| 色婷婷视频| 伊人网在线点播| 久久黄黄| 丰满美女一级毛片在线播放| 我中文字幕6区| 中文字幕在线高清男人的天堂| 大香蕉在线SuP| 久久99综合| AAAA级日本片免费视频| 日本精品免费一区二区三区四区| 夜夜影视四色| 人人澡人人干| 青青草视频在线观看一区二区| 三男一女不戴套的A片| 精品久久在线区一区| 一区二区三区高清| 啊啊啊好湿久久| 日本午夜操逼| 九九热av| 伦在线97| 91一起操| 少妇高潮流水av免费| 亚洲人综合| 欧插网站| 久久久亚洲欧美综合| 亚洲欧美洲综合| 亚洲情色五月天| 天天操天天干一区二区 | 亚洲 在线| 欧美狠狠弄| 欧美东京热精品A∨| 欧美草草高清日韩视频| 亚洲精品一二三四区| 国产精品蜜乳AV| 欧美双插| 亚洲日本天堂| 日本91白丝| 日韩在线观看字幕精品| 久久系列| 天天草AV| 青娱乐av在线| 91干熟女| 欧美一级美片在线观看免费| 欧美日韩亚洲少妇寂寞影院正在播放| 91在线免费观看处女| 日韩AV熟女乱伦| 无码高清少妇久久| 青青草女人天天干| 97超久碰| 欧美午夜精品久久久久久3D| 国产精品宅男免费| 不卡av免费在线网址| 麻豆区久久久久亚| 激情终合网| 蜜臀av在线播放一区二区三区| 一区二区三区免费岛国片| 中文字幕第9页萱萱影音先锋| 超碰97人人乐| 国产第二页| 亚洲综合网电影91| 欧美视频在线视频免费va| 久久久久久久伊人精品| 清纯唯美亚洲综合| 在线 欧美 亚洲| 久久爽爽精品| 欧美少妇一区二区三区| 五月婷婷深深爱| 日韩欧美字幕亚洲一区二区| 操逼日批| 91久久久亚洲| 999久久芭蕾| 加勒比综合a∨| 亚洲欧美精品久| 骚乳在线| 欧美制服网站美腿丝袜| 丁香六月激情| 天天干人妇| 日本欧美一区二区三区免费| 欧美Aⅴ| 精品国产一区探花在线观看| 99热在线只有精品| 久久国产999| 亚洲欧洲无码一区夜| 神马久久久久久久久久久久| 老熟女91av| 国产精品老熟女一区二区| 99综合网| 五月丁香网站| 婷婷啪啪| 99热婷婷| 999岛国大片| 国产 丝袜 欧美中文 另类| 亚洲精品xxx| A V视频日本| 国产 日韩 欧美高清| 中国AAAAAA黄色片| 亚洲国产97| 91中文字幕| 清纯唯美亚洲综合| 大色综合| yw尤物av无码点击进入麻豆| 日韩无码极品| 亚洲最新Av| 国产辣妈在线视频福利| 国产一区二区在线播放| 夜夜无码| 亚洲午夜精品久久久中文影院| 成人区人妻精品一| 亚洲高清欧美总合| 成人性交免费视频| 欧美AB在线| 9118禁| 无码一区免费在线不卡| 久久精品国产亚洲粉嫩| 深爱伊人影院| 91熟女丨91老女人| 超碰在线1234区| 99精品无码| 蜜臀99久| 97爱爱爱| 国模私拍一区二区三区神乳| 成人无码在线视频网站| 国产精品黄色三级av| 激情视屏国产乱伦强奸| 美女操逼福利视频| 国产亚洲在线观看| 超碰亚洲欧美日韩无| 天天干夜夜一操| 337p大胆噜噜噜噜噜91Av| 六月婷婷综合| 久久久久久大| 久久久久78| 亚欧美色图| 麻豆精品.欧美精品.日韩精品.| 亚州综合色| 日韩免费三级黄片电影| 久久精品国产亚洲AV嘿嘿| 日本高清一区二区在线| 五月丁香网站| 欧美天天综| 久久人妻一区二区三区高清| 人妻第一页| 黄色免费网| 岛国黄色大片网站| 日日干夜夜干| 中文字日本乱码| 亚洲久草AV色图| 久久五月婷| 久久久久久久九九九九九九| 欧亚久久偷拍视频| 97国产综合欧美| 日韩综合第八区国产精品| 丰满人妻一区二区三区免费| 日本熟女不卡视频| 人妻乱仑一区二区三区| 口爆综合网| www.AV有限公司一区| 丰满少妇精品一区二区| 高清国产精品福利网站| 日韩 欧美 另类 人妻| 亚洲熟女中文字幕在线| 欧美激情综合色综合啪啪五月| 五月天综合网| 天天影视91看看| 日本精品网站在线中文| 色墦五月丁香| SS久久| 青青青在线高清视频在线一二三四区 | 大香蕉99re| 欧美的性爱网站免费| 国产精品老熟女一区二区| 人人爽人人精品乱人伦AV| 亚洲在饯| 殴美大黄片| 97内射偷拍| 清纯唯美综合| 日韩操啪| 又大又白奶子| 久操影视| а√天堂资源官网在线资源| 99色色网| 天天色踪合| 色哟哟 日韩精品| 99热综合| 在线黄色污污网站| 亚州综合色| 青娱乐日韩无码| 91爱看| 免费观看成人www精品视频| 综合久| 亚洲综合小视频小说在线观看| 久久中文字幕女同性恋一区| 人人看人人插| A V少妇特黄三级| 国产熟码AV| www.av在线视频| 中文字幕在线观看网页| 亚洲av资源| 色色激情五月天| 99热99re6国产在线播放| 97人人夜夜精品视频| 五月久久HDAV| 天天cao在线|