Một tập tin là gì?


9

Tôi đang tìm một định nghĩa chính thức về tệp không chỉ bao gồm lưu trữ mà còn bao gồm các khái niệm trừu tượng như Procfs hoặc / dev / null (hoặc bất kỳ tệp dựa trên cầu chì nào) không liên quan đến lưu trữ.

Cho đến nay tôi biết rằng tất cả các tệp là trừu tượng

  • Có thể được xác định
  • có thể có tên (thường được tổ chức theo cấu trúc phân cấp)
  • có thể được truy cập như một luồng byte
  • thường cung cấp quyền và siêu dữ liệu (hệ thống cụ thể) khác

tuy nhiên tôi không thể tìm thấy bất kỳ định nghĩa chính thức hữu ích nào trong bất kỳ cuốn sách hệ điều hành nào tôi đã đọc cho đến nay.


bạn đã nhìn vào inodes?
Bhaskar

1
Tôi tranh luận rằng những thứ như / dev / null hoàn toàn không phải là tệp, nhưng, đúng hơn, là những bản hack cho phép chúng ta truy cập vào những thứ không phải tệp như thể chúng là tệp. Ngoài ra, tôi không rõ ý của bạn là "chính thức". Trong chủ nghĩa hình thức nào?
David Richerby

"Một tập tin là cái gì đó có thể được mở bằng fopen"?
adrianN

@DavidR Richby bất kỳ sự trừu tượng hóa phần mềm nào hoạt động chính xác như một tệp một tệp: chúng ta chỉ có thể định nghĩa các thực thể phần mềm theo hành vi của chúng. Đối với chủ nghĩa hình thức, tôi đang tìm kiếm một cái gì đó nghiêm ngặt từ góc độ CS. Chúng tôi có một định nghĩa chính thức về máy turing chẳng hạn.
Giacomo Tesio

Các hệ điều hành khác nhau quy các hoạt động khác nhau cho các tệp, xem ví dụ * nix vs Windows. Người ta có thể cố gắng tìm một điểm chung, nhưng nó sẽ không chính xác. Hơn nữa, trong CS người ta hiếm khi nói về các tệp - Tôi nghĩ rằng điều này chỉ được thực hiện khi thiết kế HĐH, hệ thống tệp, có thể là DBMS hoặc trong một số thuật toán trên đĩa (ví dụ: hợp nhất sắp xếp). (và một vài người khác)
chi

Câu trả lời:


6

Theo Wikipedia, một tệp máy tính chỉ đơn giản là một tài nguyên để lưu trữ thông tin. Thuật ngữ này dường như bắt nguồn từ kỷ nguyên thẻ đục lỗ, trong đó một chương trình máy tính được lưu trữ theo nghĩa đen trong một tệp (như trong, một hộp được sử dụng để lưu trữ các trang lỏng lẻo, xem hình ảnh bên dưới). Khi các hình thức truyền thông khác được giới thiệu, chẳng hạn như đĩa, danh pháp theo sau.

Từ quan điểm * nix, mọi thứ đều là một tệp: ổ cắm, thiết bị, thiết bị đầu cuối, màn hình / màn hình, tệp dữ liệu, đường ống, v.v. Ngược lại, Microsoft Windows có xu hướng gọi "tệp" dữ liệu lưu trữ vĩnh viễn và tài nguyên dễ bay hơi như bất cứ thứ gì, chẳng hạn như ống, ổ cắm, thiết bị raster, v.v. Các hệ thống khác có thể có định nghĩa tương tự ở đâu đó giữa hai thái cực này.

Thật không may, như tôi vừa nêu, không có định nghĩa duy nhất về tệp là gì, bởi vì đó là những thứ khác nhau đối với những người khác nhau, ngoại trừ mọi người có xu hướng đồng ý với định nghĩa cơ sở rằng tệp là tài nguyên có tên lưu trữ dữ liệu trên phương tiện truyền thông vĩnh viễn (vĩnh viễn không ngụ ý rằng nó không bao giờ có thể được sửa đổi, chỉ đơn giản là nó tồn tại qua các chu kỳ điện).

Tập tin thẻ punch]( Wikipedia )


Tôi đã đọc định nghĩa wikipedia, nhưng nó quá tập trung vào lưu trữ. Như đã nêu, tôi đang tìm một định nghĩa bao gồm các tệp như / dev / null, không lưu trữ dữ liệu.
Giacomo Tesio

@GiacomoTesio Hai điểm tôi đã cố gắng thực hiện là (a) tệp có nghĩa là những thứ khác nhau đối với các tác giả khác nhau, mặc dù (b) tệp ít nhất được định nghĩa chung là tài nguyên. NUL và / dev / null là tài nguyên đặc biệt, vì thực tế chúng không lưu trữ bất cứ thứ gì, nhưng vẫn là tài nguyên. Tài nguyên chỉ đơn giản là thứ có thể truyền hoặc nhận dữ liệu (hoặc cả hai). Định nghĩa của một cuốn sách hệ điều hành chung về tệp sẽ phụ thuộc vào quan điểm của tác giả.
phyrfox

2

Tôi nghĩ về một tập tin như là một chuỗi byte. Ngay cả sau khi nó mất tên (thường được gây ra bởi một cuộc gọi đến rm, không liên kết nó), nó vẫn tồn tại trên đĩa cho đến khi các khối của nó bị ghi đè bởi các thứ khác. Định dạng tệp là bối cảnh để đọc tệp. Tất cả quay trở lại nguyên tắc rằng thông tin là byte cộng với ngữ cảnh.

Các poster trước đó đúng là các thiết bị, trong khi được coi là tệp, không thực sự là tệp. Đây là một hack rất hữu ích.

Vì vậy, định nghĩa của tôi về một tập tin: một chuỗi các byte được lưu trữ trong bộ nhớ.


2
"Vì vậy, định nghĩa của tôi về một tệp: một chuỗi byte." là một chuỗi các byte (giả sử, UTF-8). Có phải là một tập tin?
Revierpost

Chúng ta đang nói về trừu tượng phần mềm, bất cứ điều gì hoạt động chính xác như một tệp một tệp. Trên thực tế chúng ta không thể định nghĩa bất kỳ thực thể phần mềm nào ngoại trừ từ hành vi của nó.
Giacomo Tesio

"Tôi nghĩ về một tập tin như một chuỗi các byte." Đó không phải là định nghĩa duy nhất của "hệ thống tập tin". Xem, ví dụ, en.wikipedia.org/wiki/Record-oriented_filesystem
Bút danh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.