色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 實(shí)時(shí)單片機(jī)通訊網(wǎng)絡(luò)中的內(nèi)存管理

          實(shí)時(shí)單片機(jī)通訊網(wǎng)絡(luò)中的內(nèi)存管理

          作者: 時(shí)間:2009-05-13 來(lái)源:網(wǎng)絡(luò) 收藏

          2 的分配
            那么,如何利用這張表進(jìn)行分配呢?分配方法采用。用一個(gè)例子來(lái)說(shuō)明這個(gè)問(wèn)題。例如經(jīng)過(guò)若干次分配和空閑區(qū)回收后,甲站點(diǎn)的主要情況如圖3所示(卡上還有一批數(shù)據(jù)未傳入宿主機(jī))。

          本文引用地址:http://cafeforensic.com/article/173739.htm

          在這種情況下,乙站點(diǎn)申請(qǐng)分配4塊內(nèi)存,則先把地址指針定位00EDH處(第15項(xiàng)的標(biāo)志欄處),由于該項(xiàng)的標(biāo)志為free但大小不夠,故需向前查找.用該項(xiàng)的終止塊號(hào)(15)減去該項(xiàng)的塊數(shù)(1)得到數(shù)字14,故將地址指針定位到第14項(xiàng)處的標(biāo)志欄處,雖塊數(shù)大小夠但該內(nèi)存區(qū)為busy,故仍需往前找.此時(shí)用第14項(xiàng)處的終止塊號(hào)(14)減去該項(xiàng)的塊數(shù)(4)得到數(shù)字10,所以將地址指針定位到第10項(xiàng)的標(biāo)志欄處。第10項(xiàng)的塊數(shù)大于需分配的內(nèi)存塊數(shù),故可以在此處分配.分配后的的主要情況如圖4所示。

          的匯編程序中,動(dòng)態(tài)分配內(nèi)存是調(diào)用allocate子程序來(lái)完成的.具體步驟是這樣的:
            (1)先由入口參數(shù)寄存器R3和R2(存放需要申請(qǐng)的內(nèi)存長(zhǎng)度)折合成需分配的內(nèi)存塊數(shù),并將其值傳遞給變量required_size。
            (2)從末(00ED H處)自后向前找.即先把地址指針定位在00EDH處(第15項(xiàng)的標(biāo)志欄處),如果該項(xiàng)的標(biāo)志不為free或該項(xiàng)的標(biāo)志為free但該項(xiàng)的內(nèi)存塊數(shù)小于需分配的內(nèi)存塊數(shù),則用該項(xiàng)第二欄的數(shù)字(終止塊號(hào))減去該項(xiàng)第三欄的數(shù)字(塊數(shù))作為下一次向前查找的表項(xiàng)號(hào),并由此定位下一次向前查找的地址指針.就這樣一直向前查找,直到找到不小于需分配的內(nèi)存塊數(shù)或已到內(nèi)存表頭.
            (3) 如找到不少于申請(qǐng)塊數(shù)的空閑區(qū),將空閑區(qū)的低端分配給該批數(shù)據(jù)使用,相應(yīng)地修改內(nèi)存表中的相關(guān)項(xiàng),子程序返回分配成功標(biāo)志;否則,子程序返回分配不成功標(biāo)志。
          3 內(nèi)存的釋放和合并
            雖然我們成功地制定了內(nèi)存分配的算法和子程序,但是在內(nèi)存中還要處理空閑區(qū)的釋放和相鄰空閑區(qū)的合并。free_and_join子程序就是用來(lái)完成這個(gè)任務(wù)的.當(dāng)接收方(從機(jī))接收完發(fā)送方(主機(jī))發(fā)來(lái)的報(bào)文數(shù)據(jù)并將數(shù)據(jù)上傳給宿主機(jī)后,就需要在free_and_join子程序中釋放該報(bào)文數(shù)據(jù)在本機(jī)中所占的內(nèi)存(free),并且需要檢測(cè)該被釋放的內(nèi)存與其相鄰的空閑內(nèi)存是否可以合并。如能,合并之.這樣,該機(jī)如接收其它主機(jī)發(fā)來(lái)的長(zhǎng)的報(bào)文數(shù)據(jù)時(shí),可以有足夠大的連續(xù)的空閑內(nèi)存來(lái)分配;同時(shí),也保證了內(nèi)存操作的完備性.算法是這樣實(shí)現(xiàn)的:
            (1)內(nèi)存表中被釋放項(xiàng)的標(biāo)志改為free。
            (2)由于表項(xiàng)中的第二欄為終止塊號(hào)而非起始?jí)K號(hào),且在內(nèi)存表中向前查找是沿著內(nèi)存表的地址減小的方向進(jìn)行的,故需先尋找上相鄰,再尋找下相鄰.
            (3) 判斷上相鄰表項(xiàng)是否free;如果是,合并之。
            用被釋放項(xiàng)的終止塊號(hào)r_block_end (R2)減去該項(xiàng)的塊數(shù)r_block_num (R3),并將其值傳給R4,再調(diào)用block_to_address子程序來(lái)向前找上相鄰.如果該項(xiàng)處的標(biāo)志為free,則是上相鄰.取出上相鄰表項(xiàng)處的塊數(shù),加到本表項(xiàng)(被釋放項(xiàng))的塊數(shù)R3上,并寫(xiě)入本表項(xiàng);并將上相鄰表項(xiàng)處的標(biāo)志置為03H(異于busy和free即可)。
            (4) 判斷下相鄰表項(xiàng)是否free;如果是,合并之。
            把地址指針定位00ED H處(內(nèi)存表尾),從內(nèi)存表尾向前找.取出地址指針處的表項(xiàng)的終止塊號(hào)并存入R5,再取出該表項(xiàng)的塊數(shù)并存入R4.直到R5減去R4的結(jié)果等于被釋放項(xiàng)的終止塊號(hào)為止.若此時(shí)地址指針處的表項(xiàng)的標(biāo)志為free,則該表項(xiàng)是被釋放項(xiàng)的下相鄰.在下相鄰表項(xiàng)處,將該項(xiàng)的塊數(shù)加上被釋放項(xiàng)的塊數(shù)并存入;在被釋放項(xiàng)處將標(biāo)志置為03H(異于busy和free即可).
            舉一個(gè)例子能更好地表明這種的釋放和合并算法.例如將被釋放的內(nèi)存區(qū)在內(nèi)存表中是第6塊和第7塊.其上相鄰處內(nèi)存區(qū)為第3,4,5塊,且其標(biāo)志為free;其下相鄰處內(nèi)存區(qū)為第8,9,10塊,且其標(biāo)志為free;合并的過(guò)程如圖5所示。

          總之,與固定分區(qū)法相比,法在報(bào)文接收前不建立分區(qū).分區(qū)的建立是在報(bào)文接收的過(guò)程中進(jìn)行的,且其大小可隨報(bào)文長(zhǎng)度動(dòng)態(tài)改變,這就改變了法中的即使是小數(shù)據(jù)量也要占據(jù)大分區(qū)的浪費(fèi)堵塞現(xiàn)象,從而提高了內(nèi)存的利用率.另外,也提高了DCS系統(tǒng)通訊的短數(shù)據(jù)的平均傳輸速率,更適應(yīng)DCS系統(tǒng)的性要求.


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉