espenfjo Skrevet 12. juli 2004 Del Skrevet 12. juli 2004 Hvordan gjøres det når man skal bruke mer enn 4 GiB RAM på 32 bit systemer? Lenke til kommentar
timtowtdi Skrevet 12. juli 2004 Del Skrevet 12. juli 2004 Kan 32 bit systemer bruke mer enn 4GB RAM da?? Tipper (hvis det er mulig) at det i såfall er snakk om flerprosessorsystemer, hvor minne allokeres til hver cpu... timtowtdi Lenke til kommentar
Simen1 Skrevet 12. juli 2004 Del Skrevet 12. juli 2004 (endret) Hvordan gjøres det når man skal bruke mer enn 4 GiB RAM på 32 bit systemer? På både AMD og Intel-systemer så gjør man det via noe som jeg ikke husker navnet på, men jeg husker fremgangsmåten.: Man sender en kommando til chipsettet som "bytter" hvilken minneblokk som skal adresseres. Hver av disse minneblokkene er på 4GiB. Normalt har man under 4GiB og bruker dermed kun en minneblokk og trenger derfor ikke denne bytte-kommandoen. Bytte-kommandoen må støttes av både OS, chipsett og CPU for å fungere. Hele byttet tar noe tid, (jeg tipper ca 100-1000 ns). I denne perioden kan kun minnet fra den valgte minneblokka adresseres, og det kan kun adresseres av Ètt program av gangen. OS'et kjører alltid programmer i virituell modus, noe som betyr at selve programmet ikke får jobbe i "real-mode". Når OS'et skal switche mellom de ulike programmene og eget arbeid (kernel) så må det hele tiden bytte sende kommandoer for å bytte mellom hvilken minneblokk som skal adresseres. Siden OS'et switcher dette ganske ofte (ca hvert 1ms ?) så blir det en del byttinger og ting går betydelig tregere enn om det ikke trengte noen byttekommandoer. Jeg tror det er svært uvanlig (om det fins i det hele tatt) at programmer selv får bytte mellom minneblokker. Dvs. at hvert enkelt program i praksis er begrenset til maksimalt 4GB til seg selv. De 32-bit prosessorene som støtter over 4GiB er: Intel Xeon (P4-baserte i hvertfall, husker ikke om PIII-baserte også støtter det) AMD Sempron og Athlon64/Athlon64FX/Opteron når de kjører i 32-bit modus. Jeg vet ikke hvilke chipsett som støtter det, men regner med det kun er typiske server-chipsett. Jeg vet at det er en del Unix/Linux-baserte OS som støtter det, men vet ikke helt hvilke. På Windows-plattformen så er det vel Windows 2000 Server, Windows 2000 Advanced server, Windows 2000 Advanced datacenter, og Windows 2003 server som støtter over 4GiB. (Jeg er litt usikker så ikke skyt meg om jeg bommer litt her) EDIT: * Alle PentiumIII-baserte Intel-CPU'er og nyere støtter vist opp til 64GB. * Støtten kalles PSE36 (36bit Page Size Extension) Endret 12. juli 2004 av Simen1 Lenke til kommentar
espenfjo Skrevet 12. juli 2004 Forfatter Del Skrevet 12. juli 2004 Hm, alle intel prosessorer(og da sikkert også AMD) nyere enn pentium 1 støtter opptil 64GiB minne står det i en dokumentasjons tekst til em High-memory i Linux. Lenke til kommentar
ØysteinI Skrevet 12. juli 2004 Del Skrevet 12. juli 2004 OS tildeler en timeslice på rundt 10 - 20 ms. Et context-switch (bytte mellom tråder) kan jo fort ta mange hundre ns. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå