2016-04-12 3 views
0

Ich nehme derzeit einen Betriebssystem-Kurs in der UNIX-Umgebung basiert. Im Folgenden finden Sie einige konzeptionelle Zusatzfragen zum UNIX-Puffercachesystem und zur Dateiausführung.UNIX Block Buffer Cache-Konzept

Wie Sie wissen, unterhält UNIX einen Blockpuffer-Cache im RAM. Schreibvorgänge in Blöcken, die Verzeichnisinformationen enthalten, werden jedoch sofort auf Datenträger zurückgeschrieben. Warum wird in diesem Fall die Effizienz eines Puffercaches vernachlässigt?

Ich denke, ich habe eine allgemeine Vorstellung von der Antwort hier, aber würde gerne alle Löcher ausfüllen, wenn mein Verständnis aus ist. Im Allgemeinen würde man es vorziehen, den Plattenzugriff zu vermeiden und den Puffercache durchzugehen, da dies viel schneller ist. Da das Schreiben in einen Block, der Verzeichnisinformationen enthält, trotzdem auf die Festplatte zugreifen wird, ist es jedoch redundant, den Blockcache zu haben. Zweitens: Wenn der Block für die Konsistenz eines Dateisystems kritisch ist, sollte er sofort auf die Festplatte zurückgeschrieben werden, um bei einem großen Ausfall oder Absturz einen vollständigen Dateisystemfehler zu vermeiden. Meine Frage ist, ist die richtige Idee eine Kombination dieser beiden Ideen, oder gibt es eine, die geeigneter ist?

Wenn ein Benutzer in Windows auf eine im Windows Explorer aufgelistete Datei doppelklickt, wird ein Programm ausgeführt und dieser Datei als Parameter zugewiesen. Dinge werden in UNIX anders gemacht. Listen Sie zwei verschiedene Möglichkeiten auf, wie ein Betriebssystem wissen könnte, welches Programm ausgeführt werden soll.

Nun, ich weiß, dass UNIX eine so genannte „magische Zahl“, die sich in den ersten Bytes von Dateien verwendet, was darauf hinweist, welche Art von Datei es sich handelt und wie sie damit umgehen. Daher scheint die Benennung von UNIX-Dateien mit Dateierweiterungen zu keinem anderen Zweck als der Benutzerfreundlichkeit zu dienen. Dann, wie in der Frage deutlich gesagt, haben wir die Windows-Verwendung von Dateierweiterungen, um dies zu ermöglichen. Gibt es andere Methoden, die ich vermisse, speziell in UNIX?

Danke!

Antwort

0

Ich kann Ihrer ersten Argumentation nicht folgen. "Das Schreiben in einen Block, der Verzeichnisinformationen enthält, wird unabhängig davon auf die Festplatte zugreifen." Warum sollte das so sein? Es gibt nichts besonderes an Verzeichnisinformationen (es ist nur im Zusammenhang mit Ihrem Betriebssystem nützlich). Es ist entscheidend, ja, aber der Puffer-Cache weiß nur, weil das Betriebssystem es so sagt (soweit ich weiß). Ihr zweiter Punkt trifft die Marke. Es liegt im Interesse des gesamten Systems, die Dateistruktur in Ordnung zu halten, so dass es sinnvoll ist, auf ein wenig Effizienz zu verzichten.

+0

Ich sehe nicht wirklich, wie das die Frage beantwortet. Es ist eine vage Vermutung, wie jemand, der sich durch eine Prüfung prügelt :-). Frage 1: "WARUM ist Effizienz/Cache verlassen?", Frage 2: "Nennen Sie zwei Möglichkeiten, wie ein OS wissen könnte, welches Programm ausgeführt werden soll" - um fair zu sein, beantwortet das keines dieser beiden Dinge. Wenn Sie also keine klare, eindeutige und schlüssige Antwort auf die Frage geben, reservieren Sie solche Dinge für die Kommentare. Nimm die [2-Minuten-Tour] (http://stackoverflow.com/tour), um die Lage des Landes zu erhalten, sammle Punkte und nimm einen Kommentar dazu. – clearlight