Speicherschutz vor der CPU: Wie funktioniert es?

Die Programme hören nicht auf, kontinuierlich Anforderungen an den Speicher zu stellen, da sie die Hardware nicht nur senden, um Daten zu verarbeiten, zu ändern, neue Daten zu erstellen, vorhandene zu löschen usw. Es gibt jedoch Speicherbereiche, die beim Zugriff auf ein Programm die allgemeine Funktionsweise des Systems beeinträchtigen können. Wir nennen das Speicherschutz.

Zu einem bestimmten Zeitpunkt in ihrer Entwicklung begannen CPUs, Speicherschutzsysteme zu implementieren, die die Adressierung von trennten RAM in mehrere Abschnitte. Um es zu verstehen, muss man sich nur vorstellen, dass es in einer Stadt eine Nachbarschaft zur ausschließlichen Nutzung gibt und eine Polizei, die den Zugang zu dieser Nachbarschaft für diejenigen verhindert, die sie nicht nutzen können, wobei die Bürger das Privileg haben, alle Prozesse des Betriebssystems zu nutzen .

Speicherschutz vor der CPU

Warum ist Speicherschutz notwendig?

Speicherschutz wurde in PC-CPUs erforderlich, sobald Multitasking-Umgebungen erstellt werden mussten, in denen mehrere Programme in unterschiedlichen Schichten gemeinsam auf den Speicher zugreifen konnten. In den Anfangsjahren des Computing gab es Single-Task-Programme, die gleichzeitig auch die Aufgabe der Betriebssysteme selbst wahrnahmen, insbesondere auf 8- und 16-Bit-Heimcomputern auf Basis des MOS 6502 und des Z80A.

Proteccion Memoria Guru-Meditation

Ein berühmter Fall für den Mangel an Speicherschutz in der CPU Wir haben es im klassischen Commodore Amiga, dessen Versionen, die auf dem Standard 68K basieren, aufgrund des Ausführens eines Multitasking-Betriebssystems auf einer CPU ohne Speicherschutz wie beim Apple Macintosh unter dem gleichen Prozessor.

Heutzutage verfügen alle CPUs über Speicherschutz und müssen hochkomplexe Multitasking-Betriebssysteme ausführen, bei denen die Anzahl der gleichzeitigen Prozesse bei Tausenden liegt.

Wie funktioniert der Speicherschutz?

Seitentabelle

In modernen CPUs wird der Speicherschutz von demselben Prozessor ausgeführt, um Entwicklern Kopfschmerzen zu ersparen. Jede CPU hat in einer Reihe von Registern die sogenannte Seitentabelle gespeichert, die sie darüber informiert, wie der Systemspeicher organisiert ist. Die Seitentabelle wird nicht nur verwendet, um virtuelle in physische Speicheradressen zu übersetzen, sondern auch, auf welchen Teil des Speichers Anwendungen zugreifen können und auf welchen nicht.

Wenn eine Anwendung auf einen Teil des Speichers zugreift, den sie nicht ausführen darf, generiert die CPU einen Interrupt, der das Betriebssystem steuert. Von dort hängt es davon ab, wie die Lösung auf Softwareebene implementiert wurde. Das Betriebssystem kann beschließen, das Programm und alle seine Prozesse einseitig vollständig herunterzufahren.

Es muss berücksichtigt werden, dass die Seitentabelle nicht nur die Informationen zur Speicherorganisation sowie deren privilegierte Zugriffsteile enthält, sondern auch jederzeit die RAM-Situation. Die Verwaltung erfolgt durch einen Kernel-Thread des Betriebssystems, der für die Zuweisung der verschiedenen Ressourcen zu den aktiven Programmen zuständig ist, entweder in Form der CPU-Ausführungszeit oder des Speicherzugriffs.

Veto-Programme

System binario

RAM unter der Vision aller aktuellen CPU ist in Seiten und nicht in Speicheradressen unterteilt. Welche von der Speicherverwaltungseinheit in physische Speicheradressen übersetzt werden. Aber was passiert, wenn ein Teil eines Programms einen illegalen Zugriff auf den Speicher ausführt? Wir haben den Prozess zuvor erklärt, aber um zu vermeiden, dass die CPU in eine absurde Schleife eintreten kann, wird durch ein Bit in der virtuellen Adresse markiert, dass die gespeicherte Binärdatei kein Programm, sondern Daten ist.

Wenn die CPU zu diesen virtuellen Speicheradressen zurückkehrt, geschieht dies nicht mehr wie ein Programm, sondern als ein Datensatz, den sie ignoriert. Wenn es ein Programm mit einer Sprunganweisung zu dieser Speicheradresse gibt, tritt natürlich ein Fehler auf, aber der Code, der versucht hat, auf den RAM zuzugreifen, wird nicht mehr ausgeführt.

Bit nein Ausführen

Dieses Bit auf x86-CPUs wird als No-Execute- oder NX-Bit bezeichnet. Dies ist eine sehr einfache Sicherheitsmaßnahme, mit der das Betriebssystem umgehen kann, aber es ist nicht die einzige, die ein Betriebssystem ausführen muss, um die Ausführung ungültigen Codes zu verhindern. Obwohl der Schutzmechanismus nicht immer funktioniert und es andere Mechanismen gibt, mit denen die CPU den geschützten Speicher für die Anwendungen verschleiert.

Beispielsweise weist sich das Betriebssystem für alle seine Threads ein exklusives Zugriffsbit zu. Wenn einer Anwendung ohne ihre Berechtigungen durch Ändern des Zugriffsbits Zugriff auf den geschützten RAM zugewiesen wird, setzt das Betriebssystem dieses Bit zurück, indem es den Abschnitt bearbeitet, der den Anwendungen in der Seitentabelle entspricht

Wie erhält die CPU die Seitentabelle?

BIOS

Das erste Programm, das auf einem PC ausgeführt wird, unabhängig vom Formfaktor, ist das Betriebssystem. Einige komplexere Systeme laden ein Vorschausystem, das die Hardware einschaltet und das Zeugnis getarnt an das Betriebssystem weitergibt. Dieser Prozess hängt nicht von der Hardware ab, aber jede Hardware hat eine Speicheradresse, an der sie beginnt, und von dort wandert sie in die eine oder andere Richtung durch den Speicher, je nachdem, ob es sich um eine Big Endian- oder eine Little Endian-CPU handelt.

Daher müssen in diesen Speicheradressen die Informationen zum Starten des PCs vorhanden sein, der heute das UEFI ist, in seinen Anfängen jedoch das BIOS. Welches als Eröffnungsakt für das Betriebssystem fungiert. Aber woher bekommt das Betriebssystem die RAM-Situation? Nun, dies geschieht durch die Verwendung von zwei Tabellen, die im Internet gespeichert sind Hauptplatine Chipsatz namens ACPI-Tabellen.

Chipsatz integrado

Das ACPI ist der erste Mechanismus, der für die Verwaltung der Speicherzugriffe der Peripheriegeräte und auch für die Organisation des RAM zuständig ist. Zu diesem Zweck werden zwei Tabellen an das Betriebssystem geliefert, die dieselbe Funktion haben. Diese Tabellen sind:

  • RSDT (Root System Descriptor Table).
  • XSDT (Extended Root System Descriptor Table).

Wenn das Betriebssystem 32 Bit ist, erhalten Sie den RSDT, wenn es 64 Bit ist, den XSDT. Von dort aus verfügt das Betriebssystem bereits über alles, was zum Verwalten des Speicherzugriffs mit dem Prozessor erforderlich ist.

Das Betriebssystem ist Monarch

Windows

Bei der Speicheradressierung gibt es eine Reihe von Bits, die Anwendungen nicht verwenden können und deren Zugriff vollständig gesperrt ist. In der Realität werden Anforderungen an Hardwareressourcen nicht von den Anwendungen selbst gestellt, sondern vom Betriebssystem. Daher kann keine Anwendung das Bit berühren, das den Zugriff auf geschützten Speicher ohne Erlaubnis des Betriebssystems selbst deaktiviert.

Dies führt zu einer Reihe von Problemen hinsichtlich des Speicherzugriffs in virtualisierten Systemen, was dazu führt, dass der Adressierung des virtuellen Speichers zusätzliche Bits hinzugefügt werden müssen, die der CPU eine spezielle Berechtigungsstufe für die Anwendungen anzeigen, die in einer virtuellen Maschine ausgeführt werden .

Dazu muss nicht nur die CPU mit dieser Möglichkeit ausgestattet sein, sondern auch die Art und Weise beeinflussen, wie das Betriebssystem organisiert ist. Betriebssysteme in der Cloud führen normalerweise einen Hypervisor aus, der für die Verwaltung des Zugriffs auf den RAM der verschiedenen virtuellen Maschinen verantwortlich ist.