青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

操作系統(tǒng)運(yùn)行中,種有各種事情打斷和切換,通過系統(tǒng)陷阱來實(shí)現(xiàn): 


簡單來說就和應(yīng)用層的回調(diào)函數(shù)一樣, 只不過這些處理是在操作系統(tǒng)內(nèi)核里面,系統(tǒng)初始化時(shí)就填充好了IDT(interrupt dispatch table), 當(dāng)中斷發(fā)生時(shí), 系統(tǒng)會(huì)根據(jù)中斷類型,去調(diào)用對應(yīng)的ISR(interrupt service routine). 當(dāng)中斷發(fā)生時(shí),操作系統(tǒng)內(nèi)核會(huì)保存足夠多的信息(陷阱幀), 這樣系統(tǒng)處理完中斷之后可以回到原來的地方繼續(xù)執(zhí)行??雌饋砗孟窈臀覀儜?yīng)用層的函數(shù)調(diào)用一樣, 但是他們的實(shí)現(xiàn)是完全不同的, 函數(shù)調(diào)用是同一線程, 通過堆棧來實(shí)現(xiàn)的;中斷處理涉及到線程切換,要保存線程的執(zhí)行環(huán)境。


中斷處理流程圖: 



IRQL(interrupt request level) - 中斷請求級(jí)別:


每種中斷都有自己的優(yōu)先級(jí), 高優(yōu)先級(jí)的中斷可以打斷低優(yōu)先級(jí)的中斷的處理, 反之則不行。
對應(yīng)用層開發(fā)人員來說,最重要的是最下面的3個(gè)軟件中斷級(jí)別:
(1) DPC/dispatch: 系統(tǒng)的線程調(diào)度器工作在這一級(jí)別, 它可以決定掛起和調(diào)度哪個(gè)線程。DPC(deferred procedure call)主要是給驅(qū)動(dòng)程序用的,每個(gè)處理器都有一個(gè)DPC列表, 處理器在降級(jí)當(dāng)前IRQL之前, 會(huì)先把DPC列表里的事情處理完。
(2) APC: APC即asynchronous procedure call, 每個(gè)線程都有一個(gè)APC隊(duì)列, 我們可以往該隊(duì)列中加入自己要處理的事情(QueueUserAPC), 然后系統(tǒng)會(huì)在當(dāng)該線程進(jìn)入alertable wait state時(shí)調(diào)用我們加入的操作,我們可以通過SleepEx/WaitForMultipleObjectEx讓該線程進(jìn)入這種等待狀態(tài)。我們常見的OVERLAPPED ReadFileEx/WriteFileEx就是通過這種方式實(shí)現(xiàn)的。
(3) Passive/Low: 這個(gè)實(shí)際上不是一個(gè)IRQL, 我們普通的用戶代碼就運(yùn)行在這個(gè)級(jí)別,所以它可以隨時(shí)被打斷。


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


在Pentium II 之前, 0x2e中斷進(jìn)入系統(tǒng)內(nèi)核(eax傳遞服務(wù)號(hào)), Pentium II 之后處理器提供了Sysenter/Sysexit指令直接進(jìn)出內(nèi)核。
內(nèi)核對GUI線程和非GUI線程有不同的SSDT(System Services Descriptor Table), GUI線程服務(wù)分發(fā)表更完整,包含了窗口和GDI相關(guān)部分, 在第一調(diào)用user32/GDI相關(guān)的API時(shí)系統(tǒng)會(huì)修改該線程系統(tǒng)服務(wù)表的指針。


內(nèi)核對象結(jié)構(gòu): 


應(yīng)用層打交道的內(nèi)核對象實(shí)際上是執(zhí)行體對象, 它是有一個(gè)或多個(gè)真正的內(nèi)核對象組成的。內(nèi)核對象由對象頭和對象體組成, 對象頭對每種對象包含一致的結(jié)構(gòu), 對象體則每種對象各不相同。對象頭里的對象類型(object type), 對同種類型的對象,指向相同的地址,表明了該種對象的屬性和方法。對象管理器通過對象頭來管理內(nèi)核對象。 


內(nèi)核對象同步原理:


應(yīng)用層我們經(jīng)常調(diào)用WaitForSingle(Multiple)Object, 操作系統(tǒng)內(nèi)部是怎么實(shí)現(xiàn)的?

每個(gè)可同步的對象, 內(nèi)部都有一個(gè)分發(fā)器頭(dispatch_header), 分發(fā)器頭包含了對象類型,狀態(tài),以及等待該對象的線程列表;每個(gè)處于等待狀態(tài)的線程, 都有一個(gè)等待塊列表(wait block list), 每個(gè)等待塊代表一個(gè)等待線程。這樣就很好理解了,當(dāng)我們把一個(gè)同步對象設(shè)置成有信號(hào)狀態(tài)時(shí), 系統(tǒng)沿著分發(fā)器頭的等待線程列表遍歷,找到可激活的線程,將它轉(zhuǎn)入就緒狀態(tài)參與線程調(diào)度。


Critical Section是如何實(shí)現(xiàn)用戶態(tài)等待的?

我們知道CRITICAL_SECTION是同一進(jìn)程內(nèi)我們最常用的同步機(jī)制, 號(hào)稱不用轉(zhuǎn)入內(nèi)核,以高效聞名, 它是怎么實(shí)現(xiàn)的?
單純在用戶態(tài)等待, 我們只能死循環(huán),不停的檢測, 也就是所謂的自旋鎖(SpinLock), critical section如果用這種方式實(shí)現(xiàn),何來高效可言。
實(shí)際上critical section的大概實(shí)現(xiàn)是這樣的: 它內(nèi)部包含一個(gè)標(biāo)志位以及一個(gè)event object, 進(jìn)入critical section時(shí)首先嘗試設(shè)置標(biāo)志位,如果設(shè)置成功,表示成功獲得資源;如果標(biāo)志位已經(jīng)被設(shè)置, 則等待event事件。其中標(biāo)志位的設(shè)置是用類似interlockedexchange這樣的原子API操作的。這樣只要沒有資源競爭,大部分情況下都能滿足我們的高效需求, 如果有資源競爭,實(shí)際上還是會(huì)轉(zhuǎn)入內(nèi)核態(tài)掛起線程。
posted on 2016-03-22 22:48 Richard Wei 閱讀(2224) 評(píng)論(1)  編輯 收藏 引用 所屬分類: windows desktop

FeedBack:
# re: Windows系統(tǒng)機(jī)制筆記
2016-04-13 11:00 | anna
CRITICAL_SECTION是同一進(jìn)程內(nèi)我們最常用的同步機(jī)制  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美精品在线播放| 午夜精品久久久久久久99黑人| 日韩午夜av电影| 欧美va亚洲va国产综合| 亚洲国产另类 国产精品国产免费| 久久久久久一区| 久久福利资源站| 樱桃成人精品视频在线播放| 美玉足脚交一区二区三区图片| 久久夜色精品国产欧美乱| 亚洲欧洲偷拍精品| 亚洲欧洲日韩在线| 欧美午夜免费| 亚洲激情女人| 欧美v日韩v国产v| 欧美精品九九| 欧美亚洲尤物久久| 久久久精品国产免大香伊 | 亚洲经典一区| 欧美精品亚洲| 欧美永久精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲日本理论电影| 一区二区国产精品| 韩国精品久久久999| 亚洲国产一区二区a毛片| 欧美系列亚洲系列| 久久免费视频在线观看| 欧美va天堂| 久久精品国产亚洲一区二区| 久久亚洲一区二区| 亚洲一区二区三区色| 欧美与欧洲交xxxx免费观看 | 欧美日本一道本在线视频| 亚洲欧美精品在线观看| 久久中文字幕导航| 亚洲欧美激情精品一区二区| 久久手机精品视频| 亚洲已满18点击进入久久| 久久综合电影一区| 亚洲欧美日韩在线一区| 欧美二区乱c少妇| 久久精品日韩欧美| 亚洲欧美日韩精品在线| 久久综合亚洲社区| 国产精品毛片高清在线完整版| 久久久久久久精| 国产精品久久久久久超碰 | 欧美一区中文字幕| 欧美精品尤物在线| 欧美成ee人免费视频| 国产精品尤物| 日韩午夜激情av| 亚洲日韩欧美视频一区| 久久久久久香蕉网| 久久成年人视频| 国产精品午夜在线观看| 亚洲精品一区二区在线观看| 1024成人| 美女免费视频一区| 欧美超级免费视 在线| 国产一区二区看久久| 亚洲综合成人婷婷小说| 一区二区三区回区在观看免费视频| 久久在线精品| 欧美chengren| 亚洲黄网站在线观看| 久久久精品动漫| 久久久久久日产精品| 国产日韩精品入口| 亚洲欧美日韩天堂一区二区| 亚洲精品国产视频| 美女图片一区二区| 亚洲第一区在线观看| 亚洲国产精品99久久久久久久久| 欧美高清在线视频观看不卡| 久久久久久久久久久一区 | 麻豆国产精品va在线观看不卡| 久久久av水蜜桃| 激情久久综艺| 巨胸喷奶水www久久久免费动漫| 噜噜噜噜噜久久久久久91| 亚洲大胆美女视频| 你懂的国产精品| 亚洲欧洲精品一区二区精品久久久| 亚洲毛片在线| 国产精品理论片| 西西人体一区二区| 另类综合日韩欧美亚洲| 亚洲国产精品久久人人爱蜜臀| 牛牛精品成人免费视频| 日韩亚洲国产欧美| 欧美在线视频a| 在线观看亚洲a| 欧美日韩国产首页| 亚洲一区影音先锋| 美女日韩欧美| 亚洲天堂成人| 很黄很黄激情成人| 欧美激情国产日韩精品一区18| 日韩天堂av| 久久人人精品| 在线亚洲观看| 国产亚洲综合性久久久影院| 欧美承认网站| 亚洲欧美日韩国产精品 | 亚洲欧美日韩精品一区二区| 久久久久www| 欧美a级片网站| 亚洲综合999| 亚洲国产欧洲综合997久久| 亚洲综合导航| 91久久精品久久国产性色也91| 国产精品久久二区| 久久综合九色综合久99| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久一二三四| 亚洲欧美网站| 亚洲乱码国产乱码精品精可以看 | 欧美一区在线直播| 亚洲肉体裸体xxxx137| 久久免费视频这里只有精品| 亚洲午夜精品久久| 亚洲欧洲日产国产网站| 国产日韩一区二区三区| 欧美日韩国产精品一区二区亚洲 | 在线视频一区观看| 欧美激情久久久| 久久影院午夜论| 亚洲欧美日韩精品久久亚洲区| 亚洲精品国产精品国自产观看浪潮| 国产日韩专区| 国产精品亚发布| 欧美视频在线观看一区二区| 欧美gay视频激情| 久久在线精品| 美女日韩在线中文字幕| 久久精品亚洲热| 欧美伊久线香蕉线新在线| 亚洲色图自拍| 在线综合亚洲| 一区二区高清| 亚洲天堂激情| 男女精品视频| 午夜精品在线| 欧美一区二区三区成人| 亚洲欧美激情视频| 亚洲免费视频成人| 亚洲欧美激情视频在线观看一区二区三区| 日韩午夜在线| 一区二区欧美亚洲| 在线视频亚洲欧美| 在线综合亚洲欧美在线视频| 在线亚洲一区| 亚洲一区二区三区免费在线观看| 中文精品一区二区三区| 亚洲视频电影图片偷拍一区| 亚洲视频一区| 亚洲午夜电影在线观看| 亚洲性线免费观看视频成熟| 亚洲在线播放电影| 久久不射中文字幕| 久久综合伊人77777蜜臀| 欧美成人午夜免费视在线看片| 毛片基地黄久久久久久天堂 | 91久久一区二区| 亚洲三级免费观看| 亚洲精品免费一区二区三区| 一本色道久久88亚洲综合88| 亚洲欧美日韩在线不卡| 久久久xxx| 欧美激情区在线播放| 国产精品福利av| 国内外成人在线视频| 亚洲人www| 亚洲免费中文字幕| 麻豆精品视频在线| 亚洲精品小视频| 性欧美video另类hd性玩具| 久久亚洲综合色一区二区三区| 欧美国产日本在线| 国产伦精品一区二区三区免费| 在线观看91久久久久久| 日韩午夜三级在线| 午夜精品视频在线观看| 欧美日韩国产成人在线免费| 亚洲乱码国产乱码精品精可以看| 亚洲字幕一区二区| 蜜臀av性久久久久蜜臀aⅴ| 欧美视频成人| 亚洲福利视频二区| 亚洲资源av| 亚洲春色另类小说| 亚洲欧美成人| 欧美日韩a区| 1769国产精品| 久久精品网址| 一本色道**综合亚洲精品蜜桃冫| 久久伊人免费视频| 国产精品网站在线播放|