Durch meine Lektüre über Betriebssysteme (Lesen des Grundmaterials auf Wikipedia, technischen Websites usw.) habe ich erfahren, dass das Betriebssystem ein Programm ist, mit dem Programme und Anwendungen auf effiziente und sichere Weise mit der Hardware interagieren können.
Ich bin jedoch verwirrt darüber, wie das Betriebssystem den Betrieb des Computers überwacht, wenn er selbst betrieben werden muss.
Was meine ich? Nun, so wie ich mir ein Betriebssystem vorstellen würde, würde es auf einem Computer zwei CPUs geben. Eines, auf dem das Betriebssystem ständig ausgeführt wird, und eines, auf dem das Betriebssystem den Computer ausführt. Es stellt sich jedoch heraus, dass das Betriebssystem auf derselben CPU wie die anderen Prozesse ausgeführt wird. Dies ist so, als müsste ein Manager an der gleichen Produktionslinie wie seine Mitarbeiter arbeiten und die Elektrowerkzeuge nur benutzen, wenn ein anderer Mitarbeiter damit fertig ist. Er wäre kein sehr effektiver Manager, da er nicht in der Lage wäre, Befehle zu erteilen, wenn sein Mitarbeiter sogar ein wenig undiszipliniert wäre.
Wie kann es also sein, dass das Betriebssystem nur einen Teil der Zeit auf derselben CPU läuft, die von allen anderen Prozessen gemeinsam genutzt werden muss? Wie funktioniert das?
quelle
Antworten:
Moderne CPUs kennen das Betriebssystem bis zu einem gewissen Grad. Sie bieten einige "Elektrowerkzeuge" für den ersten, der sie beansprucht. In der Regel ist dies der Bootloader, der die Steuerung dann an das Betriebssystem übergibt. Man spricht normalerweise von "Kernel-Modus" vs "Benutzermodus" oder "Ring 0" vs "Ring 3" , um zwischen dem einen Prozess mit den zusätzlichen Rechten und dem anderen zu unterscheiden.
Diese "Elektrowerkzeuge" sind bestimmte Berechtigungen für die Ressourcenverwaltung: Steuern Sie den Speicher, den Zugriff auf die Hardware und wie lange Code auf Benutzerebene ohne Unterbrechung ausgeführt werden kann.
Die CPU führt das Betriebssystem mit ihren speziellen Berechtigungen aus, wenn eines der folgenden Ereignisse eintritt:
Das Betriebssystem kann also auf demselben Chip ausgeführt werden, da der Chip dafür entwickelt wurde. Es kann sich Sonderprivilegien vorbehalten. Die CPU kann alle anderen Codeteile ohne diese speziellen Berechtigungen jederzeit unterbrechen und die Steuerung an das Betriebssystem übergeben.
Einige Chips mit sehr eingeschränkter Unterstützung (z. B. ein Mikrocontroller ) unterstützen diesen speziellen privilegierten Code nicht. Diese Chips laufen normalerweise ohne Betriebssystem. Es wird nur ein großes Programm ausgeführt, das direkt auf die Hardware zugreifen kann, auf die Hardware-Interrupts reagieren muss und jederzeit auf alle Ressourcen zugreifen kann. Wenn dieses Programm einen Fehler macht, stürzt normalerweise das Ganze ab.
quelle
In ihrer primitivsten Form verlassen sich Betriebssysteme darauf, dass sich Prozesse gut verhalten und die Steuerung von Zeit zu Zeit an das Betriebssystem zurückgeben. Wenn sich ein Prozess nicht gut verhält, kann es tatsächlich vorkommen, dass das Betriebssystem einfriert.
Die meisten CPUs haben jedoch Interrupts : Ein Interrupt unterbricht den aktuellen Prozess (preemption) und übergibt die Steuerung an das Betriebssystem. Sie können festlegen, dass Interrupts in bestimmten Intervallen auftreten oder extern ausgelöst werden (z. B. durch Drücken der Reset-Taste).
Grundsätzlich wechselt die CPU zwischen dem Ausführen des Betriebssystems und dem Ausführen von Prozessen mit einer rasanten Geschwindigkeit hin und her. Weiterhin haben CPUs "Benutzermodus" und "Kernelmodus". Prozesse werden im Benutzermodus und das Betriebssystem im Kernelmodus ausgeführt. Die Ausführung im Benutzermodus verhindert, dass ein Prozess eingeschränkte Befehle (z. B. E / A) ausführt. Wenn ein Prozess auf die Festplatte schreiben möchte, muss er das Betriebssystem dazu auffordern. Das Betriebssystem wechselt in den Kernel-Modus und schreibt im Namen des Prozesses (nachdem sichergestellt wurde, dass der Prozess über die erforderlichen Berechtigungen verfügt).
quelle
poke
von der Befehlszeile aus alle Arten von Unheil anrichten können.the CPU switches back and forth between running the OS and running processes
? Was löst den Schalter aus?Sie benötigen keine zwei unterschiedlichen Prozessoren, damit der Mikroprozessor den Userspace- und den Kernel-Space-Code ausführt. Grundsätzlich funktioniert es auf diese Weise, wenn Sie Ihren Computer einschalten. Ihr BIOS lädt den Bootloader (512 KB-Code auf der Festplatte, der die Signatur des Bootloaders endet), um diesen zu rammen. Durch diesen Bootloader wird Ihr Kernel in den RAM geladen und läuft für immer, bis Sie Ihren Computer herunterfahren. Und Ihr Kernel verwaltet den Speicher und lässt nicht zu, dass Ihr Kernel-Code, der sich auf dem RAM befindet, nicht vom User-Space-Code überschrieben wird. Zu diesem Zweck gibt es Systemaufrufe, deren Userspace-Code mit diesen Systemaufrufen aufgerufen wird und die Ihren Userspace-Code zum RAM hinzufügen und mit dessen Ausführung beginnen. In Betriebssystemen wird dieses Konzept als Memory Management erforscht. Hier ist der Link, den Sie lesen können. Er ist sehr gut zum Starten https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf
quelle
Um auf anderen Antworten aufzubauen, ist es einfacher zu verstehen, wenn Sie glauben, dass der Kernel selbst kein Prozess, sondern ein Verwaltungscode ist. Jeder Benutzerprozess kann vom Benutzermodus in den Kernelmodus wechseln und Kernelcode (privilegierte Anweisungen) ausführen, indem er einen Teil des Kernelspeichers verwendet. Anschließend kann der Prozess in den Benutzermodus zurückkehren und erneut im Benutzerbereich ausgeführt werden.
quelle