You are on page 1of 10

1. Sistem Pengurusan Fail (File Management System) 1.1.

Fail Fail merupakan peniskalaan asas (fundamental abstraction) bagi alat storan sekunder (secondary storage device) 1.1.1. Struktur Maklumat

(Fig 13.1 pg 377 Nutt) Dari segi pengaturcaraan, apa yang diperlukan ialah cara menyimpan maklumat supaya ia dapat dicapai (accessed) pada masa yang akan datang dengan tepat dan secepat mungkin. Sistem Pengendalian (OS) boleh melaksanakan cara menyimpan maklumat sebagai sistem fail atau sebagai ingatan kekal (permanent memory) yang berdasarkan sistem ingatan maya (virtual memory system). Sistem fail adalah yang biasa digunakan oleh OS yang biasa digunakan, di mana pengurusan maklumat (information management) merupakan tanggungjawab aturcara. Sebaliknya, sistem ingatan kekal digunakan untuk sistem spesifik seperti sistem kecerdasan buatan (Artificial Intelligence), pangkalan data berorientasi objek (Object Oriented Database), dan sebagainya. Dalam sistem begitu, tugas menguruskan maklumat adalah tugas OS, aturcara hanya mencipta dan mencapai rekod atau objek dalam ingatan utama (main memory) iaitu ruang ingatan logik (logical address space). OS akan menggunakan sistem ingatan maya (virtual memory system) untuk mengekalkan maklumat di dalam pemacu cakera (disk drive) secara otomatik. 1.2. Fail 1.2.1. Fail stdin, stdout, dan stderr

Dalam sistem UNIX dan DOS, proses boleh mencapai tiga fail secara otomatik: stdin, stdout, dan stderr. Stdin (standard input) menyalurkan input dari peranti input (input device) kepada proses. Biasanya stdin didapati dari papan kekunci (keyboard)

Stdout (standard output) menyalurkan output dari proses kepad peranti output (output device). Biasanya stdout dihantar kepada peranti paparan video (video display device).

Stderr (standard error) mencatatkan ralat (error) yang tertimbul semasa perlaksanaan proses. Biasanya stderr dihantar kepada peranti paparan.

Ketiga-tiga fail ini bolehlah diarahkan (redirected) kepada fail yang lain, yang diurus oleh sistem fail. Contoh, stdout boleh diarahkan kepada fail yang disimpan dalam pemacu cakera (disk drive). Unix mengunakan ciri pengarahan (redirection characteristics) bagi stdin dan stdout untuk melaksanakan penapis (filter) yang disambung dengan paip (pipe). Contoh: $ ls a | wc > filecount.txt 1.2.2. Ciri-ciri Fail

Mempunyai cara rujukan yang sa (non-ambiguous reference) untuk mencapai maklumat yang tersimpan. Contoh: dua fail tidak boleh menggunakan nama yang sama.

Struktur maklumat seperti rekod (record) dan medan (field) boleh diurus oleh sistem fail (fail sistem berstruktur structured file system), ataupun diurus oleh aturcara sendiri (fail sistem aras rendah low level file system). Sistem Fail UNIX dan DOS tidak menguruskan struktur maklumat bagin aturcara, dan menyimpan strim bait (byte stream) sahaja. Strim bait dirujuk melalui ofset kedudukan fail (file position offset) dari permulaan hingga hujung fail.

Mekanisme Perlindungan Fail (file protection mechanism) disediakan oleh Sistem Fail supaya fail hanya dicapai oleh proses dan pengguna yang sah. DOS hanya menyediakan mekanisme perlindungan fail yang asas, manakala UNIX dan NTFS mempunyai mekanisme perlindungan fail yang maju. Hak capaian (access rights) termasuklah capaian baca (read), capain tulis (write) dan capaian perlaksanaan (execute)

Fail masih merupakan struktur logikal (logical structure) dari segi sistem pemacu cakera (disk drive system). Strim bait itu mestilah diterjemah kepada strim blok (block stream) supaya disimpan sebagai storan blok (block storage) dalam pemacu

cakera. (Fig 13.2, pg 379 Nutt) Struktur Pemerihal Fail (file descriptor structure) dikendalikan oleh Sistem Fail untuk menyimpan maklumat mengenai fail tertentu: nama luaran (external name) keadaan semasa (current state) dan berkongsi (sharable) (owner) pengguna (user) kunci (locks) status perlindungan (protection settings) kepanjangan (length) masa ciptaan (time of creation), masa pengubahsuaian (time of modification), dll. Bilangan rujukan (reference count) [Unix]

Pengendalian asas fail (basic file operations) termasuklah open(), close(), read(), write(), seek(byte offset). Unsur yang dibaca atau ditulis ialah bait. 1.3. Fail Berstruktur (structured files) 1.3.1. Fail Jujukan Berrekod (Record oriented Sequential Files)

Capaian fail berdasarkan ofset kedudukan rekod (record position offset). Pengendalian fail termasuklah open(), close(), getRecord(), putRecord(), seek(record offset). Unsur yang dibaca atau ditulis ialah rekod.

Rutin untuk membaca dan menulis rekod (getRecord(), putRecord()), mestilah disediakan oleh aturcara. (Fig 13.4, pg 385 Nutt)

Rutin penukar (conversion routine) antara struktur rekod dan strim bait biasanya tambahkan kepala rekod (record header) kepada unsur rekod; manakala rutin penukar antara strim bait kepada struktur rekod menggunakan kepala rekod untuk menyenangkan pencapaian unsur rekod itu.

1.3.2.

Fail Jujukan Berindeks (Indexed Sequential Files)

Fail jujukan berindeks menambahkan medan indeks (index field) kepada fail berstruktur untuk mencapai rekod spesifik dalam fail (berbanding dengan fail jujukan berrekod).

Tempat (location) rekod dalam fail tidak semestinya disusun mengikut indeksnya. Ini menyenangkan kerja penambahan (add) dan penghapusan (delete) rekod sebab rekod lain dalam fail tidak perlu disusun semula.

Suatu jadual carian (lookup table) dari indeks kepada ofset kedudukan rekod biasanya dicipta dalam ingatan utama (main memory) untuk membolehkan pencapaian rekod tertentu dengan secepat mungkin.

Fail Jujukan berindeks boleh digunakan oleh sistem pangkalan data (database system), tetapi banyak sistem pangkalan data mempunyai sistem pengurusan storan (storage management system) tersendiri untuk mencapai truput yang lebih tinggi berbanding dengan sistem pengurusan fail tujuan am (general file management system). 1.4. Direktori

Dalam setiap peranti storan (storage device) terdapat struktur tertentu untuk menyimpan maklumat mengenai fail. Struktur ini disebut sebagai Direktori (file directory). Struktur direktori terkini adalah merupakan struktur hierarki (hierarchical structure). Direktori mempunyai maklumat mengenai fail dan direktori lain, yang terdapat dalam struktur pepohon (tree strcture), ataupun graf tak berkitar (acyclic graph). (Fig 13.16, pg 409 Nutt) Pepohon Direktori merupakan struktur logik (logical structure) yang boleh merangkumi keseluruhan storan bagi komputer. Ini membolehkan pencapaian semua pemacu cakera dan pemacu lain melalui suatu laluan capain (access path) yang tekal (consistent), seperti dalam Sistem Fail UNIX. Di sebaliknya, pepohon direktori boleh juga merangkumi suatu atau separuh dari pemacu, dimana pemacu dipetakkan (partitioned) kepada beberapa pemacu logik (logical device). Pepohon direktori bagi DOS hanya boleh mencapaikan pemacu secara suatu demi suatu melalui anjakan pemacu (drive letter) bagi pemacu itu.

Direktori dilaksanakan sebagai fail berstruktur (structured file) di mana setiap rekod merupakan pemerihal fail (file descriptor) dan alamat blok bermula (block starting address) bagi fail tersebut. Pengendalian asas direktori (basic directory operations) termasuklah opendir(), closedir(), readdir() bagi UNIX. 1.5. Perlaksanaan Sistem Pengurusan Fail Rendah (Low Level File Management System Implementation) 1.5.1. Storan Fail (file Storage)

Strim bait dibahagikan kepada blok logik berjujuk (sequential logical blocks) yang seterusnya dibahagikan kepada blok fizikal (physical blocks) yang akan disimpan dalam pemacu cakera. Biasanya, Saiz blok logik >= Saiz blok fizikal Oleh sebab saiz fail yang terdapat dalam pemacu cakera akan berubah, dan saiz berbeza diantara fail-fail yang berlainan, maka cara menetapkan peruntukan storan fail (file storage allocation technique) adalah amat penting. Cara-cara yang biasa digunakan ialah: Peruntukan Berdampingan (Contiguous Allocation) Kesemua blok logik berjujuk akan diperuntuk blok fizikal yang berjujuk juga. Ini merupakan cara yang terpantas untuk memperolehi kembali maklumat yang telah disimpan dalam pemacu cakera, tetapi menyusahkan penambahan data kepada fail tersebut jika terdapat fail yang telah diperuntuk blok fizikal yang seterusnya. Peruntukan Paling Cocok (best fit algorithm): nombor blok fizikal bebas (free blocks) r >= nombor blok fizikal yang diperlukan N, di mana (r-N) adalah terkecil di antara set blok fizikal bebas, akan dipilih. Peruntukan Pertama (first fit algorithm): Dengan menggunakan gelintaran linear (linear search), set blok fizikal bebas yang pertama didapati saiznya sama atau lebih besar daripada nombor blok fizikal yang diperlukan, akan dipilih

Peruntukan Paling Tak-cocok (worst fit algorithm): set block fizikal bebas yang mempunyai (r-N) terbesar dipilih.

Masalah peruntukan berdampingan ialah berlakunya penyerpihan pemacu cakera (disk drive fragmentation) di mana saiz blok fizikal bebas berdampingan terlalu kecil untuk digunakan bagi peruntukan fail baru.

Senarai Berpaut (linked list) (Fig 13.10,11, pg 396,397 Nutt) Setiap blok memerlukan penunding (pointer) untuk mencapai blok yang seterusnya. Senarai Berpaut Berganda (doubly linked list) boleh digunakan untuk mempercepatkan capaian kepada blok yang lebih awal dalam fail, tetapi ini memerlukan penunding tambahan. Medan kepanjangan (length field) boleh digunakan untuk menyenangkan tambahan dan hapusan data dalam fail tersebut sebab pengurus fail boleh menyimpan bilangan bait yang berbeza dalam setiap blok jika perlu, dan juga menambah atau menghapuskan blok kepad senarai berpaut. Sekiranya blok mengalami kerosakan data (data corruption), maka fail yang disimpan secara senarai berpaut sehala tidak akan dapat diperbaiki.

Peruntukan Berindeks (Indexed Allocation) (Fig 13.12, pg 398 Nutt) Peruntukan berindeks mengunakan blok indeks (index block) untuk menyimpan penunding blok untuk fail supaya mempercepatkan pencapaian fail. Ruang blok indeks akan dibazirkan jika saiz fail tidak memerlukan bilangan pununding blok yang disediakan. Penyerpihan jadual (table fragmentation) akan berlaku. Fail yang terlalu besar memerlukan blok indeks tambahan untuk menyimpan penunding blok seterusnya. Beberapa cara digunakan untuk melaksanakan blok indeks tambahan, seperti senarai berpaut, dan blok tak terus (indirect block). (Fig 13.13, pg 399 Nutt)

1.5.2.

Pengurusan Ruang Bebas (Free Space Management)

Pengurusan ruang bebas boleh dilaksanakan dengan cara yang sama seperti peruntukan storan fail, di mana suatu senarai berpaut dikendalikan untuk semua blok bebas dalam pemacu cakera.

Walau bagaimanapun, peruntukan blok fizikal yang bersebelahan lebih susah dengan menggunakan senarai berpaut. Biasanya, suatu peta status blok (block status map) atau peta bit (bit map) diggunakan untuk menentukan ruang bebas. Setiap bit dalam peta status blok mewakili satu blok dalam pemacu cakera. Saiz peta bit merangkumi jumlah blok dalam pemacu cakera itu. Contoh: Pemacu Cakera 1GB dengan blok saiz 4KB memerlukan 256K bit (32KB) dalam peta status blok.

Biasanya, peta status blok disimpan dalam ingatan utama supaya ia dapat dicapai dengan segera semasa penambahan dan penghapusan blok diperlukan. 1.5.3. Cache cakera (disk cache)

Cache adalah suatu cara untuk mempercepatkan pencapaian maklumat yang disimpan dalam pemacu cakera. Data yang biasa dicapai, seperti peta status blok, maklumat direktori, dan sebahagian daripada blok fail terbuka boleh disimpan dalam cache supaya pencapaian IO tidak diperlukan seterusnya. Dengan cara ini, CPU tidak perlu tunggu sehingga selesainya pencapaian IO yang mengambil masa yang lama berbandingan dengan pencapaian ingatan utama. Cara penghapusan maklumat dalam cache berdasarkan: FIFO (First In First Out): Cara termudah, tetapi tidak mengira kekerapan kegunaan blok tertentu dalam cache. Contoh: peta status blok seharusnya tidak dihapuskan langsung. LRU (Least Recently Used): Sistem pengurusan fail mestilah menyimpan maklumat tambahan untuk menentukan blok mana yang terkurang dicapai. Jika saiz cache besar, gelintaran blok LRU (search for LRU block) mungkin mengambil masa yang panjang.

Penggunaan cache mestilah menyelesaikan masalah blok kotor (dirty block) yang telah diubah oleh proses tetapi belum tersimpan dalam pemacu cakera. Cara mengatasi masalah ini ialah: Tulis terus (write through): blok akan ditulis ke cakera sebaik sahaja ia diubah oleh proses. Cara ini adalah selamat tetapi tidak begitu berkesan untuk melancarkan perlaksanaan CPU. Tulis bila diganti (write on replacement): blok dalam cache akan ditulis ke cakera bila ia akan diganti oleh blok yang lain. Ia melancarkan perlaksanaan CPU tetapi berbahaya dari segi gangguan elektrik atau kerosakan sistem (system crash). 1.5.4. Fail Peta Ingatan (Memory Mapped Files)

Fail peta ingatan boleh digunakan untuk memudahkan pencapaian data dalam fail, di mana penulisan dan pembacaan data fail dikendalikan sebagai pencapaian ruang ingatan. Dengan cara ini, rutin fail tidak diperlukan untuk mencapai data yang dikehendaki. Kesemua tugas mencapai fail dikendalikan oleh sistem ingatan maya (virtual memory system). Ia juga merupakan cara berkongsi data antara dua proses berlainan. (Fig 13.15, pg 405 Nutt) 2. Perlaksanaan Sistem Fail MINIX Sistem Fail MINIX dilaksanakan sebagai proses dalam ruang user (user space). Ini berbeza dengan kebanyakan perlaksanaan UNIX di mana sistem fail adalah sebahagian daripada proses kernel. MINIX merupakan sistem penyampaian mesej (message passing system). Sistem Fail MINIX menerima mesej berlainan untuk menjalankan tugasnya. (Fig 5-27 pg 455 Tanenbaum) 2.1. Rekabentuk Sistem Fail MINIX 2.1.1. Struktur Peranti Blok (Block Device Structure)

Sistem fail MINIX berdasarkan peranti blok, di mana setiap sistem fail mempunyai struktur yang sama.

(Fig 5-28, pg 456 Tanenbaum) Blok but (boot block): dilaksanakan oleh PC semasa ia mula perlaksanaan. Nombor ajaib (magic number) digunakan untuk menandakan jenis blok but. Superblok (superblock): mberi perihal mengenai bentangan (layout) sistem fail. (Fig 5-29, pg 457 Tanenbaum) Peta Bit I-nod (I-node bitmap): Setiap I-nod diwakili oleh satu bit dalam peta bit I-nod. I-nod yang digunakan mempunyai nilai 1. Jika semua I-nod telah digunakan, I-nod 0 dikembalikan sebagai tanda penuh. Peta Bit Zon (Zone bitmap): Satu zon merupakan satu atau lebih blok yang boleh diperuntukkan kepada fail. Saiz peruntukan fail berdasarkan zon supaya blok yang digunakan bersebelahan (adjacent) sebaik mungkin. Walaubagaimanapun, saiz zon yang besar akan membazirkan ruang storan cakera (disk space) Blok I-nod (I-node blocks): I-nod merakamkan kegunaan zon (zone usage) bagi setiap fail. Setiap I-nod bersaiz 64 bait. Jika fail menggunakan kurang daripada 8 zon, maka fail itu tidak memerlukan blok tambahan untuk merakamkan kegunaan zon yang berlebihan itu. (Fig 5-30, pg 461 Tanenbaum). Blok Data (Data blocks): Merupakan tempat menyimpan maklumat fail. Setiap blok adalah bersaiz 1KB. 2.1.2. Cache Blok (Block Cache)

Suatu cache digunakan untuk mempercepatkan perlaksanaan sistem fail MINIX. Setiap rekod dalam cache mempunyai maklumat mengenai blok cakera yang disusun secara senarai berpaut berganda (doubly linked list) dari Paling Baru Digunakan (Most Recently Used) ke Paling Lama Digunakan (Least Recently Used). (Fig 5-31, pg 462 Tanenbaum) Selain dari itu, suatu jadual cincangan (hash table) direka untuk memudahkan gelinaran untuk blok tertentu. Pencapaian blok akan menokokkan (increment) pembilang blok (block counter) supaya ia tidak dihapuskan sebelum semua proses yang mencapainya tidak memerlukannya lagi.

Pelepasan blok akan menyusut (decrement) pembilang blok. Bila pembilang mencapai nilai 0, maka blok cache itu boleh dihapuskan (deleted). Jika blok dihapuskan, maka status pengubahsuaian blok disemak supaya blok dapat ditulis kepada cakera jika perlu. Kesemua blok yang diubahsuaikan juga ditulis bila panggilan sistem SYNC (SYNC system call) dilaksanakan. 2.1.3. Direktori dan Laluan (directories and paths)

Direktori MINIX merupakan fail dengan rekod saiz 16 bait. 2 bait merupakan nombor Inod, manakala 14 bait seterusnya ialah nama fail. (Fig 5-13,14, pg 421 Tanenbaum) Pencapaian fail tertentu dilaksanakan melalui gelintiran setiap direktori dalam laluan sehingga I-nod fail itu dicapai. Perintah mount melekapkan (mount) sistem fail baru kepada pepohon direktori akar (root directory tree) supaya fail dalam sistem fail baru dapat dicapai sebagai sebahagian pepohon direktori. Superblok dalam ingatan utama digunakan untuk mencatatkan pelekapan sistem fail baru itu. (Fig 5-32, pg 464 Tanenbaum)

You might also like