Saat ini, sebagian besar sistem manajemen basis data (mis. PostGreSQL , MongoDB , dll ...) secara internal menyimpan data mereka di dalam file OS (di masa lalu, beberapa DBMS menggunakan partisi disk mentah secara langsung).
Pada komputer baru-baru ini masih menggunakan hard disk berputar , disk sangat lambat - relatif terhadap CPU atau RAM - yang menambahkan beberapa lapisan perangkat lunak tidak relevan. Teknologi SSD mungkin berubah sedikit, dan beberapa sistem file dioptimalkan untuk SSD.
File ada di sebagian besar OS secara umum untuk alasan historis dan sosial (khususnya, kompiler C dan sebagian besar alat - editor, penghubung - file yang diinginkan, jadi ada masalah ayam dan telur), dan karena ada banyak file yang sangat bagus implementasi sistem .
BTW, beberapa fasilitas sistem penting dapat menggunakan database. Misalnya pada Linux PAM dapat dikonfigurasi untuk menggunakan informasi dalam database (tetapi ini jarang dilakukan dalam praktiknya). Juga, beberapa server email mungkin menyimpan sebagian atau sebagian besar datanya dalam basis data (mis. Exim ).
File adalah abstraksi yang sedikit lebih rendah daripada database, sehingga mereka dapat lebih mudah diimplementasikan (seperti sistem file & lapisan VFS di kernel Linux) dan lebih cepat digunakan. Secara khusus, operasi pada file jauh lebih terbatas daripada pada database. Bahkan, Anda bisa melihat file atau sistem file karena beberapa database sangat terbatas!
Anda dapat merancang sistem operasi tanpa file , tetapi dengan beberapa mesin persistensi ortogonal lainnya (mis. Memiliki setiap proses persisten, maka Anda tidak terlalu peduli secara eksplisit tentang penyimpanan, karena OS mengelola sumber daya persisten). Ini telah dilakukan di beberapa sistem operasi akademik (1) (dan juga di mesin Smalltalk dan Lisp tahun 1980-an, entah bagaimana di IBM System i , alias AS / 400 , dan di beberapa proyek mainan yang terhubung dari osdev), tetapi ketika Anda mendesain OS Anda dengan cara ini Anda tidak dapat memanfaatkan banyak alat yang ada (mis. Anda juga perlu membuat kompiler dan antarmuka pengguna Anda dari awal, dan itu banyak pekerjaan).
Perhatikan bahwa sistem operasi microkernel mungkin tidak memerlukan file yang disediakan oleh lapisan kernel karena sistem file hanya server aplikasi (misalnya penerjemah Hurd yang berjalan di userland). Lihatlah juga di unikernel pendekatan di hari ini MirageOS
Linux (dan mungkin Windows, yang mendapatkan sebagian besar inspirasinya dari VMS & Unix ) memerlukan file untuk berfungsi. Paling tidak, program init (program pertama dimulai oleh kernel) harus dapat dieksekusi yang disimpan dalam file (sering /sbin/init
, tetapi bisa jadi systemd hari ini), dan (hampir) semua program lain dimulai dengan execve (2 ) syscall jadi harus disimpan dalam file. Namun, FUSE memungkinkan Anda untuk memberikan semantik seperti file untuk hal-hal yang bukan file.
Perhatikan juga bahwa di Linux (dan mungkin bahkan Windows, yang saya tidak tahu dan tidak pernah digunakan) sqlite adalah perpustakaan yang mengelola beberapa database SQL dalam file dan menyediakan API untuk itu. Telah diketahui secara luas bahwa Android (varian Linux) menggunakan banyak file sqlite (tetapi masih memiliki sistem file mirip POSIX).
Baca juga tentang pemeriksaan aplikasi (yang, pada banyak OS saat ini, diterapkan untuk menulis status proses dalam file). Didorong ke ekstrem, pendekatan itu tidak perlu secara manual menulis file aplikasi (tetapi hanya untuk mempertahankan seluruh proses menggunakan mesin pemeriksaan).
Sebenarnya, pertanyaan yang menarik adalah mengapa sistem operasi saat ini masih menggunakan file, dan jawabannya adalah warisan, dan alasan ekonomi dan budaya (sayangnya, sebagian besar bahasa pemrograman dan perpustakaan saat ini masih menginginkan file).
Catatan 1: OS akademis yang persisten mencakup Lisaac & Grasshopper , tetapi proyek akademik ini tampaknya tidak aktif. Lihat juga di http://tunes.org/ ; itu tidak aktif, tetapi telah banyak berdiskusi tentang topik-topik seperti itu.
Catatan 2: gagasan file telah banyak berubah dari waktu ke waktu (lihat jawaban ini tentang pengalaman pemrograman pertama saya): MSDOS pertama pada PC IBM tahun 1980-an (tanpa direktori!), VMS -pada 1978 Vaxen - (keduanya memiliki catatan tetap file dan file berurutan, dengan sistem versi primitif), mainframe tahun 1970-an ( IBM / 370 dengan OS / VS2 MVS ) memiliki gagasan yang sangat berbeda tentang file dan sistem file (khususnya karena pada waktu itu rasio waktu akses hard disk ke waktu akses memori inti adalah beberapa ribu - jadi pada saat itu disk berjalan relatif lebih cepat daripada hari ini, bahkan jika disk saat ini benar - benarlebih cepat dari abad sebelumnya, hari ini rasio kecepatan CPU / disk sekitar satu juta; tapi kami sekarang memiliki SSD). Juga, file kurang (atau bahkan tidak) berguna ketika memori persisten (seperti pada drum magnetik CAB500 , 1960-an; atau komputer masa depan menggunakan MRAM )