Speicher Flashcards

1
Q

CPU Register

A
  • ein schneller kleiner Speicher im Prozessorkern
  • dient der Speicherung von zwischen werten und ist die Quelle für die operationseinheiten
  • Register teilweise Funktionsspezifisch:
  • > PC programmzähler
  • > SP Stack Pointer
  • > General purpose Register
  • direkter Zugriff nur Assembler möglich
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cache Speicher

A
  • Pufferspeicher die wiederholte Zugriffe auf ein langsames hintergrundmedium beschleunigen
  • bereits gelesene Daten verbleiben im Cache und können beim nächsten zugriff schneller geholt werden
  • Nutzung des Lokalitätsprinzips
  • > zeitliche Lokalität: wiederholte Anforderung von Daten
  • > räumliche Lokalität: Anforderung von benachbarten Daten
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Adressraum

A

Für die Speicherung von Daten und programmtext wird jedem Prozess Speicherplatz (Adressraum) zur Verfügung gestellt.

  • Speicher eines Prozessors hat feste Struktur:
  • > temporärer Speicher (Stack)
  • > dynamischer Speicher (Heap)
  • > Programmspeicher (Text)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Programmspeicher

A

Umfasst gesamten programmtext des Programms

  • kann vom Programn nicht verändert werden
  • hat feste Größe
  • beim starten des Programms wird es vom Betriebssystem gefüllt
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Dynamischer Speicher (heap)

A

Umfasst die Daten des Programms die explizit angefordert wurden. Wird idR über Text Bereich gelegt

  • unterteilt sich in drei Segmente:
  • > bss: enthält alle initialisierten, nicht konstanten Speicherbereiche
  • > rodata: enthält alle Konstanten Variablen
  • > data: enthält alle uninitialisierten Speicherbereiche

-Größe kann während der Laufzeit des Programms verändert werden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Temporärer Speicher

A

Temporärer genutzter Speicherplatz wird auf einem stapelspeicher (stack) bereitgestellt

  • Größe ändert sich ständig während der Laufzeit
  • wird ganz oben im Adressraum abgelegt
  • Stack wächst von oben nach unten

-zwischen heap und Stack keine physische Grenze, so dass beide Bereiche ineinander wachsen können

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Speicherklassen

A

Jeder Variable in C hat drei Eigenschaften die mittels speicherklassen festgelegt werden

  • Lebensdauer: ab wann und wie lange eine Variable während der Ausführung eines Programms im Speicher existiert
  • Gültigkeitsbereich: für welchen Teil des Programms eine Variable sichtbar ist
  • Verbindung: inwieweit eine Variable von verschiedenen Programmteilen oder Modulen gemeinsam benutzt werden kann.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Globale Variablen

A

Werden außerhalb einer Funktion definiert

  • sind von jeder Funktion der C Datei zugreifbar
  • werden immer initialisiert : explizit mit einem Wert im programmtext. Implizit mit null beim programmstart
  • Lebensdauer über die gesamte Programmlaufzeit
  • Speicher wird auf dem Heap bereitgestellt
  • können von verschiedenen Funktionen manipuliert werden
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Lokale Variablen

A
  • innerhalb einer Funktion bzw. eines Blockes definiert
  • sind nur innerhalb des Blocks sichtbar
  • werden nicht initialisiert: Inhalt der Variable zufällig. Initialisierung muss im Programm erfolgen
  • Variable wird gelöscht wenn Block verlassen wird
  • Speicher wird auf Stack bereitgestellt
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Blockstruktur in C

A
  • Blöcke bilden in C zugehörige programmbereiche.
  • werden in geschweifte Klammern gefasst
  • Variablen am Beginn eines Blockes deklariert
  • Blöcke übernehmen Variablen aus Blöcken in denen sie stehen
  • > Variablen können sich gegenseitig überdecken
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Speicherklasse register

A
  • Variablen können in CPU Register gehalten werden
  • Daten werden nicht in den Hauptspeicher geschrieben (außer es sind keine Register frei)
  • nur Datentypen erlaubt die von CPU Register unterstützt werden
  • c erlaubt nicht die Auswahl eines spezifischen Registers
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Speicherklasse volatile

A
  • Variablen werden nach jedem Zugriff mit dem Hauptspeicher synchronisiert
  • Nutzung:
  • > bei gemeinsamen Variablen
  • > bei Zugriff auf IO-Resourcen
  • Compiler nimmt keine Optimierung bei volatile Variablen vor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Speicherklasse static

A

Lokale Variablen werden nach dem verlassen des Blocks nicht gelöscht

  • Variablen existieren solange das Programm läuft : sie behalten ihren Wert nach verlassen des Blocks
  • sind nur lokal sichtbar
  • beim programmstart mit null initialisiert
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Speicherklasse extern

A
  • globale Variablen deren Sichtbarkeit nicht mittels static eingegrenzt wurde, können mittels des Schlüsselwortes extern exportiert werden
  • Deklaration einer Variable als extern ist keine Definition der Variable
  • exportieren von Variablen:
  • > definieren der Variable in einem C Datei
  • > deklarieren der Variable als extern im zugehörigen Header
  • > Einbinden des Headers in einer anderen c Datei
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Felder (Arrays)

A

Eine Datenstruktur, die mehre Objekte zusammenfasst. Ein homogenes Feld besteht aus Objekten des selben Datentyps

  • c unterstützt nur homogene Felder
  • man unterscheidet dynamische und statische Arrays:
  • > Größe statischer arrays steht zur Compile Zeit fest
  • > dynamische arrays können zur Laufzeit verschiedene Größen haben
  • speichern Daten in einen zusammenhängenden Speicherbereich
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Eindimensionale Felder

A

Die Definition beinhaltet den Datentyp der Elemente und die Anzahl der Elemente
-> long zahl[n]

  • alle Datentypen außer void sind möglich
  • die feldlänge kann nach der Definition nicht geändert werden
17
Q

Zugriff auf Felder

A

Zugriff auf Elemente eines Feldes erfolgt über Index des Elements
-> x = zahl[2]

  • Felder beginnen immer mit dem Index 0
  • ein Feld der Größe n läuft von 0….n-1
  • Index muss eine ganze zahl sein

C bildet keine Überwachung der feldgrenzen. Negative Indexe sind auch möglich

18
Q

Mehrdimensionale Felder

A

C unterstützt die Definition durch Angabe von mehreren feldgrauen
-> int mdim[2][3];

  • zweidimensionale Felder
  • > erste Klammer : zeilenanzahl
  • > zweite Klammer : spaltenanzahl
  • werden schnell sehr groß und brauchen viel Speicherplatz