摘要:*堆棧溢出*競(jìng)爭(zhēng)條件*死鎖讀者可在網(wǎng)上閱讀本文的第二部分,它將探討下列問題:*時(shí)序問題*可重入條件在采用多任務(wù)實(shí)時(shí)設(shè)計(jì)技術(shù)的系統(tǒng)中,以上所有問題都相當(dāng)普遍。堆棧溢出處理器使用堆棧來存儲(chǔ)臨時(shí)變量、向被調(diào)函數(shù)傳遞參數(shù)、保存線程“狀態(tài)”,等等。如果系統(tǒng)不使用虛擬內(nèi)存(換句話說,它不能將內(nèi)存頁(yè)面
* 堆棧溢出
* 競(jìng)爭(zhēng)條件
* 死鎖
讀者可在網(wǎng)上閱讀本文的第二部分,它將探討下列問題:
* 時(shí)序問題
* 可重入條件
在采用多任務(wù)實(shí)時(shí)設(shè)計(jì)技術(shù)的系統(tǒng)中,以上所有問題都相當(dāng)普遍。
堆棧溢出
處理器使用堆棧來存儲(chǔ)臨時(shí)變量、向被調(diào)函數(shù)傳遞參數(shù)、保存線程“狀態(tài)”,等等。如果系統(tǒng)不使用虛擬內(nèi)存(換句話說,它不能將內(nèi)存頁(yè)面轉(zhuǎn)移到磁盤上以釋放內(nèi)存空間供其它用途),堆棧將固定為產(chǎn)品出廠時(shí)的大小。如果由于某種原因堆棧越出了編程人員所分配的數(shù)量范圍,程序?qū)⒆兊貌淮_定。這種不穩(wěn)定可能導(dǎo)致系統(tǒng)發(fā)生嚴(yán)重故障。因此,確保系統(tǒng)在最壞情況下能夠分配到足夠的堆棧至關(guān)重要。
確保永不發(fā)生堆棧溢出的途徑就是分析代碼,確定程序在各種可能情況下的最大堆棧用量,然后檢查是否分配了足夠的堆棧。測(cè)試不大可能觸發(fā)特定的瞬時(shí)輸入組合進(jìn)而導(dǎo)致系統(tǒng)出現(xiàn)最壞情況。
堆棧深度分析的概念比較簡(jiǎn)單:
1. 為每個(gè)獨(dú)立的線程建立一棵調(diào)用樹。
通信工程師備考資料免費(fèi)領(lǐng)取
去領(lǐng)取
共收錄117.93萬(wàn)道題
已有25.02萬(wàn)小伙伴參與做題