Jumat, 12 November 2010

Sistem Berkas (Sistem Operasi)


5.14. Soal-Soal Sistem Berkas

1.      Sebutkan macam-macam atribut pada berkas!
2.      Operasi apa sajakah yang dapat diterapkan pada sebuah berkas?
3.      Sebutkan informasi yang terkait dengan pembukaan berkas!
4.      Sebutkan dan jelaskan metode alokasi pada sistem berkas!
5.      Sebutkan dan jelaskan operasi pada direktori?
6.      Sebutkan dan Jelaskan tentang tipe akses pada berkas?
7.      Sebutkan dan jelaskan bagaimana cara mengatur free space?
8.      Bagaimanakah implementasi dari sebuah direktori dalam disk?
9.      Sebutkan keunggulan dari sistem berkas dalam UNIX dengan sistem berkas pada WINDOWS?
10.  Bagaimanakah langkah-langkah dalam proses back-up?



JAWABAN :
1.       Macam – macam atribut pada berkas antara lain :
·         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.

2.       Operasi yang dapat diterapkan pada sebuah berkas antara lain :
·         Membuat sebuah berkas : Ada dua cara dalam membuat berkas, yaitu :
1)     Tempat baru di dalam system berkas harus di alokasikan untuk berkas yang akan dibuat.
2)     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 digunakan 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.

3.       Informasi yang terkait dengan pembukaan berkas antara lain :
·         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 table 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 system 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.       Metode pada alokasi pada system berkas antara lain :
Alokasi Secara Berdampingan (Contiguous Allocation)
Metode ini menempatkan setiap berkas pada satu himpunan blok yang berurut di dalam disk. Alamat disk menyatakan sebuah urutan linier. Dengan urutan linier ini maka head disk hanya bergerak jika mengakses dari sektor terakhir suatu silinder ke sektor pertama silinder berikutnya. Contoh dari sistem operasi yang menggunakan contiguous allocation adalah IBM VM/ CMS karena pendekatan ini menghasilkan performa yang baik. Contiguous allocation dari suatu berkas diketahui melalui alamat dan panjang disk (dalam unit blok) dari blok pertama. Jadi, misalkan ada berkas dengan panjang n blok dan mulai dari lokasi b maka berkas tersebut menempati blok b, b+1, b+2, ..., b+n-1. Direktori untuk setiap berkas mengindikasikan alamat blok awal dan panjang area yang dialokasikan untuk berkas tersebut. Terdapat dua macam cara untuk mengakses berkas yang dialokasi dengan metode ini, yaitu:

·         Sequential access, sistem berkas mengetahui alamat blok terakhir dari disk dan membaca blok berikutnya jika diperlukan.
·         Direct access, untuk akses langsung ke blok i dari suatu berkas yang dimulai pada blok b, dapat langsung mengakses blok b+i.

Alokasi Secara Berangkai (Linked Allocation)
Metode ini menyelesaikan semua masalah yang terdapat pada contiguous allocation. Dengan metode ini, setiap berkas merupakan linked list dari blok-blok disk, dimana blok-blok disk dapat tersebar di dalam disk. Setiap direktori berisi sebuah penunjuk (pointer) ke awal dan akhir blok sebuah berkas. Setiap blok mempunyai penunjuk ke blok berikutnya. Untuk membuat berkas baru, kita dengan mudah membuat masukan baru dalam direktori. Dengan metode ini, setiap direktori masukan mempunyai penunjuk ke awal blok disk dari berkas. Penunjuk ini diinisialisasi menjadi nil (nilai penunjuk untuk akhir dari list) untuk menandakan berkas kosong. Ukurannya juga diset menjadi 0. Penulisan suatu berkas menyebabkan ditemukannya blok yang kosong melalui sistem manajemen ruang kosong (free-space management system), dan blok baru ini ditulis dan disambungkan ke akhir berkas. Untuk membaca suatu berkas, cukup dengan membaca blok-blok dengan mengikuti pergerakan penunjuk.
Metode ini tidak mengalami fragmentasi eksternal dan kita dapat menggunakan blok kosong yang terdapat dalam daftar ruang kosong untuk memenuhi permintaan pengguna. Ukuran dari berkas tidak perlu ditentukan ketika berkas pertama kali dibuat, sehingga ukuran berkas dapat bertambah selama masih ada blok-blok kosong.

Alokasi Dengan Indeks (Indexed Allocation)
Metode alokasi dengan indeks menyelesaikan masalah fragmentasi eksternal dan pendeklarasian ukuran dengan mengumpulkan semua penunjuk menjadi dalam satu lokasi yang dinamakan blok indeks (index block). Setiap berkas mempunyai blok indeks, yang merupakan sebuah larik array dari alamat-alamat disk-blok. Direktori mempunyai alamat dari blok indeks. Ketika berkas dibuat, semua penunjuk dalam blok indeks di set menjadi nil. Ketika blok ke-i pertama kali ditulis, sebuah blok didapat dari pengatur ruang kosong free-space manager dan alamatnya diletakkan ke dalam blok indeks ke-i.

Metode ini mendukung akses secara langsung, tanpa mengalami fragmentasi eksternal karena blok kosong mana pun dalam disk dapat memenuhi permintaan ruang tambahan. Tetapi metode ini dapat menyebabkan ada ruang yang terbuang. Penunjuk yang berlebihan dari blok indeks secara umum lebih besar dari yang terjadi pada metode alokasi berangkai.

Mekanisme untuk menghadapi masalah berapa besar blok indeks yang diperlukan sebagai berikut:
·         Linked scheme: untuk berkas-berkas yang besar, dilakukan dengan menyambung beberapa blok indeks menjadi satu.
·         Multilevel index: sebuah varian dari representasi yang berantai adalah dengan menggunakan blok indeks level pertama menunjuk ke himpunan blok indeks level kedua, yang akhirnya menunjuk ke blok-blok berkas.
·         Combined scheme: digunakan oleh sistem BSD UNIX yaitu dengan menetapkan 15 penunjuk dari blok indeks dalam blok indeksnya berkas. 12 penunjuk pertama menunjuk ke direct blocks yang menyimpan alamat-alamat blok yang berisi data dari berkas. 3 penunjuk berikutnya menunjuk ke indirect blocks. Penunjuk indirect blok yang pertama adalah alamat dari single indirect block, yang merupakan blok indeks yang berisi alamat-alamat blok yang berisi data. Lalu ada penunjuk double indirect block yang berisi alamat dari sebuah blok yang berisi alamat-alamat blok yang berisi penunjuk ke blok data yang sebenarnya.

5.       Operasi pada direktori antara lain :
Operasi-operasi yang dapat dilakukan pada direktori adalah:
1.      Mencari berkas, kita dapat menemukan sebuah berkas didalam sebuah struktur direktori. Karena berkas-berkas memiliki nama simbolik dan nama yang sama dapat mengindikasikan keterkaitan antara setiap berkas-berkas tersebut, mungkin kita berkeinginan untuk dapat menemukan seluruh berkas yang nama-nama berkas membentuk pola khusus.
2.      Membuat berkas, kita dapat membuat berkas baru dan menambahkan berkas tersebut kedalam direktori.
3.      Menghapus berkas, apabila berkas sudah tidak diperlukan lagi, kita dapat menghapus berkas tersebut dari direktori.
4.      Menampilkan isi direktori, kita dapat menampilkan seluruh berkas dalam direktori, dan kandungan isi direktori untuk setiap berkas dalam daftar tersebut.
5.      Mengganti nama berkas, karena nama berkas merepresentasikan isi dari berkas kepada user, maka user dapat merubah nama berkas ketika isi atau penggunaan berkas berubah. Perubahan nama dapat merubah posisi berkas dalam direktori.
6.      Melintasi sistem berkas, ini sangat berguna untuk mengakses direktori dan berkas didalam struktur direktori.

6.       Tipe akses pada berkas antara lain :
1)     Read             : Membaca dari berkas
2)     Write                        : Menulis berkas
3)     Execute        : Meload berkas kedalam memori untuk dieksekusi.
4)     Append        : Menambahkan informasi kedalam berkas di akhir berkas.
5)     Delete                       : Menghapus berkas.
6)     List                : Mendaftar properti dari sebuah berkas.
7)     Rename        : Mengganti nama sebuah berkas.
8)     Copy             : Menduplikasikan sebuah berkas.
9)     Edit               : Mengedit sebuah berkas.

7.     Ada beberapa cara untuk mengatur free space antara lain :
Menggunakan Bit Vektor
Seringnya daftar ruang kosong diimplementasikan sebagai bit map atau bit vektor. Tiap blok direpresentasikan sebagai 1 bit. Jika blok tersebut kosong maka isi bitnya 1 dan jika bloknya sedang dialokasikan maka isi bitnya 0. Keuntungan utama dari pendekatan ini adalah relatif sederhana dan efisien untuk mencari blok pertama yang kosong atau berturut-turut n blok yang kosong pada disk.

Linked List
Cara ini menghubungkan semua blok yang kosong, menyimpan pointer ke blok pertama yang kosong di tempat yang khusus pada disk dan menyimpannya di memori. Blok pertama ini menyimpan pointer ke blok kosong berikutnya dan seterusnya. Umumnya, sistem operasi membutuhkan blok kosong untuk mengalokasikan blok tersebut ke berkas, maka blok pertama pada daftar ruang kosong digunakan.

Grouping
Cara lainnya adalah dengan menyimpan alamat dari n blok kosong pada blok kosong pertama. Pada n-1 pertama dari blok-blok ini adalah kosong. Blok terakhir menyimpan alamat n blok kosong lainnya dan seterusnya. Keuntungannya dari implementasi seperti ini adalah alamat dari blok kosong yang besar sekali dapat ditemukan dengan cepat, tidak seperti pendekatan standar linked-list.

Counting
Pendekatan lain adalah dengan mengambil keuntungan dari fakta bahwa beberapa blok yang berkesinambungan akan dialokasikan atau dibebaskan secara simultan. Maka dari itu dari pada menyimpan daftar dari banyak alamat disk, kita dapat menyimpan alamat dari blok kosong pertama dan jumlah dari blok kosong yang berkesinambungan yang mengikuti blok kosong pertama. Tiap isi dari daftar menyimpan alamat disk dan penghitung (counter). Meski pun setiap isi membutuhkan tempat lebih tetapi secara keseluruhan daftar akan lebih pendek, selama count lebih dari satu.
8.     Implementasi dari sebuah direktori dalam disk :
Linear List
Metode paling sederhana dalam mengimplementasikan sebuah direktori adalah dengan menggunakan linear list dari nama berkas dengan penunjuk ke blok data.
Untuk membuat berkas baru kita harus mencari di dalam direktori untuk meyakinkan bahwa tidak ada berkas yang bernama sama. Lalu kita tambahkan sebuah berkas baru pada akhir direktori. Untuk menghapus sebuah berkas, kita mencari berkas tersebut dalam direktori, lalu melepaskan tempat yang dialokasikan untuknya. Untuk menggunakan kembali suatu berkas dalam direktori kita dapat melakukan beberapa hal. Kita dapat menandai berkas tersebut sebagai tidak terpakai (dengan menamainya secara khusus, seperti nama yang kosong, atau bit terpakai atau tidak yang ditambahkan pada berkas), atau kita dapat menambahkannya pada daftar direktori bebas. Alternatif lainnya kita dapat menyalin ke tempat yang dikosongkan pada direktori. Kita juga bias menggunakan linked list untuk mengurangi waktu untuk menghapus berkas. Kelemahan dari linear list ini adalah percarian searah untuk mencari sebuah berkas.

Hash Table
Struktur data lainnya yang juga digunakan untuk direktori berkas adalah hash table. Dalam metode ini linear list menyimpan direktori, tetapi struktur data hash juga digunakan. Hash table mengambil nilai yang dihitung dari nama berkas dan mengembalikan sebuah penunjuk ke nama berkas yang ada di-linear list. Maka dari itu dapat memotong banyak biaya pencarian direktori. Memasukkan dan menghapus berkas juga lebih mudah dan cepat. Meski demikian beberapa aturan harus dibuat untuk mencegah tabrakan, situasi dimana dua nama berkas pada hash mempunyai tempat yang sama. Kesulitan utama dalam hash table adalah ukuran tetap dari hash table dan ketergantungan dari fungsi hash dengan ukuran hash table. Sebagai contoh, misalkan kita membuat suatu linear-probing hash table yang dapat menampung 64 data. Fungsi hash mengubah nama berkas menjadi nilai dari 0 sampai 63. Jika kita membuat berkas ke 65 maka ukuran tabel hash harus diperbesar sampai misalnya 128 dan kita membutuhkan suatu fungsi hash yang baru yang dapat memetakan nama berkas dari jangkauan 0 sampai 127, dan kita harus mengatur data direktori yang sudah ada agar memenuhi fungsi hash yang baru. Sebagai alternatif dapat digunakan chained-overflow hash table, setiap hash table mempunyai daftar yang terkait (linked list) dari pada nilai individual dan kita dapat mengatasi tabrakan dengan menambah tempat pada daftar terkait tersebut. Pencarian dapat menjadi lambat, karena pencarian nama memerlukan tahap pencarian pada daftar terkait. Tetapi operasi ini lebih cepat dari pada pencarian linear terhadap seluruh direktori.

9.     Keunggulan dari sistem berkas dalam UNIX dengan sistem berkas pada WINDOWS :
a.       Sistem berkas UNIX lebih hebat dan mudah diatur daripada Windows (DOS).
b.      Pada system Windows, nama diubah menjadi nama yang lebih mudah bagi para pengguna. Contohnya nama folder dalam adalah perubahan dari directory yang masih digunakan oleh UNIX. Penggunaan back slash (\) digunakan untuk memisahkan direktori – diretori dalam Windows. Sedangkan pada UNIX menggunakan case sensitive,  yang artinya nama suatu berkas yang sama jika dibaca, tetapi penulisan namanya berbeda dalam hal ada satu file yang menggunakan huruf kapital dalam penamaan dan satu tidak akan berbeda dalam UNIX. Contohnya ada berkas bernama berkasdaku.txt dan berkasDaku.txt. Jika dibaca nama berkasnya sama tetapi dalam UNIX ini merupakan dua berkas yang jauh berbeda. Jika berkas – berkas ini berada dalam system Windows, mereka menunjuk ke berkas yang sama. Ini berarti Windows tidak case sensitive.
c.       UNIX tidak menggunakan drive letter seperti C:, D: dalam Windows. Tetapi semua partisi dan drive ekstra di mount di dalam sub-direktori di bawah diretori root. Ini tidak membuat penguna bingung menentukan letak berkas yang berada di drive letter mana.

10.Langkah-langkah dalam proses back-up :
·         Hari 1           : Salin ke tempat penyimpanan back up semua berkas dari disk, disebut sebuah full backup.
·         Hari 2           : Salin ke tempat penyimpanan lain semua berkas yang berubah sejak hari 1, disebut incremental backup.
·         Hari 3           : Salin ke tempat peyimpanan lain semua berkas yang berubah sejak hari 2.
·         Hari N           : salin ke tempat penyimpanan lain semua berkas yang berubah sejak hari N-1, lalu kembali ke hari 1.


1 komentar: