• <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>

            martin

            thinking

            常用鏈接

            統(tǒng)計

            software

            最新評論

            Linux操作系統(tǒng)中中斷上下文中的互斥

            在Linux系統(tǒng)中,有兩種不同的上下文:進(jìn)程上下文、中斷上下文。
            在中斷中沒有進(jìn)程上下文,而具有中斷上下文,因此在中斷上下文中不能發(fā)生睡眠,也就是不能發(fā)生進(jìn)程切換。
            這就決定了在在中斷上下文中不能采用同步原語(信號量,管程、同步變量等)和長期互斥原語(這會導(dǎo)致進(jìn)程睡眠), 而只能采用短期互斥原語(例如自旋鎖)。

            曾經(jīng),中斷處理程序并不具有自己的棧。相反,它們共享所中斷進(jìn)程的內(nèi)核棧。內(nèi)核棧的大小是兩頁,具體地說,在32位體系結(jié)構(gòu)上是8KB,在64位體系結(jié)構(gòu)上是16KB.
            現(xiàn)在。中斷處理程序有了自己的棧,每個處理器一個,大小為一頁。這個棧就稱為中斷棧,盡管中斷棧的大小是原先共享棧的一半,但平均可用??臻g大得多,因為中斷處理
            程序把這一整頁占為己有。

            UP(單CPU系統(tǒng))上的中斷處理
            互斥
            如果一個中斷處理程序的代碼訪問或者更新了由非中斷的代碼(通常稱為基準(zhǔn)代碼)使用的同一數(shù)據(jù)結(jié)構(gòu),那么就會出現(xiàn)競爭條件。
            幸運(yùn)的是,得到允許的以內(nèi)核態(tài)執(zhí)行的進(jìn)程會臨時禁止中斷。因此,只要基準(zhǔn)代碼要更新一個與中斷處理程序共享的數(shù)據(jù)結(jié)構(gòu),那么就
            首先禁止中斷,執(zhí)行臨界段,然后再重新允許中斷。禁止和允許中斷的動作就實現(xiàn)了互斥。
            在采取中斷互斥時,必須使用函數(shù)顯示地把編碼寫入算法中。

            MP(多CPU系統(tǒng))上
            在MP系統(tǒng)上,中斷可以在任何處理器上出現(xiàn)。從最低限度上來說,每個進(jìn)程會接收時鐘中斷,但也可能接收I/O中斷。在MP系統(tǒng)上,例程
            SPL(禁止中斷)所提供的保護(hù)并不充分,因為它們執(zhí)行影響執(zhí)行它們的處理器上的中斷優(yōu)先級。中斷可能會在另一個處理器上出現(xiàn),如果設(shè)備驅(qū)動程序
            正在別處運(yùn)行,那么會造成一個競爭條件。因為中斷處理程序代表另一個進(jìn)入內(nèi)核的入口點。

            當(dāng)基準(zhǔn)驅(qū)動程序代碼和中斷處理程序之間共享數(shù)據(jù)結(jié)構(gòu)時,UP可以通過屏蔽中斷來防止出現(xiàn)競爭條件的技術(shù),在多線程MP內(nèi)核中還不充分。
            臨界段要在一個處理器上執(zhí)行,執(zhí)行屏蔽中斷例程只會屏蔽在那個處理器上出現(xiàn)的中斷。如果在別的處理器上出現(xiàn)中斷,那么立即就會有
            兩個處理器同時訪問、而且可能更新臨界資源。既然這些臨界段需要短期互斥,那么可以使用自旋鎖來對數(shù)據(jù)進(jìn)行保護(hù)。

            如果不考慮中斷處理程序和基準(zhǔn)代碼之間的互斥,則Linux中的中斷處理程序是無須重入的。當(dāng)一個給定的中斷處理程序正在執(zhí)行時,相應(yīng)的中斷線
            在所有處理器上都會被屏蔽掉,以防止同一中斷線上接收另一個新的中斷。通常情況下,所有的其他中斷都是打開的,所以這些不同中斷線上的其他中斷
            都能處理,但當(dāng)前中斷線總是被禁止的。由此可以看出,同一個中斷處理程序絕不會被同時調(diào)用以處理嵌套的中斷。這極大地簡化了中斷程序的編寫。

            posted on 2013-07-08 14:01 martin_yahoo 閱讀(3445) 評論(0)  編輯 收藏 引用

            久久热这里只有精品在线观看| 精品久久久久久久| 中文字幕无码av激情不卡久久| 亚洲国产精品综合久久一线| 久久这里只有精品首页| 99久久99这里只有免费的精品| 国产精品九九久久免费视频 | 72种姿势欧美久久久久大黄蕉| 精品综合久久久久久888蜜芽| 99久久国产综合精品网成人影院 | 久久综合九色综合久99| 女同久久| 国产精品VIDEOSSEX久久发布| 亚洲国产精品无码久久一区二区| 99久久亚洲综合精品网站| 久久人妻AV中文字幕| 国产女人aaa级久久久级| 伊人久久大香线蕉综合Av| 99久久精品九九亚洲精品| 亚洲日本va中文字幕久久| 久久久国产精品| 99热成人精品免费久久| 国产精品久久久久久久久| 久久精品人人槡人妻人人玩AV| 久久久久久久波多野结衣高潮 | 久久久久国产日韩精品网站| 久久99精品国产麻豆宅宅| 久久夜色精品国产欧美乱| 久久久久99这里有精品10 | 99久久99这里只有免费费精品| 中文字幕精品久久| 狠狠色丁香久久婷婷综合_中| 日韩久久久久中文字幕人妻| 国产综合免费精品久久久| 久久久国产一区二区三区| 久久精品国产色蜜蜜麻豆| 久久九九久精品国产| 人妻丰满?V无码久久不卡| 怡红院日本一道日本久久 | 国产精品久久久久影视不卡| 亚洲成色WWW久久网站|