mikrocontroller.net

Forum: PC-Programmierung Kann ein C-Point die MMU umgehen?


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ein C-Point die MMU umgehen?

Z.B. ein Programm bekommt einen Ph Speicherbereich von 0x200000+ (nur 
gesponnen) kann ich dann mit einen Pointer trotzdem aus diesem bereich 
raus? z.B. int* p = 0x01;

Autor: sebihepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, da jeder Pointer auch durch die MMU gejagt wird.

Nur das Betriebssystem kann auf das PageDirectory und die PageTables 
zugreiffen. Es sei denn es sperrt sich selbst aus (Ja, das ist 
theoretisch möglich). :D

Viele Grüße
Sebihepp

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max schrieb:

> Kann ein C-Point die MMU umgehen?

Ja. DOS booten und darin das Programm laufen lassen. Ohne EMM386&Co. 
Dann ist die CPU im Real Mode und die MMU inktiv.

Sowas in der Art ist allerdings der einzige Weg.

Autor: sebihepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn dich der Zugriff auf unterester Ebene interessiert schreib mal eine 
Nachricht an sebihepp@aol.com =)

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Beiträge

Das Thema kam nämlich gestern bei einen Dozenten auf. Er meinte das man 
mit einem C Programm einen ganzen Rechner (x86) zum abstürzen bringt 
wenn man einen Pointer falsch setzt. Ich meinte dann nur das eigentlich 
jedes Programm durch die MMU geschützt wird und "nur" ein Laufzeitfehler 
entsteht. Er meinte dann das dies auch richtig ist aber nicht bei 
Pointer. Ich wollte mit Ihm auch nicht Diskutieren weil ich C mehr im µC 
Bereich einsetzte und es dort keine MMU gibt (bei meinen µC). Da war ich 
mir dann echt unsicher.

Aber dank euch bin ich mir jetzt wieder sicher und kann heute die 
Diskussion anfechten :)

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei DOS und 16-Bit-Win wird keine MMU verwendet und
alle Programme sehen denselben Speicher - jedes Programm
kann per Pointer alles vermurksen.
Erst bei NT/XP/Vista/7 sind die Speicherm, den die Prozesse
sehen, per MMU gegeneinander abgeschottet.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:

> Bei DOS und 16-Bit-Win wird keine MMU verwendet

Aber nur urtümliches 16-Bit Windows im Real Mode, Version 1.x oder so, 
was damals kaum jemand einsetzte. Das bekanntere Windows 3.x verwendete 
zwar nicht das heute verbreitetere Paging als primäres Mittel der 
Speicherzugriffssteuerung, aber eine segmentierte MMU mit entsprechendem 
Zugriffsschutz wurde im 16-Bit Protected Mode durchaus verwendet.

Inwieweit in diesem Win 3.x die MMU einen effektiven Zugriffsschutz dem 
Betriebssystem gegenüber implementierte ist mir allerdings nicht 
geläufig. Die MMU legte dies zwar nahe, offen ist jedoch, inwieweit Win 
3.x dies auch nutze.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Inwieweit in diesem Win 3.x die MMU einen effektiven Zugriffsschutz...

Ja, die Win 3.* waren etwas dazwischen ("ein bißchen MMU"),
aber für die ursprüngliche Frage kann man den Zwitter auch
weglassen. Also etwas Kondom für nur etwas schwanger...
Bei DOS hat man einen Speicher für alle und der Lehrer hat recht,
bei NT bis 7 ist es anders und die MMU schlägt voll zu, indem
die Speicher der Prozesse getrennt sind. Da kann man
selbst unter Windows nicht einfach mit einem Speicherzugriff
das OS abschießen. Sollte zumindest.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.