而在uC/OS-II 中,kernel 把連續的大塊記憶體按分區來管理。每個分區中包含有整數個大小相同的記憶體塊,如同圖 F7.1。利用這種機制,uC/OS-II 對 malloc() 和 free() 函式進行了改變,使得它們可以分配和釋放固定大小的記憶體塊。這樣一來,malloc() 和 free() 函式的執行時間也是固定的了。

如圖 F7.2,在一個系統中可以有多個記憶體分割區。這樣,使用者的應用程式就可以從不同的記憶體分割區中得到不同大小的記憶體塊。但是,特定的記憶體塊在釋放時必須重新放回它以前所屬於的記憶體分割區。顯然,採用這樣的記憶體管理演算法,上面的記憶體破碎問題就得到了解決。

沒有留言:
張貼留言