Category Archives: sistem operasi

Dinamic Loading & Dinamic Linking

Dinamic Loading

Untuk memperoleh utilitas ruang memori, dapat menggunakan dynamic loading. Dengan dynamic loading, sebuah rutin tidak disimpan di memori sampai dipanggil. Semua rutin disimpan pada disk dalam format relocatable load.

Mekanisme dari dynamic loading adalah program utama di-load dahulu dan dieksekusi. Bila suatu routine perlu memanggil routine lain, routine yang dipanggil lebih dahulu diperiksa apakah rutin yang dipanggil sudah di-load. Jika tidak, relocatable linking loader dipanggil untuk me-load  rutin yg diminta ke memori dan meng-ubah tabel alamat.

Keuntungan dari  dynamic loading adalah rutin yang tidak digunakan tidak pernah di-load. Skema ini lebih berguna untuk kode dalam jumlah besar diperlukan untuk menangani kasus-kasus yang jarang terjadi seperti error routine. Dinamic loading tidak memerlukan dukungan khusus dari sistem operasi.  istem operasi hanya perlu menyediakan beberapa rutin pustaka untuk implementasi dynamic loading.

Dinamic Linking

Sebagian besar sistem operasi hanya men-support static linking, dimana sistem library language diperlakukan seperti obyek modul yang lain dan dikombinasikan dengan loader ke dalam binary program image. Konsep dynamic linking sama dengan dynamic loading. Pada saat loading, linking ditunda sampai waktu eksekusi. Terdapat kode kecil yang disebut stub digunakan untuk meletakkan rutin library di memori dengan tepat. Stub diisi dengan alamat rutin dan mengeksekusi rutin. Sistem operasi perlu memeriksa apakah rutin berada di alamat memori.

Dinamic linking  biasanya digunakan dengan sistem  library, seperti language subroutine library. Tanpa fasilitas ini, semua program pada sistem perlu mempunyai copy dari library language di dalam  executable image. Kebutuhan ini menghabiskan baik ruang disk maupun memori utama.

Bagaimanapun, tidak seperti dynamic loading, dynamic linking membutuhkan beberapa dukungan dari sistem operasi, misalnya bila proses-proses di memori utama saling diproteksi, maka sistem operasi melakukan pengecekan apakah rutin yang diminta berada diluar ruang alamat. Beberapa proses diijinkan untuk mengakses memori pada alamat yang sama. File dynamic linking berekstensi .dll, .sys atau .drv.

Overlay & Swapping

Overlay

Sebuah proses dapat lebih besar daripada jumlah memori yang dialokasikan untuk proses, teknik overlay biasanya digunakan untuk kasus ini. Teknik Overlay biasanya digunakan untuk memungkinkan sebuah proses mempunyai jumlah yang lebih besar dari memori fisik daripada alokasi memori yang diperuntukkan. Ide dari overlay adalah menyimpan di memori hanya instruksi dan data yang diperlukan pada satu waktu. Jika intruksi lain diperlukan, maka instruksi tersebut diletakkan di ruang memori menggantikan instruksi yang tidak digunakan lagi.

Overlay tidak membutuhkan dukungan khusus dari sistem operasi. User dapat mengimplementasikannya secara lengkap menggunakan struktur file sederhana, membaca dari file ke memori dan meloncat ke memori dan mengeksekusi instruksi read yang lebih baru. Sistem operasi memberitahu hanya jika terdapat I/O yang melebihi biasanya. Penggunaan overlay terbatas untuk beberapa sistem yang mempunyai jumlah memori fisik terbatas dan kekurangan dukungan H/W untuk teknik yang lebih lanjut.

Swapping

Swapping adalah suatu proses yang dapat dialihkan sementara dari memori ke suatu tempat penyimpanan, dan dipanggil kembali ke memori jika akan melanjutkan eksekusi. Sebuah proses harus berada di memori untuk dieksekusi. Proses juga dapat ditukar (swap) sementara keluar memori ke backing store dan kemudian dibawa kembali ke memori untuk melanjutkan eksekusi.

Backing store berupa disk besar dengan kecepatan tinggi yang cukup untuk meletakkan copy dari semua memory image untuk semua user, sistem juga harus menyediakan akses langsung ke memory image tersebut. Jika proses mempunyai prioritas lebih tinggi datang dan meminta layanan, memori akan swap out proses dengan prioritas lebih rendah sehingga proses dengan prioritas lebih tinggi dapat di-load dan dieksekusi.

Umumnya sebuah proses yang di-swap out akan menukar kembali ke ruang memori yang sama dengan sebelumnya. Jika proses pengikatan dilakukan pada saat load-time, maka proses tidak dapat dipindah ke lokasi yang berbeda. Tetapi, jika pengikatan pada saat execution-time , maka kemungkinan proses ditukar ke ruang memori yang berbeda, karena alamat fisik dihitung selama waktu eksekusi.

Bila CPU scheduler memutuskan untuk mengeksekusi proses, OS memanggil dispatcher. Dispatcher memeriksa untuk melihat apakah proses selanjutnya pada ready queue ada di memori. Jika tidak dan tidak terdapat cukup memori bebas, maka dispatcher swap out sebuah proses yang ada di memori dan swap in proses tersebut. Kemudian reload register ke keadaan normal.

Static Partitions & Dynamic Partitions

Static Partitions (partisi tetap) adalah apabila memori dipartisi menjadi blok-blok yang ukurannya ditentukan dari awal. Terbagi lagi atas partisi tetap berukuran sama, dan partisi tetap berukuran berbeda.

Dynamic Partitions (partisi dinamis) adalah memori dipartisi menjadi bagian-bagian dengan jumlah dan besar yang tidak tentu.

Memory Fisik & Virtual Memory

Memori fisik merupakan istilah generik yang merujuk pada media penyimpanan data sementara pada komputer. Setiap program dan data yang sedang diproses oleh prosesor akan disimpan di dalam memori fisik. Data yang disimpan dalam memori fisik bersifat sementara, karena data yang disimpan di dalamnya akan tersimpan selama komputer tersebut masih dialiri daya (dengan kata lain, komputer itu masih hidup). Ketika komputer itu direset atau dimatikan, data yang disimpan dalam memori fisik akan hilang. Oleh karena itulah, sebelum mematikan komputer, semua data yang belum disimpan ke dalam media penyimpanan permanen (umumnya bersifat media penyimpanan permanen berbasis disk, semacam hard disk atau floppy disk), sehingga data tersebut dapat dibuka kembali pada lain waktu.

Memori fisik umumnya diimplementasikan dalam bentuk Random Access Memory (RAM), yang bersifat dinamis (DRAM). Mengapa disebut Random Access, adalah karena akses terhadap lokasi-lokasi di dalamnya dapat dilakukan secara acak (random), bukan secara berurutan (sekuensial). Meskipun demikian, kata random access dalam RAM ini sering menjadi salah kaprah. Sebagai contoh, memori yang hanya dapat dibaca (ROM), juga dapat diakses secara random, tetapi ia dibedakan dengan RAM karena ROM dapat menyimpan data tanpa kebutuhan daya dan tidak dapat ditulisi sewaktu-waktu. Selain itu, hard disk yang juga merupakan salah satu media penyimpanan juga dapat diakses secara random, tapi ia tidak digolongkan ke dalam Random Access Memory.
Memori virtual merupakan suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Menyediakan memori virtual yang sangat besar diperuntukkan untuk programmer bila tersedia memori fisik yang lebih kecil.

Konsep memori virtual yang dikemukakan Fotheringham pada tahun 1961 pada sistem komputer Atlas di Universitas Manchester, Inggris:
Kecepatan maksimum eksekusi proses di memori virtual dapat sama, tetapi tidak pernah melampaui kecepatan eksekusi proses yang sama di sistem tanpa menggunakan memori virtual.

Keuntungan Memori Virtual:

  • Lalu lintas I/O menjadi rendah.
  • Berkurangnya memori yang dibutuhkan.
  • Meningkatnya respon.
  • Bertambahnya jumlah user yang dapat dilayani.
  • Memori virtual melebihi daya tampung dari memori utama yang tersedia.

Untuk mengimplementasikan memori maya tersebut dapat dilakukan dengan tiga cara:

  • Sistem Paging.
  • Sistem Segmentasi.
  • Sistem kombinasi Paging dan Segmentasi.

Manajemen Buffer

Single Buffering

Gambar di atas menunjukkan struktur data dari buffer dalam bentuk yang sederhana, yang terdiri dari satu record per-block dan satu buffer per-berkas,dimana buffer ini berfungsi mengisikan permintaan dari sebuah program. Struktur buffer ini berisi sebuah pointer pada alamat awal & channel program untuk berkas.
Struktur dasar dari channel program untuk mengisi buffer:

  • Tunggu instruksi READ dari program.
  • Memberitahukan instruksi start I/O ke unit kontrol.
  • Tunggu hingga buffer dikosongkan.
  • Memberitahukan interupsi pada program sehingga dapat mulai membaca dari buffer.

Masalah yang timbul di sini adalah pemakai program menganggur pada saat menunggu buffer diisi.

Anticipatory Buffering
Pendekatan lain yang dapat menghilangkan beberapa hal yang mungkin untuk menunggu CPU adalah dengan menggunakan Anticipatory Buffering.
Dengan anticipatory buffering, sistem kontrol I/O akan berusaha mendahulukan kebutuhan program akan data. Diusahakan agar buffer selalu penuh. Channel selalu menguji flag ini. Jika buffer mendekati kosong, karena pemakai program telah membaca isinya maka flag itu akan direset dan channel program akan menginitates pengisian kembali buffer.
Struktur dasar channel program untuk mengisi sebuah buffer dengan anticipatory buffer diperlihatkan pada gambar di bawah ini:

Double Buffering
Untuk mengurangi kemungkinan dari program menunggu, maka double buffer dapat digunakan. Dua dari tempat buffer yang ada, hanya satu yang ditetapkan untuk berkas.
Ide dasar dari double buffering adalah jika consumer mengosongkan salah satu buffer, maka producer dapat mengisikan ke dalam buffer yang lain, pada saat buffer pertama sudah kosong, maka buffer yang kedua harus dalam keadaan penuh. Kemudian consumer dapat mengkosongkan buffer yang kedua, pada saat producer mengisi buffer yang pertama, demikian seterusnya.

Three Buffers

pfill : yang menunjukkan buffer berikutnya akan diisi atau sedang diisi
pempty : yang menunjukkan buffer berikutnya akan dikosongkan atau sedang dikosongkan

Manajemen Input/Output

Prinsip Software I/O
Ide Dasar : mengorganisasikan software dalam beberapa layer dimana level bawah menyembunyikan akses/kepelikan hardware untuk level diatasnya. Level atas membuat interface yang baik ke user.

Tujuan Software I/O

  1. Konsep dalam desain software I/O.
  2. Penamaan yang seragam/Uniform Naming. Contoh : seluruh disks dapat dibuat dengan hirarki sistem file (menggunakan NPS).
  3. Penanganan kesalahan/Error Handling. Contoh : pertama controller, device driver, dst. Dan jika tidak bisa ditangani beri pesan.
  4. Synchronous (blocking) vs Asynchronous (Interrupt Driver) transfer.
  5. Sharable vs Dedicated Device. Contoh : disk untuk sharable dan printer untuk dedicated.

Interrupt Handler
Interrupt harus disembunyikan agar tidak terlihat rutin berikutnya. Device driver di blok saat perintah I/O diberikan dan menunggu interupsi. Ketika interupsi terjadi, prosedur penanganan interupsi bekerja agar device driver keluar dari state blocked.

Device Drivers
Seluruh kode device dependent terletak di device driver. Tiap device driver menangani satu tipe/satu kelas device. Tugas dari device driver untuk menerima permintaan abstrak dari software device independent diatasnya dan melakukan layanan sesuai permintaan/mengeksekusinya.

Setiap device driver menangani satu tipe peralatan. Device driver bertugas
menerima permintaan abstrak perangkat lunak device independent di atasnya
dan melakukan layanan sesuai permintaan itu.

Mekanisme kerja device driver:

  1. Menerjemahkan perintah-perintah abstrak menjadi perintah-perintah konkret.
  2. Begitu telah dapat ditentukan perintah-perintah yang harus diberikan ke pengendali, device driver mulai menulis ke register-register pengendali peralatan.
  3. Setelah operasi selesai dilakukan peralatan, device driver memeriksa kesalahan-kesalahan yang terjadi.
  4. Jika semua berjalan baik, device driver melewatkan data ke perangkat lunak device independent.
  5. Device melaporkan informasi status sebagai pelaporan kesalahan ke pemanggil.

Device-Independent I/O Software
I/O device-independent adalah software I/O yang tak bergantung pada perangkat keras.

Fungsi dari software I/O device-independent yang biasa dilakukan:

  1. Interface seragam untuk seluruh device-driver.
  2. Penamaan device.
  3. Proteksi device.
  4. Memberi ukuran blok device agar bersifat device-independent.
  5. Melakukan Buffering.
  6. Alokasi penyimpanan pada blok devices.
  7. Alokasi dan pelepasan dedicated devices.
  8. Pelaporan kesalahan.

User-Space I/O Software
Sebagian besar software I/O berada di dalam sistem operasi yang di link dengan user program.
System call termasuk I/O, biasanya dalam bentuk prosedur (library procedures). Contoh : count = write(fd, buffer, nbytes)
I/O prosedur dengan level lebih tinggi. Contoh : printf (memformat output dahulu kemudian panggil write)
Yang tidak mempunyai library procedure. Contoh : spooling directory dan daemon (proses khusus) pada proses mencetak, transfer file, USENET.

Kata Kunci Manajemen I/O
Block-Oriented Device ( Perangkat Berorientasi Blok )
Yaitu perangkat berorientasi blok menyimpan informasi dan menukarkan (menerima/mengirim) informasi sebagai blok-blok berukuran tetap.
Character Stream Oriented Device ( Perangkat Berorientasi Aliran Karakter )
Yaitu perangkat yang mengantarkan atau menerima aliran karakter tanpa peduli membentuk sustu struktur blok.
Clock
Yaitu perangkat yang tidak termasuk dalam kategori block-oriented device dan character stream oriented device yang artinya tidak teralamati secara blok dan juga tidak menghasilkan atau menerima aliran karakter. Clock hanya menyebabkan interupsi pada interval-interval yang didefinisikan.
Memory-MappTebaled Screen
Yaitu perangkat yang tidak tergolong dalam kategori Block-Oriented device dan Character Stream Oriented device.
I/O Device Independence
Yaitu konsep dimana membuat perangkat lunak masukkan / keluaran yang tidak bergantung perangkat keras.
I/O Programmed ( Masukkan / Keluaran Terprogram ) / polling system
Yaitu perangakat masukkan atau keluaran yang dimana pada saat menangani permintaan, perangkat men-set bit status di register status perangkat. Perangkat tidak memberitahu ke pemproses saat tugas telah selesai dilakukan. Dan proses harus selalu memeriksa register status perangkat secara priodik dan melakukan tindakan berdasar status yang dibaca.
Interrupt Driven
Yaitu suatu teknik masukkan/keluaran dituntun interupsi yang mempunyai mekanisme kerja perangkat masukkan/keluaran untuk meningkatkan efesiensi pemproses.
DMA ( Direct Memory Access )
Yaitu perangkat masukkan atau keluaran yang dikendalikan oleh interupsi lebih efisien dibanding masukkan atau kleuaran terprogram, tapi masih memerlukan intervensi aktif pemproses untuk transfer data antara memory dan buffer perangkat masukkan atau keluaran.
Device Driver
Yaitu tempat kode perangkat ditempatkan, yang bertugas menerima permintaan abstrak perangkat lunak device-independent diatasnya dan melakukan layanan sesuai permintaan.
DMA Controller
Yaitu DMA yang mengatur pengiriman informasi atau mentransfer data yang diminta dari dan ke memori secara langsung tanpa melewati pemproses.
Intelegent Device
Yaitu perangkat masukkan atau keluaran yang berintelejen setelah pemproses mengendalikan perangkat tersebut secara langsung yang dimana dari perangkat yang sederhana dikendalikan oleh mikroprosessor menjadi perangkat yang berintelejen.
Uniform Naming ( Penamaan Yang seragam )
Yaitu salah satu masalah yang ada pada manajemen masukkan atau keluaran. Misalkan nama berkas atau perangkat adalah string atau integer, tidak bergantung pada perangkat sama sekali.
Asyncrhronous Transfer
Yaitu I/O yang dimana pemproses mulai teransfer dan mengabaikan untuk melakukan kerja lain sampai interupsi tiba.

Syncrhonous Transfer
Yaitu I/O yang dimana pemproses mulai transfer dan tidak mengabaikan kerja lain saat interupsi tiba. Program pemakai sangat lebih mudah ditulis jika operasi masukkan atau keluaran berorientasi blok. Setelah perintah read, program kemudian ditunda secara otomatis sampai data tersedia di buffer.
Sharable
Yaitu perangkat yang dapat dipakai bersama pada suatu saat contohnya disk.
Dedicated
Yaitu Perangkat yang hanya satu pemakai yang dibolehkan memakai pada suatu saat. Contohnya printer.
Interrupt Handler
Interupsi harus disembunyikan agar tidak terrlihat rutin berikutnya. Device driver di blocked saat perintah masukkan atau keluara diberikan dan menunggu interupsi. Ketika interupsi terjadi, procedure penanganan interupsi bekerja agar device driver keluar dari state blocked.
Reading Ahead atau anticipated input
Yaitu teknik dimana transfer masukkan dibuat ke buffer system, ketika transfer selesai proses memindahkan blok ke ruang pemakai dan segera meminta blok lain.
Line–at–a–time mode
Yaitu proses pemakai tidak perlu ditunda untuk masukkan atau keluaran kecuali proses secepatnya mengosongkan buffer ganda.
Byte–at–a–time mode
Yaitu buffer ganda tidak member keunggulan berarti atas buffer tunggal. Double buffering mengikuti model producer-consumer.

Sistem Penyimpanan Disk

Struktur Disk
Disk drive dialamatkan pada array 1 dimensi dalam bentuk blok logik, dimana blok logik merupakan unit transfer terkecil. Array 1 dimensi dalam blok logik dipetakan ke dalam sektor pada sekuensial disk. Sector 0 adalah sector pertama pada track pertama dari bagian luar silinder. Pemetaan diproses melalui track, kemudian bergerak dari track terluar silinder ke track terdalam.

Penjadwalan Disk
Sistem operasi bertanggung jawab dalam hal efisiensi hardware untuk disk drive berarti dalam hal kecepatan akses dan bandwith disk.
Waktu akses secara umum terbagi ke dalam:

  • Seek time yaitu waktu disk untuk menggerakkan head ke silinder untuk mencapai sektor yang diinginkan.
  • Rotational latency waktu tunggu disk untuk berputar mengelilingi sektor ke head disk.

Manajemen Disk

  • Low-level formatting, or physical formatting. Membagi disk ke dalam sektor dimana disk controller dapat membaca dan menulis.
  • Untuk menggunakan file yang disimpan pada disk, sistem operasi membutuhkan record dari struktur data yang ada pada disk

– Partisi disk ke dalam satu atau lebih kelompok silinder.
– Logical formatting atau buat suatu sistem.

  • Boot block Menginisialisasi Sistem

– Bbootstrap disimpan di ROM.
– Program Bootstrap loader.

  • Metode sector sparing digunakan untuk menangani blok yang rusak.

Manajemen Swap-Space

  • Swap-space. Virtual menggunakan disk space sebagai perpanjangan (atau space tambahan) dari memori utama.
  • Swap-space berusaha agar file sistem secara normal dapat dipisahkan dalam partisi disk.

Reliability

  • Disk drive lebih reliable daripada removable disk atau tape drive.
  • Optical cartridge lebih reliable daripada magnetik disk atau tape.
  • Head crash pada fixed hard disk secara umum merusak data,A head crash in a fixed hard disk generally destroys the data, sedangkan kegagalan tape drive atau optical disk drive sering meninggalkan data data cartridge tanpa cacat