Files: Difference between revisions
Created page with "== Definisi == '''File adalah urutan byte. Tidak lebih, tidak kurang.''' Kalimat itu ditulis persis begitu di buku, dan penekanannya bukan sekadar gaya bahasa. Frasa ''"tidak lebih, tidak kurang"'' menegaskan bahwa operating system '''sengaja menolak tahu''' apa isi sebuah file: * tidak ada tipe data * tidak ada struktur internal * tidak ada konsep record atau baris Cuma deretan byte, dan penafsirannya sepenuhnya urusan aplikasi. {{Catatan|title=Kenapa justru itu ke..." |
No edit summary |
||
| Line 88: | Line 88: | ||
* [[OS Manages Hardware]] | * [[OS Manages Hardware]] | ||
* [[ | * [[Process]] | ||
* [[Virtual Memory]] | * [[Virtual Memory]] | ||
* [[System Call]] | * [[System Call]] | ||
Revision as of 06:32, 24 August 2026
Definisi
File adalah urutan byte. Tidak lebih, tidak kurang.
Kalimat itu ditulis persis begitu di buku, dan penekanannya bukan sekadar gaya bahasa. Frasa "tidak lebih, tidak kurang" menegaskan bahwa operating system sengaja menolak tahu apa isi sebuah file:
- tidak ada tipe data
- tidak ada struktur internal
- tidak ada konsep record atau baris
Cuma deretan byte, dan penafsirannya sepenuhnya urusan aplikasi.
Catatan: Karena model file tidak mengasumsikan apa pun tentang isinya, semua jenis device bisa dimuat ke dalam model yang sama. Andai OS memaksakan struktur tertentu, keyboard dan socket jaringan tidak akan pernah muat ke dalamnya.
Semua device adalah file
Setiap I/O device dimodelkan sebagai file — termasuk:
- disk
- keyboard
- display
- bahkan jaringan
Konsekuensinya menyeluruh: seluruh input dan output di sistem dilakukan dengan membaca dan menulis file, menggunakan sekumpulan kecil system call yang dikenal sebagai Unix I/O.
Aplikasi
|
open / read / write / close <- Unix I/O
|
+---------+--------+--------+----------+
| | | | |
Disk Keyboard Display Network ...
Perhatikan bentuk corongnya: banyak device yang bentuk fisiknya sangat berbeda, tapi semuanya masuk lewat antarmuka yang sama dan jumlah system call-nya sedikit.
Kenapa ini powerful
Gagasan file yang sederhana dan elegan ini ternyata sangat kuat, karena memberi aplikasi tampilan yang seragam atas semua I/O device yang mungkin ada di sistem.
Dua konsekuensi yang disebut buku:
- Programmer tidak perlu tahu teknologi device-nya. Yang memanipulasi isi file di disk, dalam istilah buku, blissfully unaware soal teknologi disk yang dipakai. Mau NVMe, SATA, atau apa pun, kodenya sama.
- Program yang sama jalan di sistem berbeda. Program itu tetap berjalan di sistem yang memakai teknologi disk yang berbeda, tanpa perlu diubah.
Ini contoh konkret dari tujuan kedua operating system yang dibahas di Operating System Mengelola Hardware: menyediakan mekanisme yang sederhana dan seragam untuk hardware low-level yang bentuknya beda-beda.
Unix I/O dibahas di Bab 10.
Catatan untuk kerja systems
- File descriptor adalah wujud praktis abstraksi ini. Setelah
open, sebuah file diwakili integer kecil. Tiga di antaranya sudah disiapkan sejak process lahir:0stdin,1stdout,2stderr. Karena semuanya cuma integer yang menunjuk ke urutan byte, pipe dan redirection di shell jadi mungkin tanpa program perlu tahu apa-apa. - Device benar-benar muncul sebagai file di filesystem. Lihat isi
/dev. Ada/dev/null,/dev/zero,/dev/random, sampai disk mentah seperti/dev/nvme0n1. Bahkan state kernel dipaparkan sebagai file lewat/procdan/sys—/proc/[pid]/mapsyang dipakai di catatan Virtual Memory adalah contohnya. - Socket adalah pengecualian sebagian. Setelah terhubung, socket bisa dibaca dan ditulis seperti file biasa. Tapi untuk membuatnya tetap butuh system call khusus:
socket,bind,listen,accept,connect. Jadi model file tidak menutupi seluruh siklus hidupnya. ioctladalah pintu darurat abstraksi ini. Begitu ada operasi device yang tidak bisa dinyatakan sebagai baca atau tulis byte — mengatur baud rate serial, mengeluarkan tray CD, mengubah mode terminal — semuanya ditumpuk keioctl. Keberadaanioctladalah pengakuan jujur bahwa abstraksi file tidak sempurna.- Plan 9 mendorong ide ini sampai ujung. Sistem operasi penerus Unix dari Bell Labs itu membuat hampir segalanya benar-benar file, termasuk antarmuka jaringan dan window grafis. Sering disebut sebagai versi "Unix yang konsisten sepenuhnya", dan berguna sebagai pembanding untuk melihat di mana Unix sendiri berkompromi.
- Keseragaman punya harga performa. Karena semua I/O lewat jalur yang sama, tiap operasi berarti satu system call dan penyalinan data antara kernel dan user space. Di sistem berthroughput tinggi, biaya itu dikurangi lewat
mmap,sendfile,O_DIRECT, atauio_uringyang membatch banyak operasi jadi satu perjalanan ke kernel.
Tip: {{{1}}}
Ringkasan tiga abstraksi
Dengan bagian ini, tiga abstraksi fundamental dari Figure 1.11 sudah lengkap:
| Abstraksi | Menutupi | Dibahas di |
|---|---|---|
| Process | Processor, main memory, I/O devices | Bab 8 |
| Virtual memory | Main memory dan disk I/O devices | Bab 9 |
| File | I/O devices | Bab 10 |
Istilah kunci
- File
- Urutan byte, tidak lebih dan tidak kurang; model OS untuk semua I/O device.
- Unix I/O
- Sekumpulan kecil system call untuk melakukan seluruh input dan output di sistem.
- File descriptor
- Integer kecil yang mewakili file terbuka di dalam sebuah process.
- ioctl
- System call serbaguna untuk operasi device yang tidak bisa dinyatakan sebagai baca atau tulis byte.