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

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

Chinaunix

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

對(duì)Linux內(nèi)核中進(jìn)程上下文和中斷上下文的理解 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-20 09:44 |只看該作者 |倒序?yàn)g覽

內(nèi)核空間和用戶空間是操作系統(tǒng)理論的基礎(chǔ)之一,即內(nèi)核功能模塊運(yùn)行在內(nèi)核空間,而應(yīng)用程序運(yùn)行在用戶空間,F(xiàn)代的CPU都具有不同的操作模式,代表不同的級(jí)別,不同的級(jí)別具有不同的功能,在較低的級(jí)別中將禁止某些操作。Linux系統(tǒng)設(shè)計(jì)時(shí)利用了這種硬件特性,使用了兩個(gè)級(jí)別,最高級(jí)別和最低級(jí)別,內(nèi)核運(yùn)行在最高級(jí)別(內(nèi)核態(tài)),這個(gè)級(jí)別可以進(jìn)行所有操作,而應(yīng)用程序運(yùn)行在較低級(jí)別(用戶態(tài)),在這個(gè)級(jí)別,處理器控制著對(duì)硬件的直接訪問以及對(duì)內(nèi)存的非授權(quán)訪問。內(nèi)核態(tài)和用戶態(tài)有自己的內(nèi)存映射,即自己的地址空間。

正是有了不同運(yùn)行狀態(tài)的劃分,才有了上下文的概念。用戶空間的應(yīng)用程序,如果想要請(qǐng)求系統(tǒng)服務(wù),比如操作一個(gè)物理設(shè)備,或者映射一段設(shè)備空間的地址到用戶空間,就必須通過系統(tǒng)調(diào)用來(操作系統(tǒng)提供給用戶空間的接口函數(shù))實(shí)現(xiàn)。如下圖所示:

通過系統(tǒng)調(diào)用,用戶空間的應(yīng)用程序就會(huì)進(jìn)入內(nèi)核空間,由內(nèi)核代表該進(jìn)程運(yùn)行于內(nèi)核空間,這就涉及到上下文的切換,用戶空間和內(nèi)核空間具有不同的地址映射,通用或?qū)S玫募拇嫫鹘M,而用戶空間的進(jìn)程要傳遞很多變量、參數(shù)給內(nèi)核,內(nèi)核也要保存用戶進(jìn)程的一些寄存器、變量等,以便系統(tǒng)調(diào)用結(jié)束后回到用戶空間繼續(xù)執(zhí)行,所謂的進(jìn)程上下文,就是一個(gè)進(jìn)程在執(zhí)行的時(shí)候,CPU的所有寄存器中的值、進(jìn)程的狀態(tài)以及堆棧中的內(nèi)容,當(dāng)內(nèi)核需要切換到另一個(gè)進(jìn)程時(shí),它需要保存當(dāng)前進(jìn)程的所有狀態(tài),即保存當(dāng)前進(jìn)程的進(jìn)程上下文,以便再次執(zhí)行該進(jìn)程時(shí),能夠恢復(fù)切換時(shí)的狀態(tài),繼續(xù)執(zhí)行。

同理,硬件通過觸發(fā)信號(hào),導(dǎo)致內(nèi)核調(diào)用中斷處理程序,進(jìn)入內(nèi)核空間。這個(gè)過程中,硬件的一些變量和參數(shù)也要傳遞給內(nèi)核,內(nèi)核通過這些參數(shù)進(jìn)行中斷處理,中斷上下文就可以理解為硬件傳遞過來的這些參數(shù)和內(nèi)核需要保存的一些環(huán)境,主要是被中斷的進(jìn)程的環(huán)境。

Linux內(nèi)核工作在進(jìn)程上下文或者中斷上下文。提供系統(tǒng)調(diào)用服務(wù)的內(nèi)核代碼代表發(fā)起系統(tǒng)調(diào)用的應(yīng)用程序運(yùn)行在進(jìn)程上下文;另一方面,中斷處理程序,異步運(yùn)行在中斷上下文。中斷上下文和特定進(jìn)程無關(guān)。

運(yùn)行在進(jìn)程上下文的內(nèi)核代碼是可以被搶占的(Linux2.6支持搶占)。但是一個(gè)中斷上下文,通常都會(huì)始終占有CPU(當(dāng)然中斷可以嵌套,但我們一般不這樣做),不可以被打斷。正因?yàn)槿绱耍\(yùn)行在中斷上下文的代碼就要受一些限制,不能做下面的事情:

1、睡眠或者放棄CPU。

      這樣做的后果是災(zāi)難性的,因?yàn)閮?nèi)核在進(jìn)入中斷之前會(huì)關(guān)閉進(jìn)程調(diào)度,一旦睡眠或者放棄CPU,這時(shí)內(nèi)核無法調(diào)度別的進(jìn)程來執(zhí)行,系統(tǒng)就會(huì)死掉

2、嘗試獲得信號(hào)量

      如果獲得不到信號(hào)量,代碼就會(huì)睡眠,會(huì)產(chǎn)生和上面相同的情況

3、執(zhí)行耗時(shí)的任務(wù)

      中斷處理應(yīng)該盡可能快,因?yàn)閮?nèi)核要響應(yīng)大量服務(wù)和請(qǐng)求,中斷上下文占用CPU時(shí)間太長(zhǎng)會(huì)嚴(yán)重影響系統(tǒng)功能。

4、訪問用戶空間的虛擬地址

      因?yàn)橹袛嗌舷挛氖呛吞囟ㄟM(jìn)程無關(guān)的,它是內(nèi)核代表硬件運(yùn)行在內(nèi)核空間,所以在終端上下文無法訪問用戶空間的虛擬地址

您需要登錄后才可以回帖 登錄 | 注冊(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ū)
中國(guó)互聯(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