Frage Warum wurde der Ordner% Temp% erfunden?


Warum wurde der Ordner% Temp% erfunden?

Warum braucht ein Programm jemals einen temporären Ordner für Daten? Können sie nicht einfach den RAM oder irgendeinen anderen temporären Speicher benutzen?


4
2017-08-29 22:44


Ursprung


Ich bemühe mich, eine elegante Antwort darauf zu schreiben. Ich werde es jemand anderem überlassen. Denken Sie daran, wenn Sie nur 2 GB RAM haben und an einer 10 GB-Datei arbeiten? Sie möchten nicht, dass die Maschine die ganze Zeit seitenweise anzeigt, also benötigen Sie temporäre Dateien / Ordner - Keltari
@ Keltari: Es ist nicht viel Unterschied zwischen 8 GB zu / tmp Dumping und 8 GB zu einer Auslagerungsdatei, gibt es? - grawity
Die elegante Antwort ist sicherlich, darauf hinzuweisen, dass die CD ist "anderer temporärer Speicher", und ist die nächste Schicht unter RAM in einem Speicher Hierachie. - JdeBP


Antworten:


Die Verwendung von "temporären" Dateien geht auf die Zeit zurück, als die Computer MS-DOS und 640 KB physischen Speicher und kein Paging hatten. Das Spielen von Speichertetris mit Gerätetreibern und TSRs, die hoffnungslos versuchten, etwas RAM freizugeben, war eine häufige (wenn auch nicht gerade "Lieblings-") Zeit für PC-Besitzer.

Heutzutage ist% TEMP% immer noch nützlich als Aufbewahrungsort Dateien das muss nicht dauerhaft gespeichert werden. Wenn Sie beispielsweise ein Dokument von einer Website herunterladen und "Öffnen" anstelle von "Speichern" wählen, muss es noch lokal in einer Datei gespeichert werden, bevor es dem Programm übergeben wird - dies ist die einzige 100% -unterstützte Methode der Weitergabe Daten zu anderen Programmen. (Wenn es als eine Datei auf der Website präsentiert wurde, ist es einfachste um es wieder als Datei zu speichern.)

Wenn Sie eine Datei direkt aus einem Archiv heraus öffnen, wird sie ebenfalls zuerst in% TEMP% entpackt - das Programm archiver kümmert sich um die Dekomprimierung, so dass andere Programme dies nicht tun müssen. Oft können Sie sogar die Datei im Programm bearbeiten, und sie wird danach neu gepackt. (Im Vergleich, wenn das Programm hätten um die Datei selbst zu entpacken, muss sie bei jedem Speichern neu gepackt werden, auch wenn das sehr selten notwendig ist.)


9
2017-08-29 22:54





Programmierer und Power-User haben die genannten Standorte benutzt temp oder test seit Jahren, um unwichtige Dateien zu speichern, die gelöscht werden können, wenn sie mit ihnen fertig sind.

%temp% bezieht sich speziell auf die Windows Temp Folder VariableDies ist eine Benutzervariable (auf modernen Systemen ist sie standardmäßig auf %USERPROFILE%\AppData\Local\Temp). Anwendungen können in diesen Ordner schreiben, wenn sie eine temporäre Dateianforderung haben.

Das größte Beispiel dafür sind die Installateure. Viele Installationsprogramme sind einzelne Dateien und wenn Sie diese Leiste sehen, die bei großen Installationen ewig dauert, werden die Dateien normalerweise in den Ordner% temp% erweitert.

Oft schreibe ich Batch-Skripte, die einen temporären / staging-Ordner benötigen. Sie sind nur winzig, und ich benutze normalerweise immer am Ende md temp, benutze es, rd temp /s. Wenn ich ein Skript verteilte und es viele Dateien beinhaltete, wäre es sinnvoll, einen eindeutigen Namen in der Datei zu verwenden %temp% Ordner (es wäre nur ein bisschen komischer zu programmieren). Während die Mehrheit der Leute den Standardpfad nicht ändert, gibt es eine Menge Leute, oder Serverumgebungen, in denen Sie so wenig wie möglich auf der Hauptfestplatte haben wollen.

Warum nicht die Erinnerung nutzen, das gilt heute noch - es ist nicht groß genug für alles. Mein erster Laptop hatte entweder 2 MB oder 4 MB Speicher (ich vergesse), und während viele Programme winzig waren, gab es oft ein paar, die im Bereich von 5-10 MB lagen (MS Office war früher etwa 20-30 MB) die ganze Suite!).

Nun, der Durchschnitt ist viel höher (Einstiegsmaschine ist etwa 2-4 GB, und Power-User sind 8-16 GB, Power-User mit einem bisschen Geld 16 GB +), mit ein paar Ausnahmen wie Skripte könnte der Speicher wirklich viel mehr verwendet werden als heute.

Aber bis die Einstiegsmaschine in der 16-32 GB Range ist (ein paar Jahre!), Glaube ich nicht, dass wir viele Fortschritte haben werden.

%temp% ist hier noch lange zu bleiben!


3
2017-08-29 23:10



Eine andere Überlegung ist, dass Sie möglicherweise andere Prozesse in die Auslagerungsdatei schieben können, so dass das Betriebssystem am Ende lesen und auf die Festplatte schreiben muss Sowieso. - surfasb
@Surfasb Ich verstehe nicht wirklich die genaue Formulierung von dem, was du gesagt hast: / aber, (denke ich) ein guter Punkt über das Schreiben der Page-Datei, es ist jedoch nicht wirklich "direkt" verwandt %temp%also, versuche diese Antwort einfach zu halten! - William Hilsum
Es war in Bezug auf die Frage. Wenn Sie in das RAM statt in das temporäre Verzeichnis schreiben, erzwingen Sie möglicherweise, dass das Betriebssystem andere Prozesse in die Auslagerungsdatei verschiebt. Dies ist die Konsequenz der Einrichtung einer RAM-Disk für das temporäre Verzeichnis, was normalerweise nicht wünschenswert ist. - surfasb
@Surfasb +2! Ok, gut genug, danke und Entschuldigung! ... Ich muss das letzte Stück der Frage irgendwo vergessen, während ich meine Antwort geschrieben habe. Ich werde versuchen, das zu berücksichtigen. - William Hilsum
Kein Blut, kein Foul. - surfasb


Mit Software, die ich geschrieben habe, habe ich temporäre Ordner für die Verarbeitung von Flugzeugen verwendet CVR Dateien. Die Dateien sind in der Regel 512 MB groß. Während der Verarbeitung durchlaufen die Dateien eine Reihe von Formaten.

  • Format A: Ursprüngliche Eigentumsdaten.
  • Format B: Interlaced Daten.
  • Format C: Vier G711-Dateien und eine CVR-Datei mit zusätzlichen Daten.
  • Format D: Vier Wave-Dateien und die CVR-Datei.

Ich beginne mit dem Kopieren der Originaldatei in einen Temp-Ordner, in dem die gesamte Verarbeitung stattfindet.

Ich benutze eine Bibliothek, um von Format A zu Format C (automatisch über Format B) zu konvertieren. Diese Bibliothek benötigt nur einen Namen für die Eingabedatei. Er entscheidet über den Namen einer Ausgabedatei im selben Ordner. Es ist alles außerhalb meiner Kontrolle.

Ich benutze eine zweite Bibliothek, um von Format C in Format D zu konvertieren.

Das endgültige Verzeichnis, in dem die Dateien gespeichert werden, ist für den Benutzer sichtbar. Daher möchte ich nicht, dass die Dateien die Übergänge durchlaufen oder Teildateien angezeigt werden, sondern nur die endgültige Ausgabe. Ist die gesamte Verarbeitung abgeschlossen, werden die erforderlichen Dateien an ihr endgültiges Ziel verschoben und die Temp Ordner ist gelöscht.

Das Temp Ordner verbirgt alle diese Verarbeitung vom Benutzer. Alles, was sie wissen müssen, ist der Fortschrittsprozentsatz.


1
2017-08-30 00:44



Gibt es keine Möglichkeit, temporäre Ordner für Ihre Aktionen nicht zu verwenden? - Pacerier
@Parcerier, ich habe keine Möglichkeit zu verhindern, dass die Bibliothek temporäre Dateien erzeugt. Ich müsste den Bibliotheksdesigner bitten, ihre Bibliothek zu ändern, um sie meinem speziellen Fall anzupassen, und sie werden dafür weder Zeit noch Geld ausgeben. - Hand-E-Food
Die Verwendung von Dateien ist eine verantwortungsvollere Methode zur Verwaltung großer Datenmengen. Nehmen wir an, dieser Prozess wollte 750 MB Arbeitsspeicher verwenden, und ich hatte 1 GB Arbeitsspeicher. Wenn ein Benutzer entschied, während der Datenverarbeitung weitere Anwendungen auszuführen, tauschte Windows sowohl den Anwendungs- als auch den Hintergrundprozess ständig in den virtuellen Speicher aus und wieder aus, was zu einer wesentlich schlechteren Leistung beider Prozesse führte. - Hand-E-Food