Unusable Memory Locations/Ranges

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
rdragon

Unusable Memory Locations/Ranges

Post by rdragon »

I am trying to figure out what memory locations are "off limits" to general allocation. That is, memory such as the video buffer at 0x0B8000 , and I have also read somewhere that the BIOS has itself copied into memory at some location, and that should not be overwritten.

My first question is, what exactly is going on here, is the system memory location 0x0B8000 simply read by the video card to get the data for outputting, or is it something like memory mapped I/O ?

My second question, is there any site out there that details what other things might be allocated here and there, so that I (and others) have an accurate picture of what is happening where in memory by default, to appropriately compensate in memory management routines?
User avatar
Pype.Clicker
Member
Member
Posts: 5964
Joined: Wed Oct 18, 2006 2:31 am
Location: In a galaxy, far, far away
Contact:

Re:Unusable Memory Locations/Ranges

Post by Pype.Clicker »

in a conventionnal PC architecture, you should always consider that address range [[ 0xa0000 .. 0xfffff ]] is reserved for BIOS and memory-mapped I/O vga screen.

there's another reserved area (Bios Data Area + Interrupt Vector Table) covering 0x00000 .. 0x00500, iirc. All this is explained in details in Perica's tutorial on Bona Fide OSDEV page (see .:QuickLinkz:.)
rdragon

Re:Unusable Memory Locations/Ranges

Post by rdragon »

Ohh excellent. Excuse me for not researching it in depth prior to asking. Thank you for the pointer :)
Post Reply