2016-04-30 10 views
0

Angenommen, wir haben zwei Anwendungen geöffnet, A und B. B verwendet den Aufruf der lokalen Umgebung, um dem Benutzer eine Benachrichtigung anzuzeigen, z. B. displayNotification("Hello."). Das System zeigt jedoch im Titel "Anwendung B sagt" und dann den gewünschten Text an. Wie kennen Betriebssysteme den Namen der Anwendung, die die Funktion aufgerufen hat? Wie gehen sie damit um?Woher wissen Betriebssysteme, welcher Prozess eine Funktion aufruft?

Ein anderes Beispiel ist Multitasking. Nehmen wir an, beide Anwendungen entscheiden, einen Timer mit der gleichen Intervallzeit zu starten. Wir möchten jedoch das Intervall der Anwendung, die nicht im Vordergrund steht, anhalten, um die Ressourcen des Geräts zu speichern, und es nur fortsetzen, wenn die Anwendung wieder in den Vordergrund gebracht wird. Wie wird dieser Fall gehandhabt?

Ich realisiere, dass diese Fragen um eine gute Lektüre bitten könnten, also könnte mich jemand auf ein gutes Buch zu diesem Thema hinweisen? Vielen Dank.

Antwort

1

Das Betriebssystem ist für alles zuständig. Wenn eine App im Vordergrund ausgeführt wird, liegt das daran, dass das Betriebssystem es angewiesen hat. Es weiß also, was vor sich geht. Auf modernen CPU-Hardware läuft das Betriebssystem in einem niedrigeren Ring als andere Prozesse, so die CPU gibt es die Möglichkeit, anderen Code zu unterbrechen und andere Dinge zu tun.

Intern speichert das Betriebssystem Multitasking mit Strukturen, die als Prozesssteuerungsblöcke bezeichnet werden. Sie verfolgen Dinge wie den Prozessnamen, Prozess-ID, Speicherzuweisung, Timer und so weiter. PCB sind wie große Stücke von Scratch-Papier, wo das OS alles aufzeichnet, was es über einen Prozess wissen muss.

Interval Timer werden normalerweise vom Betriebssystem selbst verwaltet. Wenn das Betriebssystem die Timer eines Prozesses pausieren möchte, sucht es in seinem Prozesssteuerungsblock nach den zugewiesenen Timern und pausiert sie selbst.

Wenn Sie möchten, dass ein Buch mehr über Betriebssysteme erfahren, empfehle ich, eine ältere Kopie von Silverschatz, Gagne und Galvins Betriebssystemen Konzepte ("The Dinosaur Book") zu jagen. Die neuen Editionen umfassen komplexere moderne Betriebssysteme und kosten, da es ein Lehrbuch ist, eine Menge Geld. Tannenbaums Moderne Betriebssysteme wird ebenfalls sehr empfohlen.

+0

Hallo Dave, vielen Dank dafür! – lmenus

+1

Hallo Dave, ich kam hierher, um dir noch einmal für deine Antwort zu danken! Das Buch, das Sie empfohlen haben, beantwortet perfekt alle Fragen, die ich über OS hatte. Nicht nur das, es füllt bequem andere Lücken und beantwortet meine Fragen zum Thema Computer, die nichts mit OS zu tun haben, was ich gar nicht erwartet hatte! Plus, es ist gut geschrieben, was selten ist, da nicht viele Leute so gut schreiben können, also hält es mich interessiert weiter zu lesen. Ich schulde dir dafür! Wenn Sie jemals eine Hilfe benötigen, bin ich wahrscheinlich überall online unter dem gleichen Griff und Namen, so zögern Sie nicht, Kontakt aufzunehmen und ich werde mein Bestes tun – lmenus

0

Wie kennen Betriebssysteme den Namen der Anwendung, die die Funktion aufgerufen hat? Wie gehen sie damit um?

Dies ist technisch nicht die Funktion des Betriebssystems (wenn wir das Betriebssystem als Kernel betrachten). Es ist die grafische Benutzeroberfläche (X, UIS, Windoze usw.), die den Namen der Anwendung kennt. Normalerweise gibt es eine Initialisierungsfunktion der GUI, die den Anwendungsnamen oder Ähnliches angibt.

Nehmen wir an, beide Anwendungen entscheiden, einen Timer mit der gleichen Intervallzeit zu starten. Wir möchten jedoch das Intervall der Anwendung, die nicht im Vordergrund steht, anhalten, um die Ressourcen des Geräts zu speichern, und es nur fortsetzen, wenn die Anwendung wieder in den Vordergrund gebracht wird. Wie wird dieser Fall gehandhabt?

Betriebssystem-Timer arbeiten im Hintergrund. Wenn Sie den Timer für eine Hintergrundanwendung pausieren wollten, würden Sie das programmatisch tun. Die Anwendung müsste einen eigenen Zähler haben, und Sie würden einen Timer einstellen, der in jeder Sekunde abläuft. Wenn der Timer ausgeschaltet wird, erhöhen Sie einen Zähler und setzen einen neuen Timer. Wenn der Timer im Hintergrund deaktiviert wird, legen Sie keinen neuen Timer fest.Wenn die Anwendung benachrichtigt wird, dass sie sich im Vordergrund befindet, wird ein neuer Zeitgeber festgelegt.

Wenn Sie weitere Informationen finden wollte, Sie an der Benutzeroberfläche Dokumentation suchen bräuchten für welches System Sie sich interessieren.

+0

Hallo, danke für die Antwort! Um ehrlich zu sein, wäre ich eher neugierig auf die Implementierung meines eigenen Betriebssystems. Das bedeutet nicht, dass ich versuche, einen zu erstellen, aber wenn ich es versuchen würde, wollte ich wissen, was die Logik für den Aufbau eines solch robusten Systems ist. Vielen Dank noch mal – lmenus

Verwandte Themen