www.mikrocontroller.net

Forum: PC-Programmierung easy OS wechsel


Autor: Patrick O. (sir-patrick)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo erstmal!

Mir ist da eine Idee gekommen, als ich mich mit der IA-32 Architektur 
näher beschäftigt habe.

Könnte man ein Betriebssystem nicht einfach einfrieren und darauf hin 
ein anderes bzw. eigenes BS ohne Neustart starten, in dem man z.B. den 
Programmable Interupt Controller einfach umkonfiguriert, eigene Interupt 
Service Routinen auszuführen?

Solche paar-Byte Codes zum umkonfigurieren des PIC sollte man doch 
irgendwie ausführen können, wie zum Beispiel unter Windows oder Linux.

Ich freue mich schon mal auf eure Kommentare und Einfälle

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein Betriebssystem ist einiges mehr als nur die Interrupt Service 
Routinen...

Das Prnzip mit dem "Einfrieren" und "Starten ohne Neustert" nennt sich 
"Suspend" oder "Hibernate" oder ähnlich...

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sowas gibts auf dem X86, zb loadlin lädt den Linux kernel aus dem Dos 
heraus :-))

Autor: sohalt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
loadlin tut aber weit mehr, als den PIC umzuprogrammieren. Loadlin nutzt 
(afaik) aus, dass bei DOS alles im ring0 läuft, somit kann es einfach 
den Kernel an die gewünschte Stelle laden (ist Linux btw nicht seit 
neuem auf Wunsch relocateable?), und das EIP-Register da rein setzen.

Linux selbst setzt dann die IDT etc.. Deswegen wird auch ring0 benötigt.

Bei modernen Betriebssystemen, bei denen Usermode im ring3 läuft ist das 
ein bischen anders. Dort wird, um in den ring0 zu kommen ein syscall 
getätigt, damit der Kernel es in seinem ring0 machen kann. Mittels kexec 
kann man so auch von einem Linux-System einen beliebigen Linux oder 
Multiboot-fähigen Kernel laden.

Was also loadlin für DOS ist, ist kexec für Linux, und das ist 
garnichtmal so neu.

Das größte Problem an dem "Betriebssystem einfach einfrieren und neues 
laden" ist also der Scheduler und, wie bereits gesagt wurde, die 
Interrupts, und zwar nicht nur die IRQs.

PS: "Paar-Byte Codes zum Mmkonfigurieren des PIC" lassen ich im ring3 
eben nicht irgendwie ausführen. Dafür benötigt man Port-Zugriffe, welche 
im ring3 grundsätzlich eine General Protection Fault auslösen. Bei 
modernen Betriebssystemen wird der Prozess, der das versucht, getötet.

Autor: Jupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das gab es schon für den C64 als Modul, nannte sich Final Cartridge oder 
so. Knopfdruck, schon war alles eingefroren.

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.