亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1768 | 回復(fù): 0
打印 上一主題 下一主題

中斷處理函數(shù)內(nèi)的休眠的簡單解釋 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-11-30 11:49 |只看該作者 |倒序?yàn)g覽
假設(shè)你有一段代碼用于休眠

int count = 0x00FFFFFF;
while(count--);

情況一.中斷處理前半段的休眠

1.內(nèi)核在此處是關(guān)中斷執(zhí)行的,所以任何的可屏蔽中斷都得不到響應(yīng).
缺頁異常??CPU一直在你的while里正常執(zhí)行,所以缺頁異常是不存在的,因?yàn)闆]有觸發(fā)的條件
除0異常??CPU一直在你的while里正常執(zhí)行,哪來的除0異常,也是沒有觸發(fā)的條件
調(diào)度??CPU一直在你的while里正常執(zhí)行,怎么能去執(zhí)行其他地址的指令而產(chǎn)生調(diào)度
想想有什么異常可以導(dǎo)致CPU重新跳轉(zhuǎn)到新的指令地址去執(zhí)行??

2.除非有一個(gè)硬件外設(shè)可以突發(fā)產(chǎn)生一個(gè)不可屏蔽中斷,并且優(yōu)先級(jí)比你正在執(zhí)行的中斷高.
假設(shè)這種情況真的產(chǎn)生了,CPU的確跳轉(zhuǎn)到這個(gè)新的中斷處理函數(shù)去執(zhí)行,但因?yàn)檫@次中斷的產(chǎn)生是在內(nèi)核中的,所以堆棧并不發(fā)生切換,使用的仍然是內(nèi)核堆棧.在這個(gè)中斷返回以后,仍然回到你的這段休眠代碼,最終等這個(gè)while循環(huán)結(jié)束以后,你的中斷返回了,才會(huì)繼續(xù)到其他地址執(zhí)行(中斷進(jìn)入前的地址)

3.如果你的休眠是while(1);那除了上述2可以得到CPU執(zhí)行外,內(nèi)存中其他所有指令都得不到執(zhí)行.內(nèi)核掛掉了.

情況二.中斷處理后半段的休眠(bh)

1.內(nèi)核在此處是開中斷執(zhí)行的,所以任何中斷和異常都可以打斷這段代碼的執(zhí)行,但執(zhí)行的情況跟上述情況一的2類似.

2.如果你的休眠是while(1);那除了所有中斷可以得到CPU執(zhí)行外,內(nèi)存中其他所有指令都得不到執(zhí)行.內(nèi)核除中斷和異常處理外都掛掉了,應(yīng)用層也掛掉了.

[ 本帖最后由 readkernel 于 2009-11-30 12:01 編輯 ]
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP