[OSy] Adresy I/O zarizeni

Martin Decky decky at d3s.mff.cuni.cz
Wed Nov 14 16:56:33 CET 2012


> Další variantou tedy bylo
> vytvořit paměti dvě a mezi ně vsunout zařízení. Otázkou je, zda je to
> rozumné a jak na to vůbec zareaguje msim?

MSIM urcite vice (neprekryvajicich se) oblasti fyzicke pameti podporuje. 
Pokud hledate inspiraci na realnem hardwaru, tak si treba muzete 
prohlednout mapu fyzicke pameti, kterou poskytuje na PC BIOS (nebo UEFI) 
jadru operacniho systemu. Ta mapa muze vypadat napriklad takto (vypis 
kernelu Linuxu):

BIOS-e820: [mem 0x0000000000000000-0x000000000009e3ff] usable
BIOS-e820: [mem 0x000000000009e400-0x00000000000fffff] reserved
BIOS-e820: [mem 0x0000000000100000-0x000000007f930fff] usable
BIOS-e820: [mem 0x000000007f931000-0x000000007f9cefff] ACPI NVS
BIOS-e820: [mem 0x000000007f9cf000-0x000000007fa41fff] usable
BIOS-e820: [mem 0x000000007fa42000-0x000000007fa99fff] reserved
BIOS-e820: [mem 0x000000007fa9a000-0x000000007fad5fff] usable
BIOS-e820: [mem 0x000000007fad6000-0x000000007fb19fff] ACPI NVS
BIOS-e820: [mem 0x000000007fb1a000-0x000000007fb2bfff] usable
BIOS-e820: [mem 0x000000007fb2c000-0x000000007fb39fff] ACPI data
BIOS-e820: [mem 0x000000007fb3a000-0x000000007fbfffff] usable
BIOS-e820: [mem 0x00000000ffc00000-0x00000000ffc0bfff] reserved

Jak vidite, i tady je fyzicka pamet rozdelena vyhrazenymi bloky adres 
(kde jsou typicky datove oblasti firmwaru, ale mohou to byt i I/O 
oblasti) na vice nesouvislych bloku (v tomto pripade ma stroj dohromady 
2 GB fyzicke pameti).

Zacatky a delky bloku jsou rozumne zarovnane. Ve Vasem pripade si 
definujete rozhrani mezi hardwarem, firmwarem a operacnim systemem sami, 
takze pokud si napriklad stanovite (a zdokumentujete), ze vyuzitelne 
bloky fyzicke pameti jsou zarovnane na megabajty a jejich velikost je 
take nasobkem megabajtu, melo by vse fungovat rozumne.


M.D.




More information about the NSWI004 mailing list