Du kannst davon ausgehen, dass der Bereich zwischen 0 und multiboot_lower_mem * 1024 und zwischen 1 MB (=0x100000) bis 0x100000+multiboot_upper_mem * 1024 als RAM zur Verfügung steht.
Insbesondere hat multiboot_lower_mem maximal den Wert 640 (KB). Das heißt es gibt eine Lücke zwischen 640 KB und 1 MB, die vom BIOS, Video Speicher, etc. belegt ist, und nicht als Speicher zur Verfügung steht. Außerdem entspricht der Wert multiboot_upper_mem nicht unbedingt dem maximalen Speicherausbau deines Systems, sondern nur der Größe bis zur ersten Lücke im Speicher. Diese Lücken sind auch der Grund, warum die Speicherbereiche durch Einträge nicht direkt aufeinander folgen. Wenn du deine Speicherverwaltung anhand der Memory Map initialisierst, darfst du nur die Speicherbereiche als frei ansehen, die auch tatsächlich so definiert sind. Du darfst nicht die Lücken mitbenutzen, weil diese Bereich keinen RAM enthalten.
Übrigens: Bereiche, die als RAM zur Verfügung stehen, sind nicht unbedingt frei. Zum Beispiel ist der Speicher bereits durch deinen Kernel und die Multiboot-Informationen teilweise belegt. Diese Bereiche musst du ebenfalls berücksichtigen, wenn du die Speicherverwaltung initialisierst.