Pengertian Sistem Berkas
Sistem berkas
merupakan mekanisme penyimpanan on-line serta untuk akses, baik data mau
pun program yang berada dalam Sistem Operasi. Terdapat dua bagian penting dalam
sistem berkas, yaitu:
·
kumpulan berkas, sebagai tempat penyimpanan
data, serta
·
struktur direktori, yang mengatur dan
menyediakan informasi mengenai seluruh berkas dalam sistem.
Pada bab ini, akan
dibahas tentang berbagai aspek dari berkas dan struktur, cara menangani
proteksi berkas, cara mengalokasikan ruang pada disk, melacak lokasi data,
serta meng-interface bagian-bagian lain dari sistem operasi ke
penyimpanan sekunder.
1. Konsep Dasar
Seperti yang telah
kita ketahui, komputer dapat menyimpan informasi ke beberapa media penyimpanan yang
berbeda, seperti magnetic disks, magnetic tapes, dan optical
disks. Agar komputer dapat digunakan dengan nyaman, sistem operasi
menyediakan sistem penyimpanan dengan sistematika yang seragam. Sistem Operasi
mengabstraksi properti fisik dari media penyimpanannya dan mendefinisikan unit penyimpanan
logis, yaitu berkas. Berkas dipetakan ke media fisik oleh sistem operasi. Media
penyimpanan ini umumnya bersifat non-volatile, sehingga kandungan di
dalamnya tidak akan hilang jika terjadi gagal listrik mau pun system reboot.
Berkas adalah
kumpulan informasi berkait yang diberi nama dan direkam pada penyimpanan
sekunder. Dari sudut pandang pengguna, berkas merupakan bagian terkecil dari
penyimpanan logis, artinya data tidak dapat ditulis ke penyimpanan sekunder
kecuali jika berada di dalam berkas. Biasanya berkas merepresentasikan program
(baik source mau pun bentuk objek) dan data. Data dari berkas dapat
bersifat numerik, alfabetik, alfanumerik, atau pun biner. Format berkas juga
bisa bebas, misalnya berkas teks, atau dapat juga diformat pasti. Secara umum,
berkas adalah urutan bit, byte, baris, atau catatan yang didefinisikan oleh
pembuat berkas dan pengguna.
Informasi dalam
berkas ditentukan oleh pembuatnya. Ada
banyak beragam jenis informasi yang dapat disimpan dalam berkas. Hal ini
disebabkan oleh struktur tertentu yang dimiliki oleh berkas, sesuai dengan
jenisnya masing-masing. Contohnya:
·
Text file; yaitu urutan
karakter yang disusun ke dalam baris-baris.
·
Source file; yaitu urutan subroutine
dan fungsi, yang nantinya akan dideklarasikan.
·
Object file; merupakan urutan
byte yang diatur ke dalam blok-blok yang dikenali oleh linker dari sistem.
·
Executable file; adalah rangkaian code
section yang dapat dibawa loader ke dalam memori dandieksekusi.
2. Atribut Pada Berkas
Berkas diberi nama,
untuk kenyamanan bagi pengguna, dan untuk acuan bagi data yang terkandung di dalamnya.
Nama berkas biasanya berupa string atau karakter. Beberapa sistem membedakan
penggunaan huruf besar dan kecil dalam penamaan sebuah berkas, sementara sistem
yang lain menganggap kedua hal di atas sama.Ketika berkas diberi nama, maka
berkas tersebut akan menjadi mandiri terhadap proses, pengguna, bahkan sistem
yang membuatnya. Atribut berkas terdiri dari:
·
Nama; merupakan
satu-satunya informasi yang tetap dalam bentuk yang bisa dibaca oleh manusia (human-readable
form)
·
Type; dibutuhkan untuk
sistem yang mendukung beberapa type berbeda
·
Lokasi; merupakan pointer
ke device dan ke lokasi berkas pada device tersebut
·
Ukuran (size); yaitu ukuran berkas
pada saat itu, baik dalam byte, huruf, atau pun blok
·
Proteksi; adalah informasi
mengenai kontrol akses, misalnya siapa saja yang boleh membaca, menulis, dan
mengeksekusi berkas
·
Waktu, tanggal dan identifikasi pengguna; informasi
ini biasanya disimpan untuk:
1. pembuatan berkas,
2. modifikasi terakhir yang dilakukan pada berkas, dan
3. penggunaan terakhir berkas.
Data tersebut dapat berguna untuk proteksi, keamanan, dan
monitoring penggunaan dari berkas.
Informasi tentang seluruh
berkas disimpan dalam struktur direktori yang terdapat pada penyimpanan sekunder.
Direktori, seperti berkas, harus bersifat non-volatile, sehingga
keduanya harus disimpan pada sebuah device dan baru dibawa bagian per
bagian ke memori pada saat dibutuhkan.
3. Operasi Pada Berkas
Sebuah berkas adalah
jenis data abstrak. Untuk mendefinisikan berkas secara tepat, kita perlu
melihat operasi yang dapat dilakukan pada berkas tersebut. Sistem operasi
menyediakan system calls untuk membuat, membaca, menulis, mencari,
menghapus, dan sebagainya. Berikut dapat kita lihat apa yang harus dilakukan
sistem operasi pada keenam operasi dasar pada berkas.
·
Membuat sebuah berkas: Ada dua cara dalam membuat
berkas. Pertama, tempat baru di dalam sistem berkas harus di alokasikan untuk
berkas yang akan dibuat. Kedua, sebuah direktori harus mempersiapkan tempat
untuk berkas baru, kemudian direktori tersebut akan mencatat nama berkas dan
lokasinya pada sistem berkas.
·
Menulis pada sebuah berkas: Untuk
menulis pada berkas, kita menggunakan system call beserta nama berkas
yang akan ditulisi dan informasi apa yang akan ditulis pada berkas. Ketika diberi nama berkas, sistem mencari ke
direktori untuk mendapatkan lokasi berkas. Sistem juga harus menyimpan penunjuk
tulis pada berkas dimana penulisan berikut akan ditempatkan. Penunjuk tulis
harus diperbaharui setiap terjadi penulisan pada berkas.
·
Membaca sebuah berkas: Untuk
dapat membaca berkas, kita menggunakan system call beserta nama berkas
dan di blok memori mana berkas berikutnya diletakkan. Sama seperti menulis,
direktori mencari berkas yang akan dibaca, dan sistem menyimpan penunjuk baca
pada berkas dimana pembacaan berikutnya akan terjadi. Ketika pembacaan dimulai,
penunjuk baca harus diperbaharui.Sehingga secara umum, suatu berkas ketika
sedang dibaca atau ditulis, kebanyakan sistem hanya mempunyai satu penunjuk,
baca dan tulis menggunakan penunjuk yang sama, hal ini menghemat tempat dan
mengurangi kompleksitas sistem.
·
Menempatkan kembali sebuah berkas:
Direktori yang bertugas untuk mencari berkas yang bersesuaian, dan
mengembalikan lokasi berkas pada saat itu. Menempatkan berkas tidak perlu melibatkan
proses I/O. Operasi sering disebut pencarian berkas.
·
Menghapus sebuah berkas: Untuk
menghapus berkas kita perlu mencari berkas tersebut di dalam direktori. Setelah
ditemukan kita membebaskan tempat yang dipakai berkas tersebut (sehingga dapat digunakkan
oleh berkas lain) dan menghapus tempatnya di direktori.
·
Memendekkan berkas: Ada suatu keadaan dimana
pengguna menginginkan atribut dari berkas tetap sama tetapi ingin menghapus isi
dari berkas tersebut. Fungsi ini mengizinkan semua atribut tetap sama tetapi
panjang berkas menjadi nol, hal ini lebih baik dari pada memaksa pengguna untuk
menghapus berkas dan membuatnya lagi.
Enam operasi dasar
ini sudah mencakup operasi minimum yang di butuhkan. Operasi umum lainnya adalah
menyambung informasi baru di akhir suatu berkas, mengubah nama suatu berkas,
dan lain-lain.
Operasi dasar ini
kemudian digabung untuk melakukan operasi lainnya. Sebagai contoh misalnya kita
menginginkan salinan dari suatu berkas, atau menyalin berkas ke peralatan I/O
lainnya seperti printer, dengan cara membuat berkas lalu membaca dari
berkas lama dan menulis ke berkas yang baru.
Hampir semua operasi
pada berkas melibatkan pencarian berkas pada direktori. Untuk menghindari pencarian
yang lama, kebanyakan sistem akan membuka berkas apabila berkas tersebut
digunakan secara aktif. Sistem operasi akan menyimpan tabel kecil yang berisi
informasi semua berkas yang dibuka yang disebut "tabel berkas
terbuka". Ketika berkas sudah tidak digunakan lagi dan sudah ditutup oleh
yang menggunakan, maka sistem operasi mengeluarkan berkas tersebut dari tabel
berkas terbuka.
Beberapa sistem
terkadang langsung membuka berkas ketika berkas tersebut digunakan dan otomatis
menutup berkas tersebut jika program atau pemakainya dimatikan. Tetapi pada
sistem lainnya terkadang membutuhkan pembukaan berkas secara tersurat dengan system
call (open) sebelum berkas dapat digunakan.
Implementasi dari
buka dan tutup berkas dalam lingkungan dengan banyak perngguna seperti UNIX, lebih
rumit. Dalam sistem seperti itu pengguna yang membuka berkas mungkin lebih dari
satu dan pada waktu yang hampir bersamaan. Umumnya sistem operasi menggunakan
tabel internal dua level. Ada
tabel yang mendata proses mana saja yang membuka berkas tersebut, kemudian
tabel tersebut menunjuk ke tabel yang lebih besar yang berisi informasi yang
berdiri sendiri seperti lokasi berkas pada disk, tanggal akses dan ukuran berkas. Biasanya
tabel tersebut juga memiliki data berapa banyak proses yang
membuka berkas tersebut.
Jadi, pada dasarnya ada beberapa informasi yang terkait
dengan pembukaan berkas yaitu:
·
Penunjuk Berkas: Pada sistem yang
tidak mengikutkan batas berkas sebagai bagian dari system call baca dan tulis,
sistem tersebut harus mengikuti posisi dimana terakhir proses baca dan tulis
sebagai penunjuk. Penunjuk ini unik untuk setiap operasi pada berkas, maka dari
itu harus disimpan terpisah dari atribut berkas yang ada pada disk.
·
Penghitung berkas yang terbuka: Setelah
berkas ditutup, sistem harus mengosongkan kembali tabel berkas yang dibuka yang
digunakan oleh berkas tadi atau tempat di tabel akan habis. Karena mungkin ada
beberapa proses yang membuka berkas secara bersamaan dan sistem harus menunggu
sampai berkas tersebut ditutup sebelum mengosongkan tempatnya di tabel.
Penghitung ini mencatat banyaknya berkas yang telah dibuka dan ditutup, dan
menjadi nol ketika yang terakhir membaca berkas menutup berkas tersebut barulah
sistem dapat mengosongkan tempatnya di tabel.
·
Lokasi berkas pada disk:
Kebanyakan operasi pada berkas memerlukan sistem untuk mengubah data yang ada
pada berkas. Informasi mengenai lokasi berkas pada disk disimpan di memori agar
menghindari banyak pembacaan pada disk untuk setiap operasi.
Beberapa sistem
operasi menyediakan fasilitas untuk memetakan berkas ke dalam memori pada
sistem memori virtual. Hal tersebut mengizinkan bagian dari berkas ditempatkan
pada suatu alamat di memori virtual. Operasi baca dan tulis pada memori dengan
alamat tersebut dianggap sebagai operasi baca dan tulis pada berkas yang ada di
alamat tersebut. Menutup berkas mengakibatkan semua data yang ada pada alamat
memori tersebut dikembalikan ke disk dan dihilangkan dari memori virtual yang
digunakan oleh proses.
4. Jenis Berkas
Pertimbangan utama
dalam perancangan sistem berkas dan seluruh sistem operasi, apakah sistem
operasi harus mengenali dan mendukung jenis berkas. Jika suatu sistem operasi
mengenali jenis dari berkas, maka ia dapat mengoperasikan berkas tersebut.
Contoh apabila pengguna mencoba mencetak berkas yang merupakan kode biner dari
program yang pasti akan menghasilkan sampah, hal ini dapat dicegah apabila
sistem operasi sudah diberitahu bahwa berkas tersebut merupakan kode biner.
Teknik yang umum
digunakan dalam implementasi jenis berkas adalah menambahkan jenis berkas dalam
nama berkas. Nama dibagi dua, nama dan akhiran (ekstensi), biasanya dipisahkan
dengan karakter titik. Sistem menggunakan akhiran tersebut untuk
mengindikasikan jenis berkas dan jenis operasi yang dapat dilakukan pada berkas
tersebut. Sebagai contoh hanya berkas yang berakhiran .bat, .exe atau
.com yang bisa dijalankan (eksekusi). Program aplikasi juga menggunakan
akhiran tersebut untuk mengenal berkas yang dapat dioperasikannya. Akhiran ini
dapat ditimpa atau diganti jika diperbolehkan oleh sistem operasi.
Beberapa sistem
operasi menyertakan dukungan terhadap akhiran, tetapi beberapa menyerahkan
kepada aplikasi untuk mengatur akhiran berkas yang digunakan, sehingga jenis
dari berkas dapat menjadi petunjuk aplikasi apa yang dapat mengoperasikannya.
Sistem UNIX tidak
dapat menyediakan dukungan untuk akhiran berkas karena menggunakan angka ajaib
yang disimpan di depan berkas untuk mengenali jenis berkas. Tidak semua berkas
memiliki angka ini, jadi sistem tidak bisa bergantung pada informasi ini.
Tetapi UNIX memperbolehkan akhiran berkas
tetapi hal ini tidak dipaksakan atau tergantung sistem
operasi, kebanyakan hanya untuk membantu pengguna mengenali jenis isi dari
suatu berkas.
Tabel 5-1. Tabel Jenis Berkas
Jenis berkas
|
Akhiran
|
Fungsi
|
executable
|
exe, com, bat, bin
|
program yang siap dijalankan
|
objek
|
obj, o
|
bahasa mesin, kode terkompilasi
|
kode asal (source code)
|
c, cc, pas, java, asm, a
|
kode asal dari berbagai bahasa
|
batch
|
bat, sh
|
perintah pada shell
|
text
|
txt, doc
|
data text, document
|
pengolah kata
|
wpd,
|
format jenis pengolah data
|
library
|
lib, a, DLL
|
library untuk rutin program
|
print, gambar
|
ps, dvi, gif
|
format aSCII atau biner untuk dicetak
|
archive
|
arc, zip, tar
|
beberapa berkas yang dikumpulkan menjadi satu berkas.
Terkadang dimampatkan untuk penyimpanan
|
5. Struktur Berkas
Kita juga dapat
menggunakan jenis berkas untuk mengidentifikasi struktur dalam dari berkas. Berkas
berupa source dan objek memiliki struktur yang cocok dengan harapan program
yang membaca berkas tersebut. Suatu berkas harus memiliki struktur yang
dikenali oleh sistem operasi. Sebagai contoh, sistem operasi menginginkan suatu
berkas yang dapat dieksekusi memiliki struktur tertentu agar dapat diketahui dimana
berkas tersebut akan ditempatkan di memori dan di mana letak instruksi pertama
berkas tersebut. Beberapa sistem operasi
mengembangkan ide ini sehingga mendukung beberapa struktur berkas, dengan beberapa
operasi khusus untuk memanipulasi berkas dengan struktur tersebut.
Kelemahan memiliki
dukungan terhadap beberapa struktur berkas adalah: Ukuran dari sistem operasi dapat
menjadi besar, jika sistem operasi mendefinisikan lima struktur berkas yang berbeda maka ia
perlu menampung kode untuk yang diperlukan untuk mendukung semuanya. Setiap
berkas harus dapat menerapkan salah satu struktur berkas tersebut. Masalah akan
timbul ketika terdapat aplikasi yang membutuhkan struktur informasi yang tidak
didukung oleh sistem operasi tersebut.
Beberapa sistem
operasi menerapkan dan mendukung struktur berkas sedikit struktur berkas.
Pendekatan ini digunakan pada MS-DOS dan UNIX. UNIX menganggap setiap berkas
sebagai urutan 8-bit byte, tidak ada interpretasi sistem operasi terhadap dari
bit-bit ini. Skema tersebut menawarkan fleksibilitas tinggi tetapi dukungan
yang terbatas. Setiap aplikasi harus menambahkan sendiri kode untuk menerjemahkan
berkas masukan ke dalam struktur yang sesuai. Walau bagaimana pun juga sebuah sistem
operasi harus memiliki minimal satu struktur berkas yaitu untuk berkas yang
dapat dieksekusi sehingga sistem dapat memuat berkas dalam memori dan
menjalankannya.
Sangat berguna bagi
sistem operasi untuk mendukung struktur berkas yang sering digunakan karena akan
menghemat pekerjaan pemrogram. Terlalu sedikit struktur berkas yang didukung
akan mempersulit pembuatan program, terlalu banyak akan membuat sistem operasi
terlalu besar dan pemrogram akan bingung.
6. Struktur Berkas Pada Disk
Menempatkan batas
dalam berkas dapat menjadi rumit bagi sistem operasi. Sistem disk biasanya memiliki
ukuran blok yang sudah ditetapkan dari ukuran sektor. Semua I/O dari disk
dilakukan dalam satuan blok dan semua blok (’physical record’) memiliki
ukuran yang sama. Tetapi ukuran dari ’physical record’ tidak akan sama
dengan ukuran ’logical record’. Ukuran dari ’logical record’ akan
bervariasi.Memuatkan beberapa ’logical record’ ke dalam ’physical
record’ merupakan solusi umum dari masalah ini.
Sebagai contoh pada
sistem operasi UNIX, semua berkas didefinisikan sebagai kumpulan byte. Setiap byte
dialamatkan menurut batasnya dari awal berkas sampai akhir. Pada kasus ini
ukuran ’logical record’ adalah 1 byte. Sistem berkas secara otomatis
memuatkan byte-byte tersebut kedalam blok pada disk.
Ukuran ’logical
record’, ukuran blok pada disk, dan teknik untuk memuatkannya menjelaskan
berapa banyak ’logical record’ dalam tiap-tiap ’physical record’. Teknik
memuatkan dapat dilakukan oleh aplikasi pengguna atau oleh sistem operasi.
Berkas juga dapat
dianggap sebagai urutan dari beberapa blok pada disk. Konversi dari ’logical
record’ ke ’physical record’ merupakan masalah perangkat lunak. Tempat pada
disk selalu berada pada blok, sehingga beberapa bagian dari blok terakhir yang
ditempati berkas dapat terbuang. Jika setiap blok berukuran 512 byte, sebuah
berkas berukuran 1.949 byte akan menempati empat blok (2.048 byte) dan akan
tersisa 99 byte pada blok terakhir. Byte yang terbuang tersebut dipertahankan
agar ukuran dari unit tetap blok bukan byte disebut fragmentasi dalam disk.
Semua sistem berkas
pasti mempunyai fragmentasi dalam disk, semakin besar ukuran blok akan semakin besar
fragmentasi dalam disknya.
7. Penggunaan Berkas Secara Bersama-sama
Konsistensi semantik
adalah parameter yang penting untuk evaluasi sistem berkas yang mendukung penggunaan
berkas secara bersama. Hal ini juga merupakan karakterisasi dari sistem yang menspesifikasi
semantik dari banyak pengguna yang mengakses berkas secara bersama-sama. Lebih khusus,
semantik ini seharusnya dapat menspesifikasi kapan
suatu modifikasi suatu data oleh satu pengguna dapat
diketahui oleh pengguna lain.
Terdapat beberapa
macam konsistensi semantik. Di bawah ini akan dijelaskan kriteria yang
digunakan dalam UNIX.
Berkas sistem UNIX mengikuti konsistensi semantik:
·
Penulisan ke berkas yang dibuka oleh pengguna
dapat dilihat langsung oleh pengguna lain yang sedang mengakses ke berkas yang
sama.
·
Terdapat bentuk pembagian dimana pengguna
membagi pointer lokasi ke berkas tersebut. Sehingga perubahan pointer satu
pengguna akan mempengaruhi semua pengguna sharingnya.
Tidak ada komentar:
Posting Komentar
Semoga Bermanfaat