linux - Understanding how bootmem works -


i have been studying os concepts , decided in how these stuff implemented in linux. having problem understanding thing in relation memory management during boot process before page_allocator turned on, more precisely how bootmem works. not need exact workings of it, understanding how things are/can solved.

so obviously, bootmem cannot use dynamic memory, meaning size has must known before runtime, appropriate steps can taken, i.e. maximum size of bitmap must known in advance. understand, solved mapping enough memory during kernel initialization, if architecture changes, change size of mapped memory. obviously, there lot more going on, guess got general idea? however, makes no sense me numa architecture. everywhere read, says pg_data_t created each memory node. pg_data put list(how can know size of list? or size fixed specific arch?) , each node, bitmap allocated. so, basically, sounds can create undefined number of these pg_data, each of has memory bitmap of arbitrary size. how? missing?

edit: sorry not including reference. here bootmem code, can found in mm/bootmem.c: http://lxr.free-electrons.com/source/mm/bootmem.c

it architecture-dependent. on x86 architecture, on in boot process kernel issue one bios call - 0xe820 function of trap @ interrupt vector 0x15. returns memory map kernel can use build it's memory tables, including holes non-memory (pci or isa) devices, etc. bootloaders (before kernel) same.

see: detecting memory


Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -