Wie speichert und verarbeitet ein Computer Daten?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Farbwerte werden z. B. mit 24 Bit pro Pixel gespeichert, das sind 3 Byte. Jedes Byte repräsentiert die Intensität eines Subpixels, der bestimmte Farben hat (rot, grün, blau). Da für jeden Subpixel ein Byte an Information zur Verfügung steht, kann dieser 256 verschiedene Intensitäten annehmen, wobei 0 ganz dunkel und 255 ganz hell bedeutet.

Ein paar Beispiele:

(0, 0, 0) = schwarz
(255, 0, 0) = rot
(0, 255, 0) = grün
(0, 0, 255) = blau
(255, 255, 0) = gelb (denn rot + grün = gelb)
(0, 255, 255) = türkis (denn grün + blau = türkis)
(255, 0, 255) = violett (denn rot + blau = violett)
(255, 255, 255) = weiß

Das sind nur "vollständig gesättigte" Farben. Indem man die Farben (als "Vektor") mit einem Skalar zwischen 0 und 1 multipliziert, kann man verschiedene Helligkeiten erreichen und indem man sie addiert, kann man sie mischen. So wäre z. B. ist (127, 127, 127) ein "halb helles" Grau ("halb schwarz, halb weiß", wenn man so möchte).

Die Festplatte selbst speichert Daten in Sektoren. Ein Sektor hat dabei eine bestimmte Größe, früher meist 512 Byte, inzwischen meist 4096 Byte. Der Computer kann der Festplatte nur sagen "gib mir mal den Sektor 5609". Von Dateien hat die Festplatte selbst keine Ahnung.

Wie Dateien organisiert sind, entscheidet ein Stück Software, der Dateisystemtreiber, der Bestandteil des Betriebssystems ist. Dieser merkt sich, welche Sektoren alloziert (mit Daten befüllt) und welche noch frei sind. Wenn Du eine Datei anlegst, nimmt er so viele Sektoren, wie er benötigt, um die enthaltenen Daten abzulegen, markiert sie als belegt und erstellt dann einen Dateisystemeintrag, eine so genannte I-Node (intermediate node), die besagt, dass bestimmte Sektoren (in einer bestimmten Reihenfolge) zu einer Datei gehören. Die I-Node enthält quasi eine Liste aller Sektornummern einer Datei.

Das gesamte Dateisystem, also auch Verzeichnisse, etc., bestehen ebenfalls aus I-Nodes, die auf andere I-Nodes verweisen können. So kann ein Verzeichnis Unterverzeichnisse und schließlich Dateien enthalten. Dateien sind I-Nodes, die eine Liste von Sektoren enthalten, in denen dann schließlich die Daten liegen. Wenn Du eine Datei löscht, werden die zugehören I-Nodes verworfen und die Sektoren wieder als "frei" markiert. Der Inhalt der Sektoren bleibt bei Festplatten in der Regel so lange erhalten, bis sie vom Dateisystemtreiber "zufällig" neu alloziert und mit anderen Daten beschrieben werden. Bei SSDs gibt es ein spezielles "TRIM"- bzw. "Discard"-Kommando, das die SSD anweist, die entsprechenden Speicherseiten tatsächlich zu löschen, sodass die Seiten anschließend nur noch Nullen enthalten.

NoHumanBeing  09.01.2017, 15:15

Achja, und die Pixeldaten für den Bildschirm liegen in einem bestimmten Speicherbereich im Grafikspeicher, dem so genannten "framebuffer".

Alles, was dort drin steht, erscheint auf Deinem Bildschirm.

Die Struktur des Framebuffers ist sehr einfach. In der Regel sind einfach die Farbwerte (z. B. 24 Bit, je 8 Bit für Rotanteil, dann Grünanteil, dann Blauanteil) hintereinander gespeichert. Also 24 Bit = 3 Byte pro Pixel, erstes Byte rot, zweites Byte grün, drittes Byte blau. Und dann kommt direkt der nächste Pixel, also das vierte Byte ist dann der Rotanteil des zweiten Pixels und so weiter.

Und die Pixel fangen im oberen linken Eck des Bildschirms an, dort sitzt der erste Pixel. Der nächste Pixel ist der unmittelbar rechts daneben und so weiter, bis die Zeile zuende ist. Der Pixel, der auf den gaaanz rechts in der ersten Zeile folgt ist dann der gaaanz linke Pixel in der zweiten Zeile. Und so geht das dann, bis alle Zeilen des Monitors abgedeckt sind.

Bei einem 1920x1080 (FullHD) Bild mit 24 Bit (3 Byte) Farbtiefe ist der gesamte Framebuffer somit 1920*1080*3 = 6 220 800 Byte groß.

Und ja, die Struktur ist auf der Ebene wirklich so trivial. ;-)

In der Regel gibt es von diesem "Framebuffer" zwei oder drei, von denen man einen als "Frontbuffer" und den anderen, bzw. die anderen beiden als "Backbuffer" bezeichnet.

Der "Frontbuffer" ist das, was gerade am Bildschirm angezeigt wird. In den "Backbuffer" berechnet die CPU oder GPU das Bild, das als nächstes angezeigt werden soll. Wenn diese Berechnung fertig ist, werden die beiden Puffer "vertauscht", was einfach nur dadurch passiert, dass eine Speicheradresse in einem Register verändert wird. Die Puffer müssen dafür nicht kopiert werden. Somit erreicht man, dass immer ein "vollständig berechnetes" Bild angezeigt werden kann und der Benutzer keine "unfertigen" Bilder zu sehen bekommt, weil der Prozessor an dem Bild noch rechnen muss.

1

Es gibt verschiedene datentypen für nummern. char/byte, short, int, long long int und auchnoch signed/unsigned. Der unterschied ist die maximale länge. Nimmst du zb um die zahl 1 darzustellen unnötigerweise den datentyp unsigned int (max länge 2^(32)-1) hast du 31nullen und danach eine 1. Die nullen könnte man sich ja theoretisch sparen allerdings würde das das system durcheinander werfen. Der prozessor wird dann theoretisch sowieso falls es ein 64bit prozessor ist noch mit 32bit mehr rechnen aber es wird weniger speicher reserviert als wenn jetzt long long int als datentyp gewählt wurde.

Kieselsaeure  10.01.2017, 07:42

oh ne sr die -1 ist unnötig. vorzeichenbit wird nur bei signed benötigt

1
Kieselsaeure  10.01.2017, 07:43

zum verständnis: long long int wäre dann 64bit integer

1

Du solltest dich mit dem DualSystem und der dahinter liegenden Digitaltechnik befassen.

Dann einfach weitermachen mit logischen Gattern

https://de.wikipedia.org/wiki/Logikgatter

 und Halbaddierern 

https://de.wikipedia.org/wiki/Halbaddierer 

wenn Du die Materie begriffen hast, kannst du dir dann sehr langsam ein Bild darüber machen wie Computer arbeiten und warum der See nur voll oder leer sein kann und nichts dazwischen :)

Digitale Bildsignale für einen einzelnen Pixel sind ein langer Code aus Nullen und Einsen. Dort ist die Farbe und auch die Position gespeichert.

Kieselsaeure  10.01.2017, 07:40

was du nicht sagst da hat ja der Fragesteller mehr infos zu seiner frage gegeben

1

Puh, das was du weißt ist so gesehen richtig aber schwierig. Ich denke das zu sagen wie es ist ist einfacher.


Also: Wie du schon richtig erkannt hast ist es so, dass es im Computer nur den Zustand 1 und 0 gibt. Strom oder kein Strom. (bzw Spannung).

Jetzt ist es aber so, dass der Computer mit nur 2 Eingaben ja so gesehen nur 4 Zustände haben könnte: 00 01 10 11.

Das ist ja ein bisschen wenig, deshalb hat man folgendes gemacht: Du hast bestimmt schonmal die Begriffe Byte und Bit gehört. Ein Bit ist einer dieser Zustände, also 1 oder 0. Der Computer arbeitet aber mit Bytes, welche aus 8 Bit bestehen.

Das bedeutet: eine Eingabe im Computer ist nicht 1 oder 0 sondern 00000000 oder 11111111 oder 00110011. So gibt es dann einige mehr Möglichkeiten wie man diese 8 Zeichen mit Nullen und Einsen füllt.


(Das ganze nennt sich dann Binär. Das Bit 00000011 ist zum Beispiel umgerechnet eine 3. Diese 3 wird dann nach dem Ascii Verfahren umgesetzt und würde dann für ein Bestimmtes Zeichen stehen.)


So, da wir nun mehr Eingabemöglichkeiten haben ist die Umsetzung der Farben auch nichtmehr so schwierig, heißt es gibt einen Code aus  Einsen und Nullen, der z.B. für die Farbe Rot steht. Der PC sagt dann zuerst mit einem Code "Ich spreche jetzt das erste Pixel auf dem Bildschirm an" und dann mti einem weiteren Code "werde Rot". Und dann wird das Pixel rot.


Natürlich ist die tatsächliche Umsetzung ausgereifter und geht über dieses einfache 00000000 10101010 hinaus, aber grundlegend kann man sich das so vorstellen