1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      內(nèi)核棧的使用

      更新時間: 2008-08-27 14:05:38來源: 粵嵌教育瀏覽量:1403

        今天和一個朋友聊天,朋友說在編寫驅(qū)動時遇到一個怪異的問題。他在內(nèi)核中使用了一個深度函數(shù)調(diào)用(多層嵌套的函數(shù)),但沒有實現(xiàn)預(yù)定的效果,但如果把嵌套去掉,函數(shù)就沒問題了。當時我也沒有多想,就回答可能是編譯器的問題?;貋砗箢^腦中又浮現(xiàn)出這個問題,突然想到內(nèi)核棧,覺得這個問題的原因應(yīng)該出在內(nèi)核棧上。下面簡要介紹下內(nèi)核的知識。

        用戶空間運行的程序可以從用戶空間的棧上分配大量的空間來存放變量或數(shù)組、大的結(jié)構(gòu)體。之所以可以這么做,是因為用戶空間棧本身比較大,而且還能動態(tài)增長。進程的內(nèi)核棧即不大也不能動態(tài)增長;它在32位機上的內(nèi)核棧為8KB,而64位機是16KB。

        每個進程都有自己的內(nèi)核棧。進程在內(nèi)核執(zhí)行期間的每個調(diào)用鏈必須放在自己的內(nèi)核棧上。中斷處理程序也使用配它們打斷的進程堆棧。這就意味著,在惡劣的情況下,8KB的內(nèi)核??赡軙欢鄠€函數(shù)的嵌套調(diào)用鏈和幾個中斷程序來共享。呵呵,顯然深度的嵌套會導(dǎo)致溢出了。

        節(jié)省內(nèi)核棧的方法有:減少局部變量、大型數(shù)組和結(jié)構(gòu)體、嵌套調(diào)用鏈。

      免費預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲综合天天夜夜久久 | 亚洲成A∨人片在线观看不卡 | 亚州中文精品有码视频在线 | 久久久久久91香蕉国产 | 五月天婷婷在线看 | 一本久久a久久免精不卡品 日韩中文字幕第一页 |