windows 併發與同步 學習筆記

測試windows

 

5.2 windows 中斷與異常數據結構

      1.外部硬件中斷是經過處理器上的中斷引腳管或者本地APIC的內置模塊來發生的;對於一個處理器,一旦被中單,測試

        某個預先被設定的中斷服務例程就被執行!線程

       2.處理器的內部的IDTR寄存器記錄着IDT的位置和它的最大限制,IDTR寄存器爲48位。對象

          每一箇中斷描述符號是8字節(共64位)對於 軟中斷的情形,可避免低特權的代碼經過軟中斷的形式 去執行關鍵的異常或中斷處理的代碼!blog

       3.內存

  

        APC_LEVEL 一個線程插入一個APC能夠打斷該線程同步

        DISPATCH_LEVEL  一個處理器運行在這個IRQL上 可能正在作兩件事情:1.線程調度  2.硬件處理的後半部分 DPCList

                            不會被其餘線程搶佔,只有被更高的中斷搶佔,與線程調度相關的數據結構 只有在此級別才能同步範圍硬件

             這個是最高級的軟中斷,不能訪問換頁內存,由於一旦發生換頁就要執行IO操做,因此只能訪問非換頁內存

5.2.3 中斷對象
   typedef struct _KINTERRUPT {
          CSHORT Type;
          CSHORT Size;
          LIST_ENTRY InterruptListEntry;
        。。。。。。
        }

    InterruptListEntry 與同一個中斷向量關聯的中斷對象雙鏈表,當中斷髮生 全部的中斷對象 都被執行!

           每一箇中斷對象都只能被鏈接到一個IDT項,若是一個服務例程須要被鏈接到多個處理器,必須創建多箇中斷對象。

相關文章
相關標籤/搜索