■加減サイズブロック
獲得と解放を繰り返すうちにメモリの管理が細分化されすぎてしまうということをフラグメンテーションと呼びます。
そんな可変で領域を払いだした領域はリンクリストで繋がっているわけですがもちろん空き領域を検索して再利用するために必要な処理です。
検索処理は目的のものが見つかるまで繰り返し調べるという作業で見つかるまでどのくらいの時間がかかるか保証できません。
この時間保証ができない点がポイントです。
OSにリアルタイム性が求められ「特定の処理が必ず一定時間でおわること」が要求された場合、このような管理は致命的です。
処理に時間がかかること自体も問題なのですが、どのくらいの時間がかかるのかよそくできないことがリアルタイム性という意味で大きな問題です。
リアルタイム性でなくても短い時間で処理したいという場合やはり検索処理は適切でないです。
■固定サイズブロック
メモリ利用効率は悪くなります。
たとえば16バイトを10個、128バイトを5個、1024バイトを3個の固定サイズブロックを作成したとします。
129バイトの領域がほしいと申請した場合、1024バイトが割り当てられるので1000バイト弱無駄になります。
検索がないというのが一番のメリットです。
リンクリストをサイズごとに、さらに、メモリ獲得領域とメモリ未獲得領域のそれぞれを管理すればよいからです。
そのため必要なサイズのリンクリストの先頭を取得すればよいわけですから、検索はありません。
いつ終了するかわからないということもないしリアルタイム性を確保できるし高速な処理にも向いています。
それなので把握できるかわからないのですが、あらかじめそのOSがサポートするメモリブロックの大きさを把握しておいてアプリケーションとしては設計に望んだほうがシステムを無駄に使わないことにつながるのかなと思います。OSの勉強する必要もここいらへんにあると思います。
獲得と解放を繰り返すうちにメモリの管理が細分化されすぎてしまうということをフラグメンテーションと呼びます。
そんな可変で領域を払いだした領域はリンクリストで繋がっているわけですがもちろん空き領域を検索して再利用するために必要な処理です。
検索処理は目的のものが見つかるまで繰り返し調べるという作業で見つかるまでどのくらいの時間がかかるか保証できません。
この時間保証ができない点がポイントです。
OSにリアルタイム性が求められ「特定の処理が必ず一定時間でおわること」が要求された場合、このような管理は致命的です。
処理に時間がかかること自体も問題なのですが、どのくらいの時間がかかるのかよそくできないことがリアルタイム性という意味で大きな問題です。
リアルタイム性でなくても短い時間で処理したいという場合やはり検索処理は適切でないです。
■固定サイズブロック
メモリ利用効率は悪くなります。
たとえば16バイトを10個、128バイトを5個、1024バイトを3個の固定サイズブロックを作成したとします。
129バイトの領域がほしいと申請した場合、1024バイトが割り当てられるので1000バイト弱無駄になります。
検索がないというのが一番のメリットです。
リンクリストをサイズごとに、さらに、メモリ獲得領域とメモリ未獲得領域のそれぞれを管理すればよいからです。
そのため必要なサイズのリンクリストの先頭を取得すればよいわけですから、検索はありません。
いつ終了するかわからないということもないしリアルタイム性を確保できるし高速な処理にも向いています。
それなので把握できるかわからないのですが、あらかじめそのOSがサポートするメモリブロックの大きさを把握しておいてアプリケーションとしては設計に望んだほうがシステムを無駄に使わないことにつながるのかなと思います。OSの勉強する必要もここいらへんにあると思います。