Câu hỏi Tại sao thư mục% Temp% được phát minh?


Tại sao thư mục% Temp% được phát minh?

Tại sao bất kỳ chương trình nào cần phải có một thư mục tạm thời cho dữ liệu? Họ có thể không chỉ sử dụng RAM hoặc bất kỳ lưu trữ tạm thời nào khác không?


4
2017-08-29 22:44


gốc


Im đấu tranh để viết một câu trả lời thanh lịch cho điều này. Tôi sẽ để người khác làm điều đó. Hãy suy nghĩ về nó theo cách này, nếu bạn chỉ có 2GB RAM và bạn đang làm việc trên một tập tin 10GB? Bạn không muốn máy trang toàn bộ thời gian, vì vậy bạn cần các tệp / thư mục tạm thời - Keltari
@ Keltari: Không có nhiều sự khác biệt giữa bán phá giá 8 GB đến / tmp và bán 8 GB cho một tệp trang, có phải không? - grawity
Câu trả lời thanh lịch, chắc chắn, là chỉ ra rằng đĩa Là "lưu trữ tạm thời khác" và là lớp tiếp theo bên dưới RAM trong bộ nhớ hierachy. - JdeBP


Các câu trả lời:


Việc sử dụng các tệp "tạm thời" quay trở lại thời gian khi các máy tính chạy MS-DOS và có bộ nhớ vật lý 640 kB và không có phân trang. Chơi bộ nhớ Tetris với trình điều khiển thiết bị và TSRs, vô vọng cố gắng giải phóng một số RAM, là một thời gian qua (mặc dù không chính xác "yêu thích") cho các chủ sở hữu máy tính.

Những ngày này,% TEMP% vẫn hữu ích như một nơi để giữ các tập tin mà không cần phải được lưu vĩnh viễn. Ví dụ: khi bạn tải xuống tài liệu từ một trang web và chọn "Mở" thay vì "Lưu", nó vẫn phải được lưu vào tệp cục bộ trước khi được cung cấp cho chương trình - đây là phương thức chuyển tiếp được hỗ trợ 100% duy nhất dữ liệu cho các chương trình khác. (Sau khi tất cả, nếu nó được trình bày như một tập tin trên trang web, nó đơn giản nhất để lưu lại dưới dạng tệp.)

Tương tự, nếu bạn mở một tệp trực tiếp từ bên trong một kho lưu trữ, nó được giải nén thành% TEMP% đầu tiên - chương trình lưu trữ sẽ xử lý việc giải nén để các chương trình khác không cần. Thông thường, bạn thậm chí có thể chỉnh sửa các tập tin trong chương trình, và nó sẽ được đóng gói lại sau đó. (So ​​sánh, nếu chương trình đã có để giải nén tập tin, sau đó nó sẽ phải đóng gói lại mỗi khi bạn lưu, ngay cả khi điều đó rất hiếm khi cần thiết.)


9
2017-08-29 22:54





Các lập trình viên và người sử dụng điện đã sử dụng các địa điểm gọi là temp hoặc là test trong nhiều năm để lưu trữ các tập tin không quan trọng có thể bị xóa khi chúng được hoàn thành với chúng.

%temp% đặc biệt liên quan đến Windows Temp Folder Variable, Đây là biến cho mỗi người dùng (trên các hệ thống hiện đại, mặc định là %USERPROFILE%\AppData\Local\Temp). Ứng dụng có thể ghi vào thư mục này khi chúng có yêu cầu tệp tạm thời.

Ví dụ lớn nhất của việc này là trình cài đặt. Nhiều trình cài đặt là các tệp đơn lẻ và khi bạn thấy thanh đó có độ tuổi trên các bản cài đặt lớn, nó thường mở rộng các tệp vào thư mục% temp%.

Khá thường xuyên tôi viết kịch bản hàng loạt đòi hỏi một thư mục tạm thời / dàn dựng. Chúng chỉ nhỏ, và tôi thường luôn sử dụng md temp, sử dụng nó, rd temp /s. Nếu tôi đang phân phối một tập lệnh, và nó liên quan đến rất nhiều tập tin, nó sẽ là hợp lý để sử dụng một tên duy nhất trong %temp% thư mục (nó sẽ chỉ là một chút khó khăn hơn để mã). Trong khi đa số mọi người không thay đổi đường dẫn mặc định, có rất nhiều người làm hoặc môi trường máy chủ mà bạn muốn ít nhất có thể trên ổ đĩa cứng chính.

Đối với lý do tại sao không sử dụng bộ nhớ, vẫn còn đúng ngày hôm nay - nó không đủ lớn cho tất cả mọi thứ. Máy tính xách tay đầu tiên của tôi có hoặc 2 MB hoặc 4 MB bộ nhớ (tôi quên), và trong khi nhiều chương trình rất nhỏ, thường có một vài trong phạm vi 5-10 MB (MS Office sử dụng khoảng 20-30 MB cho toàn bộ suite!).

Bây giờ, mức trung bình cao hơn rất nhiều (máy cấp nhập vào khoảng 2-4 GB, và người sử dụng điện là 8-16 GB, người dùng điện với một chút tiền 16 GB +), với một vài ngoại lệ như tập lệnh, bộ nhớ có thể thực sự được sử dụng nhiều hơn ngày hôm nay.

Tuy nhiên, cho đến khi các máy cấp nhập cảnh nằm trong phạm vi 16-32 GB (cho nó một vài năm!) Tôi không nghĩ rằng chúng ta sẽ có nhiều tiến bộ.

%temp% ở đây để ở trong một thời gian dài!


3
2017-08-29 23:10



Một xem xét khác là bạn có thể có thể đẩy các quy trình khác vào tệp trang, vì vậy hệ điều hành sẽ phải đọc và ghi vào đĩa anyways. - surfasb
@Surfasb Tôi thực sự không hiểu chính xác những gì bạn nói: / nhưng, (tôi nghĩ) điểm tốt về cách viết tệp trang, tuy nhiên, nó không thực sự "trực tiếp" liên quan đến %temp%, vì vậy, cố gắng giữ câu trả lời này đơn giản! - William Hilsum
Nó liên quan đến câu hỏi. Nếu bạn ghi vào RAM thay vì vào thư mục tạm thời, bạn có khả năng buộc hệ điều hành đẩy các tiến trình khác vào tệp trang. Đây là hậu quả của việc thiết lập RAMdisk cho thư mục tạm thời, thường không được mong muốn. - surfasb
@Surfasb +2! Ok, đủ công bằng, cảm ơn và xin lỗi! ... Tôi phải hoàn toàn quên mất câu hỏi cuối cùng ở đâu đó trong khi viết câu trả lời của tôi. Tôi sẽ cố gắng bao gồm điều đó. - William Hilsum
Không có máu, không hôi. - surfasb


Với phần mềm tôi đã viết, tôi đã sử dụng các thư mục tạm thời để xử lý máy bay CVR các tập tin. Các tệp thường có kích thước 512 MB. Trong khi xử lý các tập tin đi qua một loạt các định dạng.

  • Định dạng A: Dữ liệu sở hữu ban đầu.
  • Định dạng B: Dữ liệu xen kẽ.
  • Định dạng C: Bốn tệp G711 và tệp CVR chứa dữ liệu bổ sung.
  • Định dạng D: Bốn tệp Wave và tệp CVR.

Tôi bắt đầu bằng cách sao chép tệp gốc vào thư mục Temp nơi tất cả quá trình xử lý diễn ra.

Tôi sử dụng một thư viện để chuyển đổi từ định dạng A sang định dạng C (tự động thông qua định dạng B). Thư viện này chỉ có tên tệp đầu vào. Nó quyết định trên một tên tập tin đầu ra trong cùng một thư mục. Đó là tất cả ngoài tầm kiểm soát của tôi.

Tôi sử dụng một thư viện thứ hai để chuyển đổi từ định dạng C sang định dạng D.

Thư mục cuối cùng các tập tin được đặt trong là hiển thị cho người dùng, vì vậy tôi không muốn họ xem các tập tin đi qua quá trình chuyển đổi của họ, hoặc cho họ để xem các tập tin một phần, chỉ có đầu ra cuối cùng. Một quá trình xử lý hoàn tất, các tệp được yêu cầu được chuyển đến đích cuối cùng của chúng và Temp thư mục bị xóa.

Các Temp thư mục ẩn tất cả quá trình xử lý này từ người dùng. Tất cả những gì họ cần biết là tỷ lệ phần trăm tiến bộ.


1
2017-08-30 00:44



không có cách nào không sử dụng các thư mục tạm thời cho các hành động của bạn? - Pacerier
@Parcerier, tôi không có cách nào ngăn thư viện tạo ra các tệp tạm thời. Tôi phải yêu cầu nhà thiết kế thư viện thay đổi thư viện của họ để phù hợp với trường hợp cụ thể của tôi, và họ sẽ không dành nhiều thời gian hay tiền bạc cho điều đó. - Hand-E-Food
Sử dụng tệp là cách có trách nhiệm hơn để quản lý lượng dữ liệu lớn. Nói quá trình này muốn sử dụng 750Mb bộ nhớ, và tôi đã có 1Gb trên bộ nhớ. Nếu người dùng quyết định chạy các ứng dụng khác trong khi quá trình xử lý dữ liệu này tiếp tục, thì Windows sẽ liên tục hoán đổi cả ứng dụng và tiến trình nền trong và ngoài bộ nhớ ảo, dẫn đến hiệu suất kém hơn nhiều trong cả hai quá trình. - Hand-E-Food