Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů k článku
Programujeme v jazyce Assembler v Linuxu: Úvod

Atom
Atom (neregistrovaný)
1. 7. 2004 10:05

Jak je to s tím stránkováním?

Opravdu je v paměti vždy jen jedna stránka programu? Co když je smyčka na hranici stránek, tak se pořád střídavě nahrávají z disku ty dvě stránky, které ji obsahují? To snad ne... Proč je program tedy zaváděn do 128MB, když je v paměti vždy jen jedna stránka (4kB). Nemyslí se tím stránkováním spíš něco jiného?
Proč je k adrese 0xBFFFFFFF připsáno "hranice 4 GB", když 4GB=0xffffffff?
Nemá v tom autor trochu hokej?

Michal Ludvig
Michal Ludvig (neregistrovaný)
1. 7. 2004 11:34

Re: Jak je to s tím stránkováním?

1) autor v tom evidentne drobatko hokej ma.

2) stranek programu je v pameti tolik kolik je treba a kolik se vejde. Pokud uz nektere nejsou treba nebo je nutne uvolnit misto, tak jsou dve moznosti: a) kdyz se jedna o kod, tak se zahodi, protoze se v pripade potreby muze opet dohrat z binarky na disku. b) pokud se jedna o data, odlozi se do swapu.

3) horni hranici adresniho prostoru zabira kernel. Neni sice pristupny pro cteni z userspace, ale je tam a zabira misto.

4) co se tyka adresy 0xBFFF... tak tam obvykle zacina stack, neboli zasobnik.

hkmaly
hkmaly (neregistrovaný)
1. 7. 2004 18:16

Re: Jak je to s tím stránkováním?

1) Nerekl bych drobatko. Na druhou stranu neni jediny.

2) Stranky programu se nahravaji, kdyz jsou potreba (je tedy pravda ze nemusi byt nahrane vsechny). Kdyz globalne dojde pamet, coz se casto nestane po mnoho behu programu, tak se nejaka stranka nejakeho programu odmapuje a odswapuje nebo zahodi. (Podrobny algoritmus je dost slozity).

3) Spravne. Presneji, kernel zabira misto od 0xC0000000 do 0xFFFFFFFF ve standartni konfiguraci kernelu.

4) Zasobnik sice zacina na 0xBFFFFFFF, ale jak je na Intelu zvykem roste DOLU. Takze treba pokud pouzivas 12KB zasobniku, je zasobnik od 0xBFFFFFFF do 0xBFFFD000.

5) Kde vzal autor 128MB netusim.

uživatel si přál zůstat v anonymitě
30. 7. 2004 18:18

Stránkování a kernel

Na zacatku sa z programu nahra do pameti jenom jedna stranka. Kdyz jsou potreba dalsi stranky, dohrajou sa (eventualne se neco z pameti vyhodi aby se udelalo misto). Cili na zacatku tesne pred spustenim programu je v pamati opravdu jenom jedna stranka z celeho programu (ostatni se prihrajou pozdeji).

Jeste k tomu kernelu: kernel v adresnim prostoru procesu muze zabirat az 2 GB (zalezi na konfiguraci jadra) ale u x86 (teoreticky) jadro nemusi zabirat nic (nevim vsak presne, jak je to resene, patrne pri teto konfiguraci volani jadra zpusobi prepnuti procesu na nejakej "kernel process", ktery pozadavek obslouzi) nebo jenom par MB (kod + datasegment jadra jsou v adresnim prostoru procesu, ostatni datove struktury uz ne).

hkmaly
hkmaly (neregistrovaný)
1. 7. 2004 18:23

Re: Jak je to s tím stránkováním?

Jeste bych dodal ze 0xBFFFFFFF je pochopitelne hranice 3 GB.

Zasílat nově přidané příspěvky e-mailem