Günümüzde çoğu veritabanı yönetim sistemi (örneğin PostGreSQL , MongoDB , vb ...) dahili olarak verilerini işletim sistemi dosyalarında tutmaktadır (geçmişte bazı DBMS'ler doğrudan ham disk bölümlerini kullanmıştır).
Hala dönen sabit diskler kullanan yeni bilgisayarlarda , disk çok yavaş - CPU veya RAM'e bağlı olarak - birkaç yazılım katmanı eklemek önemli değil. SSD teknolojisi bunu biraz değiştirebilir ve bazı dosya sistemleri SSD'ler için optimize edilmiştir.
Dosyalar çoğu işletim sisteminde genel olarak tarihsel ve sosyal nedenlerden dolayı (özellikle C derleyicileri ve çoğu araç - editörler, bağlayıcılar - dosyalar istiyor, bu yüzden bir tavuk ve yumurta sorunu var) ve çok fazla iyi dosya olduğu için var sistem uygulamaları.
BTW, bazı temel sistem tesisleri veritabanlarını kullanabilir. Örneğin, Linux'ta PAM veritabanlarındaki bilgileri kullanmak için yapılandırılabilir (ancak bu nadiren pratikte yapılır). Ayrıca, bazı posta sunucuları verilerinin bir kısmını veya çoğunu veritabanlarında depolayabilir (örn. Exim ).
Dosyalar veritabanlarından biraz daha düşük soyutlamalardır, bu nedenle uygulanması daha kolay ( Linux çekirdeğindeki dosya sistemleri ve VFS katmanı olarak) kullanımı daha kolay ve daha hızlı olabilir. Özellikle, dosyalar üzerindeki işlemler veritabanlarındakilerden çok daha sınırlıdır. Aslında, dosyaları veya dosya sistemlerini çok kısıtlı veritabanları olarak görebiliyordunuz!
Bir tasarım olabilir işletim sistemi herhangi bir dosya olmadan , ancak diğer bazı dikey ile kalıcılık makineleri (örneğin her haiz süreci kalıcı olmak, o zaman çok fazla önemsemiyorum açıkça OS kalıcı kaynakların yönetimi olduğundan, depolama hakkında). Bu, birçok akademik işletim sisteminde (1) (ve ayrıca 1980'lerin Smalltalk ve Lisp makinelerinde , bir şekilde IBM System i'de , AS / 400 , ve osdev ile bağlantılı bazı oyuncak projelerinde yapıldı.), ancak işletim sisteminizi bu şekilde tasarladığınızda mevcut birçok araçtan yararlanamazsınız (örneğin, derleyicinizi ve kullanıcı arabiriminizi sıfırdan yapmanız gerekir, bu da çok fazla iş gerektirir).
Mikro çekirdek işletim sistemlerinin, dosya sistemleri yalnızca uygulama sunucuları olduğu için çekirdek katmanları tarafından sağlanan dosyalara gerek duymayabileceğine dikkat edin (örn . Kullanıcı alanında çalışan Hurd çevirmenleri ). Ayrıca bugünün MirageOS'undaki unikernel yaklaşımına bakın.
Linux (onun ilham çoğu var ve muhtemelen Pencereler, VMS & Unix çalışmalarına ihtiyaç dosyaları). En azından, init programı (çekirdeğin başlattığı ilk program) bir dosyada saklanan bir çalıştırılabilir olmalıdır (genellikle /sbin/init
, ancak bugünlerde sistemli olabilir ) ve (neredeyse) diğer tüm programlar çalıştırma ile başlar (2). ) Sistem çağrısı bir dosyada saklanmalıdır. Bununla birlikte, FUSE , dosya benzeri olmayan şeylere dosya benzeri anlamlar vermenizi sağlar.
Ayrıca Linux'ta (ve belki de bilmediğim ve hiç kullanmadığım Windows'da bile) sqlite'nin bir dosyadaki bazı SQL veritabanlarını yöneten ve bunun için bir API sağlayan bir kütüphane olduğuna dikkat edin. Android'in (bir Linux varyantı) çok sayıda sqlite dosyası kullandığı bilinmektedir (ancak yine de POSIX benzeri bir dosya sistemine sahiptir).
Ayrıca uygulama denetimini işaretlemeyi de okuyun (birçok işletim sisteminde, işlem durumunu dosyalara yazmak için uygulanır). Aşırı derecede etkilendiğinde, bu yaklaşımın uygulama dosyalarını el ile yazması gerekmez (ancak yalnızca kontrol noktası makine kullanarak tüm işlem durumunu sürdürmek için).
Aslında, ilginç olan soru şu anki işletim sistemlerinde neden hala dosya kullanıyor ve bunun cevabı eski ve ekonomik ve kültürel nedenler (ne yazık ki, çoğu programlama dili ve kütüphanesi bugün hala dosya istiyor).
Not 1: kalıcı akademik işletim sistemleri Lisaac ve Grasshopper'ı içerir , ancak bu akademik projeler etkisiz görünüyor. Ayrıca http://tunes.org/ adresine bakın ; etkin değil, ancak bu tür konular hakkında birçok tartışmalar oldu.
Not 2: dosya kavramı zaman içinde geniş ölçüde değişti ( ilk programlama deneyimlerime ilişkin şu cevaba bakınız): 1980'lerde ilk MSDOS IBM PC'lerinde (dizin yok!), VMS-1978 Vaxen - (her ikisi de sabit kayıtlara sahipti) ilkel bir sürümleme sistemine sahip dosyalar ve sıralı dosyalar olan 1970'lerin ana bilgisayarlarında ( OS / VS2 MVS ile IBM / 370 ) çok farklı dosya ve dosya sistemleri (özellikle sabit disk erişim zamanlarının oranlarının çekirdek bellek erişim süresi birkaç bin idi - o zamanlar bugünün diskleri kesin olsa bile, disk bugünden nispeten daha hızlı çalıştı.önceki yüzyıldan daha hızlı, bugün CPU / disk hız oranı yaklaşık bir milyon; ama şimdi SSD'lerimiz var). Ayrıca, dosyalar kalıcı olduğunda ( CAB500 manyetik davulda, 1960'larda veya MRAM kullanan gelecekteki bilgisayarlarda ) dosyalar daha az (ya da hatta değil) kullanışlıdır.