Dosya nedir?


9

Yalnızca depolama değil, aynı zamanda depolama ile ilgili olmayan procfs veya / dev / null (veya herhangi bir sigorta tabanlı dosya) gibi soyutlamaları da içeren dosyanın resmi bir tanımını arıyorum .

Şimdiye kadar tüm dosyaların soyut olduğunu biliyorum.

  • tanımlanabilir
  • adları olabilir (genellikle hiyerarşik yapılarda organize edilir)
  • bayt akışı olarak erişilebilir
  • genellikle izinler ve diğer (sisteme özel) meta veriler sağlar

ancak şimdiye kadar okuduğum herhangi bir işletim sistemi kitabında yararlı resmi bir tanım bulamadım.


inodelara baktın mı?
Bhaskar

1
/ Dev / null gibi şeylerin hiç dosya olmadığını, aksine dosya olmayan şeylere dosyaymış gibi erişmemize izin veren hackler olduğunu iddia ediyorum. Ayrıca, bana "resmi" derken ne demek istediğiniz açık değil. Hangi formalizm içinde?
David Richerby

"Bir dosya fopen ile açılabilecek bir şeydir"?
adrianN

Tam bir dosya gibi davranır o herhangi bir yazılım soyutlama @DavidRicherby olan bir dosya: biz sadece onların davranışlarının vadede yazılım varlıkları tanımlayabilirsiniz. Biçimciliğe gelince, bir CS perspektifinden titiz bir şey arıyorum. Örneğin, turing makineleri için resmi bir tanımımız var.
Giacomo Tesio

Farklı işletim sistemleri dosyalara farklı işlemler ilişkilendirir, bkz. Örneğin * nix ve Windows. Kişi ortak bir zemin bulmaya çalışabilir, ancak kesin olmayacaktır. Dahası, CS'de nadiren dosyalar hakkında konuşur - bunun sadece bir işletim sistemi, bir dosya sistemi, belki bir DBMS tasarlanırken veya bazı disk üstü algoritmalarda (örneğin, birleştirme) tasarlandığını düşünüyorum. (ve birkaç diğer kişi)
chi

Yanıtlar:


6

Wikipedia'ya göre, bir bilgisayar dosyası basitçe bilgi depolamak için bir kaynaktır . Terimin, bir bilgisayar programının tam anlamıyla bir dosyada saklandığı delikli kart döneminde ortaya çıktığı görülmektedir (gevşek sayfaları saklamak için kullanılan bir kutuda olduğu gibi, aşağıdaki resme bakın). Diskler gibi başka medya biçimleri getirildikçe, isimlendirmeyi izledi.

* Nix bakış açısından, her şey bir dosyadır: soketler, cihazlar, terminaller, ekranlar / monitörler, veri dosyaları, borular vb. Microsoft Windows, aksine, kalıcı depolama verileri "dosyaları" ve adlandırılmış borular, soketler, raster aygıtları vb. Gibi geçici kaynakları arama eğilimindedir. Diğer sistemler bu iki uç arasında bir yerde benzer tanımlara sahip olabilir.

Ne yazık ki, daha önce de belirttiğim gibi, bir dosyanın ne olduğuna dair tek bir tanım yoktur, çünkü herkes için bir dosyanın veri depolayan adlandırılmış bir kaynak olduğu temel satır tanımında hemfikir olma eğilimi dışında, farklı kişiler için farklı şeyler vardır. Kalıcı ortamlarda (kalıcı, asla değiştirilemeyeceği anlamına gelmez, basitçe güç döngüleri boyunca devam eder).

Delikli Kart Dosyası]( Wikipedia )


Wikipedia tanımını okudum ama depolamaya çok fazla odaklanmış. Belirtildiği gibi, / dev / null gibi veri saklamayan dosyaları kapsayan bir tanım arıyorum.
Giacomo Tesio

@GiacomoTesio Yapmaya çalıştığım iki nokta (a) dosya farklı yazarlar için farklı şeyler ifade ediyor olsa da, (b) dosyalar en azından evrensel olarak kaynak olarak tanımlanıyor. NUL ve / dev / null özel kaynaklardır, çünkü aslında hiçbir şey depolamazlar, ancak yine de kaynaklardır. Kaynak, veri (veya her ikisini) iletebilen veya alabilen bir şeydir. Genel bir OS kitabının bir dosya tanımı, yazarın bakış açısına bağlı olacaktır.
phyrfox

2

Bir dosyayı bayt dizisi olarak düşünüyorum. Adını kaybettikten sonra bile (genellikle rm çağrısından kaynaklanır, bu da bağlantıyı kaldırır), parçaları diğer şeyler tarafından üzerine yazılana kadar diskte hala bulunur. Dosya biçimleri, dosyaları okumak için kullanılan bağlamlardır. Her şey, bilginin bayt artı bağlam olduğu ilkesine geri döner.

Önceki poster, dosya olarak kabul edilirken cihazların gerçekten dosya olmadığı doğrudur. Bu çok kullanışlı bir hack.

Benim bir dosya tanımım: bellekte saklanan bir bayt dizisi.


2
"Yani benim dosya tanımım: bir bayt dizisi." "UTF-8" bayt dizisidir. Bir dosya mı?
reinierpost

Biz yazılım soyutlama, bir dosya tam gibi davranır şey bahsediyoruz olan bir dosya. Aslında davranışı dışında hiçbir yazılım varlığını tanımlayamayız.
Giacomo Tesio

"Bir dosyayı bayt dizisi olarak düşünüyorum." "Dosya sistemi" nin tek tanımı bu değildir. Örneğin, bakınız en.wikipedia.org/wiki/Record-oriented_filesystem
Takma
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.