| Zeile 22: | Zeile 22: | ||
== Buddy-Speicherverwaltung == | == Buddy-Speicherverwaltung == | ||
| − | Die Buddy-Speicherverwaltung ist sehr einfach zu implementieren: der freie Speicher wird zu Beginn in Blöcke der | + | Die Buddy-Speicherverwaltung ist sehr einfach zu implementieren: der freie Speicher wird zu Beginn in Blöcke der Größe 2<sup>n</sup> aufgeteilt.<br> |
| − | Bei einer Anfrage nach Speicher wird die angeforderte Größe auf die nächste Zweierpotenz 2<sup>n</sup>aufgerundet. Ist kein Block dieser Größe vorhanden, wird nach einem Block der Größe 2<sup>n+1</sup> gesucht, der dann halbiert wird | + | Bei einer Anfrage nach Speicher wird die angeforderte Größe auf die nächste Zweierpotenz 2<sup>n</sup>aufgerundet. Ist kein Block dieser Größe vorhanden, wird nach einem Block der Größe 2<sup>n+1</sup> gesucht, der dann halbiert wird; wenn kein Block der Größe 2<sup>n+1</sup> vorhanden ist, wird nach 2<sup>n+2</sup> gesucht, usw.<br> |
| − | Bei | + | Bei der Freigabe eines Blocks wird geprüft, ob er direkt mit einem freien Block gleicher Größe benachbart ist, mit welchem er dann zu einem Block von 2<sup>n+1</sup> Bytes zusammen gefügt werden kann.<br> |
| − | Nachteile sind u.U. | + | Nachteile sind u.U. eine große Platzverschwendung, bspw. wenn die angeforderte Größe 2<sup>n+1</sup>+1 beträgt, und eine mögliche starke Fragmentierung des Speichers. |
== Andere Implementierung portieren == | == Andere Implementierung portieren == | ||