Apa itu file?

9

Saya mencari definisi formal file yang tidak hanya mencakup penyimpanan tetapi juga abstraksi seperti procfs / / dev / null (atau file berbasis sekering) yang tidak berhubungan dengan penyimpanan.

Sejauh ini saya tahu bahwa semua file adalah abstraksi itu

  • dapat diidentifikasi
  • dapat memiliki nama (biasanya disusun dalam struktur hierarkis)
  • dapat diakses sebagai aliran byte
  • biasanya memberikan izin dan metadata (khusus sistem) lainnya

namun saya tidak dapat menemukan definisi formal yang berguna dalam buku OS apa pun yang saya baca sejauh ini.

Giacomo Tesio
sumber
apakah Anda melihat ke dalam inode?
Bhaskar
1
Saya berpendapat bahwa hal-hal seperti / dev / null bukan file sama sekali, tetapi, adalah peretasan yang memungkinkan kita untuk mengakses hal-hal non-file seolah-olah mereka adalah file. Juga, tidak jelas bagi saya apa yang Anda maksud dengan "formal". Dalam formalisme apa?
David Richerby
"File adalah sesuatu yang bisa dibuka dengan fopen"?
adrianN
@ DavidRicher dengan abstraksi perangkat lunak apa pun yang berperilaku persis seperti file adalah file: kita hanya bisa mendefinisikan entitas perangkat lunak dalam hal perilaku mereka. Adapun formalisme, saya mencari sesuatu yang ketat dari perspektif CS. Kami memiliki definisi formal untuk mesin turing misalnya.
Giacomo Tesio
OS yang berbeda menghubungkan operasi yang berbeda ke file, lihat misalnya * nix vs Windows. Seseorang dapat mencoba menemukan landasan bersama, tetapi itu tidak akan tepat. Lebih lanjut, dalam CS kita jarang berbicara tentang file - saya pikir ini dilakukan hanya ketika merancang OS, sistem file, mungkin DBMS, atau dalam beberapa algoritma pada disk (misalnya sort-merge). (dan beberapa lainnya)
chi

Jawaban:

6

Menurut Wikipedia, file komputer hanyalah sumber daya untuk menyimpan informasi. Istilah ini tampaknya berasal dari era kartu punch, di mana program komputer secara harfiah disimpan dalam file (seperti dalam, kotak yang digunakan untuk menyimpan halaman yang lepas, lihat gambar di bawah). Ketika bentuk-bentuk media lain diperkenalkan, seperti disk, nomenklatur diikuti.

Dari sudut pandang * nix, semuanya adalah file: soket, perangkat, terminal, layar / monitor, file data, pipa, dan sebagainya. Microsoft Windows, sebaliknya, cenderung menyebut data penyimpanan permanen sebagai "file", dan sumber daya yang mudah menguap seperti apa pun itu, seperti pipa bernama, soket, perangkat raster, dll. Sistem lain mungkin memiliki definisi yang serupa di suatu tempat antara dua ekstrem ini.

Sayangnya, seperti yang baru saja saya nyatakan, tidak ada definisi tunggal tentang apa file itu, karena itu adalah hal yang berbeda untuk orang yang berbeda, kecuali bahwa setiap orang cenderung setuju pada definisi garis dasar bahwa file adalah sumber daya bernama yang menyimpan data pada media permanen (permanen tidak menyiratkan bahwa ia tidak pernah dapat dimodifikasi, hanya saja ia bertahan melalui siklus daya).

File Kartu Punch]( Wikipedia )

phyrfox
sumber
Saya sudah membaca definisi wikipedia, tetapi terlalu fokus pada penyimpanan. Seperti yang dinyatakan, saya mencari definisi yang mencakup file seperti / dev / null, yang tidak menyimpan data.
Giacomo Tesio
@GiacomoTesio Dua poin yang saya coba buat adalah (a) file berarti hal yang berbeda untuk penulis yang berbeda, meskipun (b) file setidaknya secara universal didefinisikan sebagai sumber daya. NUL dan / dev / null adalah sumber daya khusus, karena mereka sebenarnya tidak menyimpan apa pun, tetapi sumber daya tetap. Sumber daya hanyalah sesuatu yang dapat mengirim atau menerima data (atau keduanya). Definisi file buku OS generik akan tergantung pada sudut pandang penulis.
phyrfox
2

Saya menganggap file sebagai urutan byte. Bahkan setelah kehilangan namanya (biasanya disebabkan oleh panggilan ke rm, yang memutuskan tautannya), ia masih ada di disk sampai potongannya ditimpa oleh hal-hal lain. Format file adalah konteks untuk membaca file. Semuanya kembali pada prinsip bahwa informasi adalah byte plus konteks.

Poster sebelumnya benar bahwa perangkat, meskipun diperlakukan sebagai file, sebenarnya bukan file. Ini adalah retasan yang sangat berguna.

Jadi definisi saya tentang file: urutan byte yang disimpan dalam memori.

ncmathsadist
sumber
2
"Jadi, definisi file saya: urutan byte." adalah urutan (katakanlah, UTF-8) byte. Apakah ini file?
reinierpost
Kita berbicara tentang abstraksi perangkat lunak, apa pun yang berperilaku persis seperti file adalah file. Sebenarnya kita tidak dapat mendefinisikan entitas perangkat lunak apa pun kecuali dari perilakunya.
Giacomo Tesio
"Saya menganggap file sebagai urutan byte." Itu bukan satu-satunya definisi "sistem file". Lihat, misalnya, en.wikipedia.org/wiki/Record-oriented_filesystem
Nama samaran