Sitter här och har fastnat på en fråga, den lyder så här: Kan inte exakt hur det fungerar, men.. Nästan hur mycket minne som helst, med moderna chipset så delas minnet upp i minnesbankar om block på 2^32 bytes eller 2^64 bytes (för respektive processor), processorn kan välja vilken bank som helst av dessa minnebankar och sedan välja att komma åt minnet var som helst inom banken. Begränsingen ligger i registret som håller reda på minnesbankarna, om det är 32 bitar stort kan man ha 2^32 minnesbankar och om det är 64 bitar stort kan man givetvis ha 2^64 stycken... Det är i varje fall så man gjorde på 8086 och 286 processorerna, jag har svårt att se att man gjort annorlunda idag med tanke på bakåtkompabiliteten. I princip borde det vara fullt möjligt att få betydligt mer än så, dock inte via vanliga allokeringsenheter. Vet ni hur man kan räkna ut detta med det binära talsystemet? Nå, för att räkna ut antalet adresser som kan finnas behöver man bara räkna: Detta är en uppgift till en kurs jag går och de vill ha reda på hur mycket varje cpu kan adressera. Jag svarade som Niklas 2^32 men fick svaret att jag skulle räkna ut dt med binära talsystemet. jag har inte en aning om hur jag ska göra det. Korrekt svar är svårt att ge ut eftersom du inte vet exakt vilken processor som det handlar om, Z80 kan adressera 20 bitars minnesrymd, en 6502 kan adressera 16 bitars minnersrymd, båda är 8 bitars processorer. En 286:a kan adressera en 32 bitars minnesrymd, en P1 kan adressera 64 bitars minnesrymd. En modern 64bitars intelprocessor kan adressera en minnesrymd på 128bitar. Har inte Thomas rätt? Är det inte detta som dom vill ha fram?: jag skickar in det svart igen med en förklaring och hoppas att de godtar det. 128 64 32 16 8 4 2 1hur mycket kan cpu adressera?
Hur mycket minne (RAM + swap) i GB innebär det att datorn kan adressera för de olika
teknologierna 32 bitars samt 64 bitars processorer?
Nån som vet och kan hjälpa mig med detta?Sv: hur mycket kan cpu adressera?
Eftersom att man arbetar med virtuellt minne så måste man sära lite på begreppen.. En process som körs ser aldrig röken av varesig ram eller swap, den ser sitt virtuella minne. Det minnet adresserar den som vanligt, det virtuella minnet. Det virtuella minnet begränsas av hur många bitar som det går att adressera i processorn, dvs. 32 eller 64 bitar i det här fallet. Just windows skär dessutom bort en bit av adressrymden till t.ex. kärnan/drivrutiner etc, normalt sett 2 GB, går dock att justera ner till 1 GB om man så vill. På 64 bitar är det mycket, mycket mer.. ;)
(Ska tillägga: om man har 32-bitars hårdvara med stöd för PAE, physical address extension, dvs. några fler trådar att adressera minne med, och har mjukvara som kan tillvara ta den egenskapen så går det att använda mer minne, t.ex. sql server ska kunna använda mer minne på 32-bitars arkitektur än vad som "ska" gå)
Vill du ha väldigt exakta siffror så vet jag inte riktigt var du vänder dig, men jag skulle gissa på att wikipedia _kanske_ har något (de har mer exakt om hur alltihopa fungerar, men jag vet inte om de har några exakta siffror direkt..), eller typ msdn eller något annat kul.. :) Eller skicka en fråga till någon kernelutvecklare på ms som bloggar, han kanske får ett uppslag av din fråga å skriver om det ;)Sv: hur mycket kan cpu adressera?
Sv:hur mycket kan cpu adressera?
Genom att använda fildeskriptorer som är kopplade mot var sitt virtuellt minnesområde borde man kunna få n gånger mer virtuellt minne, där "n" är antalet möjliga fildeskriptorer per process.
I den bemärkelsen skulle man nog kunna säga att totala är extremt hög, 100-tals GB för 32-bitars, löjligt mycket för 64-bitars. Däremot är ju naturligtvis allt swapminne ett jävla aber. Inga program blir vettiga om man använder för stor del av swapminnet.Sv: hur mycket kan cpu adressera?
Sv:hur mycket kan cpu adressera?
32 bitar = 2^32 = 4294967295
64 bitar = 2^64 = 18446744073709551616
I praktiken är det som tidigare nämnt att man använder andra metoder för att utöka kapaciteten.Sv: hur mycket kan cpu adressera?
Sv:hur mycket kan cpu adressera?
Så själva frågeställningen är luddig redan från start!Sv:hur mycket kan cpu adressera?
<info>
En 32-bitars processor kan maximalt referera till 2^32 adresser, dvs 4294967295 byte
(= 4 gigabyte)
En 64-bitars processor kan maximalt referera till 2^64 adresser, dvs 18446744073709551616 byte
(= 16 exabyte)
</info>Sv: hur mycket kan cpu adressera?
Sv:hur mycket kan cpu adressera?
1 1 1 1 1 1 1 1
Ovanstående symboliserar en 8-bitas bus (en byte)
Ovanför varje bit har jag skrivit värdet på just den biten (dess vikt)
Man räknar ihop (adderar) värje bitsvärde där den aktuelle biten är en etta, vilket alla blir i detta fallet när man ska räkna ut max adressering.
För 8 bitar blir summan 255 (alltså inte 2^8 eftersom alltid den lägsta biten är 1).
Fortsätt placera ut ettor i grupper om 8 tills du har antalet bitar du vill ha (32/64).
För varje bit du sätter till åt vänster blir alltså värdet/vikten på den dubbelt så högt som föregående.
Jag antar att det är detta de menar med att räkna ut det binärt.
Kanske värt att tillägga : Detta är adressbusen, så många adresser kan adresseras, för att få reda på hur många GB det motsvarar måste man veta hur många bitar databusen innehåller.
/Martin