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
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...
Sowas gibts auf dem X86, zb loadlin lädt den Linux kernel aus dem Dos heraus :-))
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.
Das gab es schon für den C64 als Modul, nannte sich Final Cartridge oder so. Knopfdruck, schon war alles eingefroren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.