Ich weiß nicht, ob ich darauf jetzt noch was antworten soll ...
Wenn ich 2^16 Byte schreibe, dann meine ich auch 2^16 Byte
8 Bit sind ein Byte
Ein Byte ist der kleinste addressierbare Bereich.
Um einen Bereich zu definieren, benötigt man eine Speicheradresse.
Kaeru möchte diese gern mit einem 32Bit-Pointer ansprechen.
Damit kann er maximal 2^32 Byte Speicher ansprechen.
Das entspricht den 4 GB.
Wenn ich aber keine 32Bit Pointer nehme. Sondern mir ein DDR RAM anschaue, dann werde ich feststellen, dass diese zum Beispiel bei einer 20 Bit Adressleitung ... Rechenbeispiel:
In einer Matrix angesprochen werden. Mit erst den X-Werten, dann den Y-Werden der Matrix wie bei einem zweidimensionalen Array.
Über diese Adressleitung kommen erst die X-Werte, anschließend die Y-Werte.
Ich habe also einen maximalen adressiebaren Bereich von.
2^20 = 1048576 Werte für X
2^20 = 1048576 Werte für Y
1048576 * 1048576 in der Matrix = 1099511627776
bzw.
2^20 * 2^20 = 2^40
Da wir pro Zelle der Matrix ein Byte Speicher ansprechen wollen.
Also mal Byte. (bzw. 8 Bit)
2^40 Byte Speicher ~ 1 TByte
Der Prozessor bezieht seine eigentlichen Daten ja sowieso aus seinem Cache, der wensentlich geringer ist. Dieser Cache wird mit Daten aus dem Speicher gefüllt.
Die Aufgabe des Betriebssystem besteht nun darin, den Speicher zu verwalten. Das geschieht mit Pages, Speicherseiten.
Da nicht der gesamte mögliche Speicher auch wirklich physisch vorhanden sein muss. Zum Beispiel bei verwendeten 512 MB, aber nur 256 RAM. Dann sorgt das Betriebssystem dafür, dass die Festplatte als zusätzlicher "Arbeitspeicher" benutzt werden kann.
