Jump to content

Files: Difference between revisions

From Haidhi Wiki
No edit summary
No edit summary
 
Line 67: Line 67:
! Abstraksi !! Menutupi !! Dibahas di
! Abstraksi !! Menutupi !! Dibahas di
|-
|-
| [[Processes|Process]] || Processor, main memory, I/O devices || Bab 8
| [[Process|Process]] || Processor, main memory, I/O devices || Bab 8
|-
|-
| [[Virtual Memory|Virtual memory]] || Main memory dan disk I/O devices || Bab 9
| [[Virtual Memory|Virtual memory]] || Main memory dan disk I/O devices || Bab 9

Latest revision as of 06:35, 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:

  1. 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.
  2. 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: 0 stdin, 1 stdout, 2 stderr. 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 /proc dan /sys — /proc/[pid]/maps yang 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.
  • ioctl adalah 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 ke ioctl. Keberadaan ioctl adalah 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, atau io_uring yang 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.

Lihat juga