Ho trovato che la memoria fisica è divisa in fila come segue (Intercalaggio della memoria):Come utilizzare la memoria contigua nel kernel di Linux?
rank0: [0-512KB] [2048KB-2560KB] [4096KB-4608KB] ...
rank1: [512KB-1024KB] [2560KB-3072KB] [4608KB-5120KB] ...
rank2: [1024KB-1536KB] [3072KB-3584KB] [5120KB-...
rank3: [1536KB-2048KB] [3584KB-4096KB] ...
kernel di Linux è sempre questi memoria interlacciata. Quindi, la memoria fisica vista dal kernel di Linux non è contigua. Correggimi se ho torto su questo.
Ho cercato codice sorgente del kernel Linux per il mio lavoro di corso.
Durante la creazione di sysfs (/ sys/devices/system/memory), il kernel linux crea le sezioni (memory0, memory1, ...) di determinate dimensioni (128 MB sul mio sistema) di queste memorie fisiche disponibili. Usando i file di stato in queste directory posso creare sezioni offline/online. (Memory Hotplug)
Quindi, la memoria fisica rappresentata da queste sezioni è dispersa. Quindi, se faccio parte della sezione offline che renderà quella memoria sparsa sta puntando a non disponibile.
Desidero rendere queste sezioni riferite alla memoria contigua. qualcosa di simile:
memory0 : 0-128 MB
memory1 : 128-256 MB
....
Così, quando faccio qualche sezione offline, la memoria fisica contigua relativa a quella sezione diventa non disponibile. Quindi, posso fare in modo che il kernel di Linux veda la memoria fisica come contigua anziché interlacciata?
Correggimi se ho torto su tutto ciò.
Grazie.
qualcuno può aiutarmi con questo? –
Qual è l'architettura del processore? Hai detto che la memoria è divisa in ranghi. In realtà questo dipende in gran parte da come funziona l'hardware di gestione della memoria del processore. – user2284570
Ci scusiamo per la risposta in ritardo. Ero impegnato con i termini medi. Mi riferivo all'architettura generale non specifica della mia macchina. Dispiace per la confusione. Ma per questo discuto, supponiamo che il sistema supporti questo interleaving, quindi c'è un modo per disabilitarlo? –