Jumat, 23 Januari 2015

Sistem operasi merupakan sebuah penghubung antara pengguna dari komputer dengan perangkat keras komputer. Sebelum ada sistem operasi, orang hanya mengunakan komputer dengan menggunakan sinyal analog dan sinyal digital. Seiring dengan berkembangnya pengetahuan dan teknologi, pada saat ini terdapat berbagai sistem operasi dengan keunggulan masing-masing. Untuk lebih memahami sistem operasi maka sebaiknya perlu diketahui terlebih dahulu beberapa konsep dasar mengenai sistem operasi itu sendiri.

Pengertian sistem operasi secara umum ialah pengelola seluruh sumber-daya yang terdapat pada sistem komputer dan menyediakan sekumpulan layanan (system calls) ke pemakai sehingga memudahkan dan menyamankan penggunaan serta pemanfaatan sumber-daya sistem komputer.

Fungsi Dasar
Sistem komputer pada dasarnya terdiri dari empat komponen utama, yaitu perangkat-keras, program aplikasi, sistem-operasi, dan para pengguna. Sistem operasi berfungsi untuk mengatur dan mengawasi penggunaan perangkat keras oleh berbagai program aplikasi serta para pengguna.Sistem operasi berfungsi ibarat pemerintah dalam suatu negara, dalam arti membuat kondisi komputer agar dapat menjalankan program secara benar. Untuk menghindari konflik yang terjadi pada saat pengguna menggunakan sumber-daya yang sama, sistem operasi mengatur pengguna mana yang dapat mengakses suatu sumber-daya. Sistem operasi juga sering disebut resource allocator. Satu lagi fungsi penting sistem operasi ialah sebagai program pengendali yang bertujuan untuk menghindari kekeliruan (error) dan penggunaan komputer yang tidak perlu.

Sejarah Sistem Operasi
Menurut Tanenbaum, sistem operasi mengalami perkembangan yang sangat pesat, yang dapat dibagi
kedalam empat generasi:
• Generasi Pertama (1945-1955)
Generasi pertama merupakan awal perkembangan sistem komputasi elektronik sebagai pengganti
sistem komputasi mekanik, hal itu disebabkan kecepatan manusia untuk menghitung terbatas dan
manusia sangat mudah untuk membuat kecerobohan, kekeliruan bahkan kesalahan. Pada generasi ini
belum ada sistem operasi, maka sistem komputer diberi instruksi yang harus dikerjakan secara
langsung.
• Generasi Kedua (1955-1965)
Generasi kedua memperkenalkan Batch Processing System, yaitu Job yang dikerjakan dalam satu
rangkaian, lalu dieksekusi secara berurutan.Pada generasi ini sistem komputer belum dilengkapi
sistem operasi, tetapi beberapa fungsi sistem operasi telah ada, contohnya fungsi sistem operasi ialah
FMS dan IBSYS.
• Generasi Ketiga (1965-1980)
Pada generasi ini perkembangan sistem operasi dikembangkan untuk melayani banyak pemakai
sekaligus, dimana para pemakai interaktif berkomunikasi lewat terminal secara on-line ke komputer,
maka sistem operasi menjadi multi-user (di gunakan banyak pengguna sekali gus) dan
multi-programming (melayani banyak program sekali gus).
• Generasi Keempat (Pasca 1980an)
Dewasa ini, sistem operasi dipergunakan untuk jaringan komputer dimana pemakai menyadari
keberadaan komputer-komputer yang saling terhubung satu sama lainnya. Pada masa ini para
pengguna juga telah dinyamankan dengan Graphical User Interface yaitu antar-muka komputer yang
berbasis grafis yang sangat nyaman, pada masa ini juga dimulai era komputasi tersebar dimana
komputasi-komputasi tidak lagi berpusat di satu titik, tetapi dipecah dibanyak komputer sehingga
tercapai kinerja yang lebih baik.

Layanan Sistem Operasi
Sebuah sistem operasi yang baik menurut Tanenbaum harus memiliki layanan sebagai berikut:
pembuatan program, eksekusi program, pengaksesan I/O Device, pengaksesan terkendali terhadap berkas
pengaksesan sistem, deteksi dan pemberian tanggapan pada kesalahan, serta akunting.
Pembuatan program yaitu sistem operasi menyediakan fasilitas dan layanan untuk membantu para
pemrogram untuk menulis program; Eksekusi Program yang berarti Instruksi-instruksi dan data-data

Struktur Komputer
Struktur sebuah sistem komputer dapat dibagi menjadi:
• Sistem Operasi Komputer.
• Struktur I/O.
• Struktur Penyimpanan.
• Storage Hierarchy.
• Proteksi Perangkat Keras.

Sistem Operasi Komputer
Dewasa ini sistem komputer multiguna terdiri dari CPU (Central Processing Unit); serta sejumlah device
controller yang dihubungkan melalui bus yang menyediakan akses ke memori. Setiap device controller
bertugas mengatur perangkat yang tertentu (contohnya disk drive, audio device, dan video display). CPU
dan device controller dapat dijalankan secara bersamaan, namun demikian diperlukan mekanisme
sinkronisasi untuk mengatur akses ke memori.
Pada saat pertama kali dijalankan atau pada saat boot, terdapat sebuah program awal yang mesti
dijalankan. Program awal ini disebut program bootstrap. Program ini berisi semua aspek dari sistem
komputer, mulai dari register CPU, device controller, sampai isi memori.
Interupsi merupakan bagian penting dari sistem arsitektur komputer. Setiap sistem komputer memiliki
mekanisme yang berbeda. Interupsi bisa terjadi apabila perangkat keras (hardware) atau perangkat lunak
(software) minta "dilayani" oleh prosesor. Apabila terjadi interupsi maka prosesor menghentikan proses
yang sedang dikerjakannya, kemudian beralih mengerjakan service routine untuk melayani interupsi
tersebut. Setelah selesai mengerjakan service routine maka prosesor kembali melanjutkan proses yang
tertunda.

Struktur I/O
Bagian ini akan membahas struktur I/O, interupsi I/O, dan DMA, serta perbedaan dalam penanganan
interupsi.

Interupsi I/O
Untuk memulai operasi I/O, CPU me-load register yang bersesuaian ke device controller. Sebaliknya
device controller memeriksa isi register untuk kemudian menentukan operasi apa yang harus dilakukan.
Pada saat operasi I/O dijalankan ada dua kemungkinan, yaitu synchronous I/O dan asynchronous I/O.
Pada synchronous I/O, kendali dikembalikan ke proses pengguna setelah proses I/O selesai dikerjakan.
Sedangkan pada asynchronous I/O, kendali dikembalikan ke proses pengguna tanpa menunggu proses
I/O selesai. Sehingga proses I/O dan proses pengguna dapat dijalankan secara bersamaan.

Struktur DMA
Direct Memory Access (DMA) suatu metoda penanganan I/O dimana device controller langsung
berhubungan dengan memori tanpa campur tangan CPU. Setelah men-set buffers, pointers, dan counters
untuk perangkat I/O, device controller mentransfer blok data langsung ke penyimpanan tanpa campur
tangan CPU. DMA digunakan untuk perangkat I/O dengan kecepatan tinggi. Hanya terdapat satu
interupsi setiap blok, berbeda dengan perangkat yang mempunyai kecepatan rendah dimana interupsi
terjadi untuk setiap byte (word).

Struktur Penyimpanan
Program komputer harus berada di memori utama (biasanya RAM) untuk dapat dijalankan. Memori
utama adalah satu-satunya tempat penyimpanan yang dapat diakses secara langsung oleh prosesor.
Idealnya program dan data secara keseluruhan dapat disimpan dalam memori utama secara permanen.
Namun demikian hal ini tidak mungkin karena:
• Ukuran memori utama relatif kecil untuk dapat menyimpan data dan program secara keseluruhan.
• Memori utama bersifat volatile, tidak bisa menyimpan secara permanen, apabila komputer dimatikan
maka data yang tersimpan di memori utama akan hilang.

Memori Utama
Hanya memori utama dan register merupakan tempat penyimpanan yang dapat diakses secara langsung
oleh prosesor. Oleh karena itu instruksi dan data yang akan dieksekusi harus disimpan di memori utama
atau register.
Untuk mempermudah akses perangkat I/O ke memori, pada arsitektur komputer menyediakan fasilitas
pemetaan memori ke I/O. Dalam hal ini sejumlah alamat di memori dipetakan dengan device register.
Membaca dan menulis pada alamat memori ini menyebabkan data ditransfer dari dan ke device register.
Metode ini cocok untuk perangkat dengan waktu respon yang cepat seperti video controller. Register yang terdapat dalam prosesor dapat diakses dalam waktu 1 clock cycle. Hal ini menyebabkan
register merupakan media penyimpanan dengan akses paling cepat bandingkan dengan memori utama
yang membutuhkan waktu relatif lama. Untuk mengatasi perbedaan kecepatan, dibuatlah suatu
penyangga (buffer) penyimpanan yang disebut cache.

Magnetic Disk
Magnetic Disk berperan sebagai secondary storage pada sistem komputer modern. Magnetic Disk
disusun dari piringan-piringan seperti CD. Kedua permukaan piringan diselimuti oleh bahan-bahan
magnetik. Permukaan dari piringan dibagi-bagi menjadi track yang memutar, yang kemudian dibagi lagi
menjadi beberapa sektor.

Komponen-komponen Sistem
Pada kenyataannya tidak semua sistem operasi mempunyai struktur yang sama. Namun menurut Avi
Silberschatz, Peter Galvin, dan Greg Gagne, umumnya sebuah sistem operasi modern mempunyai
komponen sebagai berikut:
• Managemen Proses.
• Managemen Memori Utama.
• Managemen Secondary-Storage.
• Managemen Sistem I/O.
• Managemen Berkas.
• Sistem Proteksi.
• Jaringan.
• Command-Interpreter system.

Sinkronisasi dan Deadlock

Sinkronisai

Akses bebarengan untuk berbagi dua bersama dapat mengakibatkan inkosistensi data. Pemeliharaan konsistensi data memerlukan mekanisme untuk memastikan eksekusi dari proses kerjasama. Shared memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling banyak n-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N buffer digunakan tidaklah sederhana. Dimisalkan kita memdifikasi producer-consumer code dengan menambahkan suatu variable counter, dimulai dari 0 dan masing-masing waktu tambahan dari suatu item baru diberikan kepada buffer. 

Race Condition

Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Untuk mencegah race condition, proses-proses yang berjalan besamaan harus di disinkronisasi.
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.
Masalah Critical Section
Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kitis akan menggiring kepada race conditions. Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.
Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:
·      Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
·      Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
·      Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
·      Tidak ada proses yang menunggu selamamya untuk masuk critical section.
Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Terdiri dari:
Entry Section: kode yang digunakan untuk masuk ke dalam critical section
Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu  Exit Section: akhir dari critical section, mengizinkan proses lain  Remainder Section: kode istirahat setelah masuk ke critical section.
Solusi ke Masalah Critical-Section
Ada bebrapa Solusi untuk mengatasi masalah Critical Section, yaitu:
·       Mutual exclution
Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada proses lain yang dapat mengeksekusi dalam critical section mereka.
·       Progress
Jika tidak ada proses yang sedang dieksekusi dalam critical section  dan ada beberapa proses yang ingin masuk ke critical section mereka, maka pemilihan proses yang akan masuk ke critical section berikutnya tidak bias ditunda.
·       Bounded Waiting
Suatu keterikatan harus ada pada sejumlah proses yang diijinkan masuk ke critical section mereka, setelah adanya proses yang meminta masuk ke critical section dan sebelum  permintaan itu diterima.
a.      Asumsikan bahwa tiap proses mengeksekusi pada nonzero speed.
b.      Tidak ada asumsi mengenai kecepatan relative dan n proses.
Cara-cara memecahkan masalah
·       Hanya dua proses, Po dan P1
·       Struktur umum dari proses adalah Pi (proses lain Pj)
Bakery Algorithm
Critical section untuk n proses:
a.       Sebelum memasuki critical Section-nya, proses menerima nomor pemilik nomor terkecil memasuki critical section.
b.      Jika proses Pi dan Pj menerima nomor yang sama, jika i < j, maka Pi dilayani duluan, lainnya Pj dilayani duluan (if i< j, then Pi is served first; else Pj is served first).
c.      Skema penomoran selalu menghasilkan angka –angka yang disebutkan satu per satu, yaitu 1,2,3,3,3,3,4,5….
Semaphore
Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yang cocok untuk kebutuhan itu. Variabel khusus untuk penanda ini disebut semaphore.
Semaphore mempunyai dua sifat, yaitu:
i.      Semaphore dapat diinisialisasi dengan nilai non-negatif.
ii.    Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.

Ø  Operasi Down

Operasi ini menurunkan nilai semaphore, jika nilai semaphore menjadi non-positif maka proses yang mengeksekusinya diblocked. Operasi Down adalah atomic, tak dapat diinterupsi sebelaum diselesaikan.Emnurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblocked sebagai instruksi tunggal. Sejak dimulai, tak ada proses alain yang dapat mengakses semaphore sampai operasi selesai atau diblocked.

Ø  Operasi Up

Operasi Up menakkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu tak dapat menyelesaikan operasi Down, maka salah satu dipilih oleh system dan menyelesaikan operasi Down-nya. Urutan proses yang dipilih tidak ditentukan oleh Djikstra, dapat dipilih secara acak. Adanya semaphore mempermudah persoalan mutual exclusion. Skema penelesaian mutual exclusion mempunyai bagan sebagai berikut:
Sebelum masuk critical section, proses melakukan Down. Bila berhasil maka proses masuk ke critical section. Bila tidak berhasil maka proses di-blocked atas semaphore itu. Proses yang diblocked akan dapat melanjutkan kembali bila proses yang ada di critical section keluar dan melakukan opersai up sehingga menjadikan proses yang diblocked ready dan melanjutkan sehingga opersi Down-nya berhasil.

Problem Klasik pada Sinkronisasi

Ada tiga hal yang selalu memjadi masalah pada proses sinkronisasi:
a.    Problem Bounded buffer.
b.    Problem Reades and Writer.
c.    Problem Dining Philosophers.

Monitors

Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tak dapat mengakses struktur data internal dalam monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur internal.
Properti-properti monitor adalah sebagai berikut:
a.    Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dala monitor dan tidak oleh prosedur di luar monitor.
b.    Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion).
c.    Terdapat cara agar proses yang tidak dapat berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua operasi, yaitu Wait dan Signal.
d.   Wait: Ketika prosedur monitor tidak dapat berkanjut (misal producer menemui buffer penuh) menyebabkan proses pemanggil diblocked dan mengizinkan proses lain masuk monitor.
e.    Signal: Proses membangunkan partner-nya yang sedang diblocked dengan signal pada variabel kondisi yang sedang ditunggu partnernya.
f.     Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan menunda proses lain.
g.    Versi Brinch Hansen: Setelah melakukan signal, proses segera keluar dari monitor.
Dengan memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada monitor, monitor menyediakan fasilitas mutual exclusion. Variabel-variabel data dalam monitor hanya dapat diakses oleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya dalam monitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas mutual exclusion dalam mengakses sumber daya itu.
Deadlock
Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi Deadlock ialah suatu kondisi dimana proses tidak berjalan lagi atau tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain, proses lain itu pun sedang menunggu sumber daya yang dipegang olehnya. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set sedang menunggu. Contoh sederhananya ialah pada gambar berikut ini.
Gambar  Deadlock terjadi pada persimpangan jalan
Dalam kasus ini setiap mobil bergerak sesuai nomor yang ditentukan, tetapi tanpa pengaturan yang benar, maka setiap mobil akan bertemu pada satu titik yang permanen (yang dilingkari) atau dapat dikatakan bahwa setiap mobil tidak dapat melanjutkan perjalanan lagi atau dengan kata lain terjadi Deadlock. Kejadian Deadlock selalu tidak lepas dari sumber daya, bahwa hampir seluruhnya merupakan masalah sumber daya yang digunakan bersama-sama. Oleh karena itu, kita juga perlu tahu tentang jenis sumber daya, yaitu: sumber daya dapat digunakan lagi berulang-ulang dan sumber daya yang dapat digunakan dan habis dipakai atau dapat dikatakan sumber daya sekali pakai. Sumber daya ini tidak habis dipakai oleh proses mana pun.Tetapi setelah proses berakhir, sumber daya ini dikembalikan untuk dipakai oleh proses lain yang sebelumnya tidak kebagian sumber daya ini. Contohnya prosesor, Channel I/O, disk, semaphore. Contoh peran sumber daya jenis ini pada terjadinya Deadlock ialah misalnya sebuah proses memakai disk A dan B, maka akan terjadi Deadlock jika setiap proses sudah memiliki salah satu disk dan meminta disk yang lain. Masalah ini tidak hanya dirasakan oleh pemrogram tetapi oleh seorang yang merancang sebuah sistem operasi. Cara yang digunakan pada umumnya dengan cara memperhitungkan dahulu sumber daya yang digunakan oleh proses-proses yang akan menggunakan sumber daya tersebut. Deadlock dari sumber yang dapat dipakai berulang-ulang ialah berkaitan dengan jumlah proses yang memakai memori utama. Ada empat kondisi yang dapat menyebabkan terjadinya deadlock. Keempat kondisi tersebut tidak dapat berdiri sendiri, namun saling mendukung.
1. Mutual exclusion. Hanya ada satu proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses yang memakai sumber daya tersebut.
2. Hold and wait. Proses yang sedang memakai sumber daya boleh meminta sumber daya lagi maksudnya menunggu hingga benar-benar sumber daya yang diminta tidak dipakai oleh proses lain, hal ini dapat menyebabkan kelaparan sumber daya sebab dapat saja sebuah proses tidak mendapat sumber daya dalam waktu yang lama.
3. No preemption. Sumber daya yang ada pada sebuah proses tidak boleh diambil begitu saja oleh proses lainnya. Untuk mendapatkan sumber daya tersebut, maka harus dilepaskan terlebih dahulu oleh proses yang memegangnya, selain itu seluruh proses menunggu dan mempersilahkan hanya proses yang memiliki sumber daya yang boleh berjalan.
4. Circular wait. Kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya.
Sebuah sistem komputer terdiri dari berbagai macam sumber-daya (resources), seperti:
Ø  Fisik (Perangkat, Memori)
Ø  Logika (Lock, Database record)
Ø  Sistem Operasi (PCB Slots)
Ø  Aplikasi (Berkas)
Diantara sumber-daya tersebut ada yang preemptable dan ada juga yang tidak. Sumber-daya ini akan digunakan oleh proses-proses yang membutuhkannya. Mekanisme hubungan dari proses-proses dan sumber-daya yang dibutuhkan/digunakan dapat di diwakilkan dengan graf. Graf adalah suatu struktur diskrit yang terdiri dari vertex dan sisi, dimana sisi menghubungkan vertexvertex yang ada. Berdasarkan tingkat kompleksitasnya, graf dibagi menjadi dua bagian, yaitu simple graf dan multigraf. Simpel graf tidak mengandung sisi paralel (lebih dari satu sisi yang menghubungkan dua vertex yang sama). Berdasarkan arahnya graf dapat dibagi menjadi dua bagian yaitu graf berarah dan graf tidak berarah. Graf berarah memperhatikan arah sisi yang menghubungkan dua vertex, sedangkan graf tidak berarah tidak memperhatikan arah sisi yang menghubungkan dua vertex. Dalam hal ini akan dibahas mengenai implementasi graf dalam sistem operasi. Salah satunya dalah graf alokasi sumber daya. Graf alokasi sumber daya merupakan graf sederhana dan graf berarah. Graf alokasi sumber daya adalah bentuk visualisasi dalam mendeteksi maupun menyelesaikan masalah deadlock. Graf alokasi sumber daya mempunyai komponen- komponen layaknya graf biasa. Hanya saja dalam graf alokasi sumber daya ini, vertex dibagi menjadi dua jenis yaitu:
1. Proses P= {P0, P1, P2, P3,..., Pi,..., Pm}. Terdiri dari semua proses yang ada di sistem. Untuk
proses, vertexnya digambarkan sebagai lingkaran dengan nama prosesnya.
2. Sumber daya R= {R0, R1, R2, R3,..., Rj,..., Rn}. Terdiri dari semua sumber daya yang ada di
sistem. Untuk sumber daya, vertexnya digambarkan sebagai segi empat dengan instansi yang dapat dialokasikan serta nama sumber dayanya.
Sisi, E={Pi®Rj,…, Rj®Pi} terdiri dari dua jenis, yaitu:
a. Sisi permintaan: Pi®Rj Sisi permintaan menggambarkan adanya suatu proses Pi yang meminta
sumber daya Rj.
b. Sisi alokasi: Rj®Pi. Sisi alokasi menggambarkan adanya suatu sumber daya Rj yang
mengalokasikan salah satu instansi-nya pada proses Pi.
Misalkan suatu graph pengalokasian sumber daya dengan ketentuan sebagai berikut:
Himpunan P,R dan E:
• P={P1, P2, P3}
• R={R1, R2, R3, R4}
• E={P1®R1, P2®R3, R1®P3, R2®P2, R2®P1, R3®P3}
Instansi sumber daya:
ü  R1 memiliki satu instansi
ü  R2 memiliki dua instansi
ü  R3 memiliki satu instansi
ü  R4 memiliki tiga instansi
Status Proses:
ü  Proses P1 mengendalikan sebuah instansi R2 dan menunggu sebuah instansi dari R1.
ü  Proses P2 mengendalikan sebuah instansi dari R1 dan R2, dan menunggu sebuah instansi R3
ü  Proses P3 mengendalikan sebuah instansi dari R3.
Pada gambar graph di atas tidak terdapat adanya cycle, sehingga proses tidak mengalami terjadinya deadlock. Sekarang perhatikan graph berikut yang terdapat cycle dan memungkinkan terjadinya deadlock.
Terdapat dua cycle (circuit) pada graph di atas yaitu:
P1®R1®P2®R3®P3®R2®P1 dan P2®R3®P3®R2®P2
Proses P1, P2 dan P3 terjadi deadlock. Proses P2 menunggu R3, dimana sedang dikendalikan oleh P3. Proses P3 di sisi lain sedang menunggu proses P1 dan P2 melepas sumber daya R2. Kemudian P1 menunggu proses P2 melepas sumber daya R1. Sekarang perhatikan graph berikut yang terdapat cycle P1®R1®P3®R2®P1.
Walaupun terdapat cycle namun pada proses-proses tersebut tidak terjadi deadlock. Proses P4 akan melepas instansi sumber daya R2 yang akan dialokasikan untuk proses P3.
Solusi Penanggulangan Deadlock
Add beberapa cara untuk menanggulangi terjadinya deadlock, diantaranya adalah:
ü  Mengabaikan masalah deadlock.
ü  Mendeteksi dan memperbaiki
ü  Penghindaran yang terus menerus dan pengalokasian yang baik dengan menggunakan protocol untuk memastikan sistem tidak pernah memasuki keadaan deadlock. Yaitu dengan deadlock avoidance sistem untuk mendata informasi tambahan tentang proses mana yang akan meminta dan menggunakan sumber daya.
ü  Pencegahan yang secara struktur bertentangan dengan empat kondisi terjadinya deadlock dengan deadlock prevention sistem untuk memastikan bahwa salah satu kondisi yang penting tidak dapat menunggu.
Mengabaikan Masalah Deadlock
Untuk memastikan sistem tidak memasuki deadlock, sistem dapat menggunakan pencegahan deadlock atau penghindaran deadlock. Penghindaran deadlock membutuhkan informasi tentang sumber daya yang mana yang akan suatu proses meminta dan berapa lama akan digunakan. Dengan informasi tersebut dapat diputuskan apakah suatu proses harus menunggu atau tidak. Hal ini disebabkan oleh keberadaan sumber daya, apakah ia sedang digunakan oleh proses lain atau tidak. Metode ini lebih dikenal dengan Algoritma Ostrich. Dalam algoritma ini dikatakan bahwa untuk menghadapi Deadlock ialah dengan berpura-pura bahwa tidak ada masalah apa pun. Hal ini seakanakan melakukan suatu hal yang fatal, tetapi sistem operasi Unix menanggulangi Deadlock dengan cara ini dengan tidak mendeteksi Deadlock dan membiarkannya secara otomatis mematikan program sehingga seakan-akan tidak terjadi apa pun. Jadi jika terjadi Deadlock, maka tabel akan penuh, sehingga proses yang menjalankan proses melalui operator harus menunggu pada waktu tertentu dan mencoba lagi.
Mendeteksi dan Memperbaiki
Caranya ialah dengan cara mendeteksi jika terjadi deadlock pada suatu proses maka dideteksi system mana yang terlibat di dalamnya. Setelah diketahui sistem mana saja yang terlibat maka diadakan proses untuk memperbaiki dan menjadikan sistem berjalan kembali. Jika sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak didukung dengan pendeteksian deadlock serta pencegahannya, maka kita akan sampai pada kondisi deadlock yang dapat berpengaruh terhadap performance sistem karena sumber daya tidak dapat digunakan oleh proses sehingga proses-proses yang lain juga terganggu. Akhirnya sistem akan berhenti dan harus direstart.
Hal-hal yang terjadi dalam mendeteksi adanya Deadlock adalah:
ü  Permintaan sumber daya dikabulkan selama memungkinkan.
ü  Sistem operasi memeriksa adakah kondisi circular wait secara periodik.
ü  Pemeriksaan adanya deadlock dapat dilakukan setiap ada sumber daya yang hendak digunakan oleh sebuah proses.
ü  Memeriksa dengan algoritma tertentu.
Ada beberapa jalan untuk kembali dari Deadlock, yaitu:
ü  Lewat Preemption
Dengan cara untuk sementara waktu menjauhkan sumber daya dari pemakainya, dan memberikannya pada proses yang lain. Ide untuk memberi pada proses lain tanpa diketahui oleh pemilik dari sumber daya tersebut tergantung dari sifat sumber daya itu sendiri. Perbaikan dengan cara ini sangat sulit atau dapat dikatakan tidak mungkin. Cara ini dapat dilakukan dengan memilih korban yang akan dikorbankan atau diambil sumber dayanya untuk sementara, tentu saja harus dengan perhitungan yang cukup agar waktu yang dikorbankan seminimal mungkin. Setelah kita melakukan preemption dilakukan pengkondisian proses tersebut dalam kondisi aman. Setelah itu proses dilakukan lagi dalam kondisi aman tersebut.
ü  Lewat Melacak Kembali
Setelah melakukan beberapa langkah preemption, maka proses utama yang diambil sumber dayanya akan berhenti dan tidak dapat melanjutkan kegiatannya, oleh karena itu dibutuhkan langkah untuk kembali pada keadaan aman dimana proses masih berjalan dan memulai proses lagi dari situ. Tetapi untuk beberapa keadaan sangat sulit menentukan kondisi aman tersebut, oleh karena itu umumnya dilakukan cara mematikan program tersebut lalu memulai kembali proses. Meski pun sebenarnya lebih efektif jika hanya mundur beberapa langkah saja sampai deadlock tidak terjadi lagi. Untuk beberapa sistem mencoba dengan cara mengadakan pengecekan beberapa kali secara periodik dan menandai tempat terakhir kali menulis ke disk, sehingga saat terjadi deadlock dapat mulai dari tempat terakhir penandaannya berada.
ü  Lewat mematikan proses yang menyebabkan Deadlock
Cara yang paling umum ialah mematikan semua proses yang mengalami deadlock. Cara ini paling umum dilakukan dan dilakukan oleh hampir semua sistem operasi. Namun, untuk beberapa sistem, kita juga dapat mematikan beberapa proses saja dalam siklus deadlock untuk menghindari deadlock dan mempersilahkan proses lainnya kembali berjalan. Atau dipilih salah satu korban untuk melepaskan sumber dayanya, dengan cara ini maka masalah pemilihan korban menjadi lebih selektif, sebab telah diperhitungkan beberapa kemungkinan jika si proses harus melepaskan sumber dayanya.
Kriteria pemilihan korban ialah:
ü  Yang paling jarang memakai prosesor
ü  Yang paling sedikit hasil programnya
ü  Yang paling banyak memakai sumber daya sampai saat ini
ü  Yang alokasi sumber daya totalnya tersedkit
ü  Yang memiliki prioritas terkecil

Menghindari Deadlock
Pada sistem kebanyakan permintaan terhadap sumber daya dilakukan sebanyak sekali saja. Sistem sudah harus dapat mengenali bahwa sumber daya itu aman atau tidak (tidak terkena deadlock), setelah itu baru dialokasikan. Ada dua cara yaitu:
ü  Jangan memulai proses apa pun jika proses tersebut akan membawanya pada kondisi deadlock, sehingga tidak mungkin terjadi deadlock karena pada saat akan menuju deadlock, proses sudah dicegah.
ü  Jangan memberi kesempatan pada suatu proses untuk meminta sumber daya lagi jika penambahan ini akan membawa kita pada suatu keadaan deadlock. Jadi diadakan dua kali penjagaan, yaitu saat pengalokasian awal, dijaga agar tidak deadlock dan ditambah dengan penjagaan kedua saat suatu proses meminta sumber daya, dijaga agar jangan sampai terjadi deadlock. Pada sistem deadlock avoidance (penghindaran) dilakukan dengan cara memastikan bahwa program memiliki maksimum permintaan. Dengan kata lain cara sistem ini memastikan terlebih dahulu bahwa sistem akan selalu dalam kondisi aman. Baik mengadakan permintaan awal atau pun saat meminta permintaan sumber daya tambahan, sistem harus selalu berada dalam kondisi aman.
Status Aman
Status ini terjadi jika sistem dapat mengalokasikan sumber daya bagi tiap proses dalam keadaan tertentu dan masih dapat terjadi deadlock. Status aman bukanlah status deadlock, jadi status deadlock merupakan status tidak aman, tetapi tidak selamanya status tidak aman mengakibatkan status deadlock melainkan ada kemungkinan dapat terjadi.

Algoritma Bankir

Algoritma penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama Algoritma Bankir. Model ini menggunakan suatu kota kecil sebagai percontohan dengan suatu bank sebagai sistem operasi, pinjaman sebagai sumber daya dan peminjam sebagai proses yang membutuhkan sumber daya. Deadlock akan terjadi apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan ingin meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang juga belum mengembalikan uang pinjamannya. Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990) adalah sebagai berikut:
ü  Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal eksekusi.
ü  Jumlah proses yang tidak tetap dan berubah-ubah.
ü  Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia kembali.
ü  Proses-proses yang dieksekusi haruslah tidak dibatasi oleh kebutuhan sinkronisasi antar proses.
ü  Algoritma ini menghendaki memberikan semua permintaan selama waktu yang berhingga. 
Mendeteksi Deadlock dan Memulihkan Deadlock
Metode ini mengunakan pendekatan dengan teknik untuk menentukan apakah deadlock sedang terjadi serta proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelah kondisi deadlock dapat dideteksi, maka langkah pemulihan dari kondisi deadlock dapat segera dilakukan. Langkah pemulihan tersebut adalah dengan memperoleh sumber daya yang diperlukan oleh proses-proses yang membutuhkannya. Beberapa cara digunakan untuk mendapatkan sumber daya yang diperlukan, yaitu dengan terminasi proses dan pre-emption (mundur) suatu proses. Metode ini banyak digunakan pada komputer mainframe berukuran besar. 
Terminasi Proses
Metode ini akan menghapus proses-proses yang terlibat pada kondisi deadlock dengan mengacu pada beberapa syarat. Beberapa syarat yang termasuk dalam metode ini adalah, sebagai berikut:
  • Menghapus semua proses yang terlibat dalam kondisi deadlock (solusi ini terlalu mahal).
  • Menghapus satu persatu proses yang terlibat, sampai kondisi deadlock dapat diatasi (memakan banyak waktu).
  • Menghapus proses berdasarkan prioritas, waktu eksekusi, waktu untuk selesai, dan kedalaman dari rollback.

Resources Preemption
Metode ini lebih menekankan kepada bagaimana menghambat suatu proses dan sumber daya, agar tidak terjebak pada unsafe condition.
Beberapa langkahnya, yaitu:
  • Pilih salah satu - proses dan sumber daya yang akan di-preempt.
  • Rollback ke safe state yang sebelumnya telah terjadi.
  • Mencegah suatu proses agar tidak terjebak pada starvation karena metode ini.

MANAJEMEN MEMORI
 Wulandari Tampongangoy (NIM. 10 311 177)
A.    Berdasarkan keberadaan swapping :
1.      Manajemen tanpa swapping.
Manajemen memori tanpa pemindahan citra proses antara memori utama dan disk selama ekseskusi.
2.      Manajemen dengan swapping.
Manajemen memori dengan pemindahan citra proses antara memori utama dan disk selama ekseskusi.

B.     Manajemen Memori Berdasarkan Alokasi Memori
Terdapat dua cara menempatkan informasi ke dalam memori kerja
1.      Alokasi Memori Berurutan (contigouos Allocation)
-    Pada alokasi memori berurutan, setiap proses menempati satu blok tunggal lokasi memori yang berurutan.
-    Kelebihan : sederhana, tidak ada rongga memory bersebaran, proses berurutan dapat dieksekusi secara cepat.
-    Kekurangan : memori boros, tidak dapat disisip apabila tidak ada satu blok memori yang mencukupi.
2.      Alokasi Memori Tak Berurutan (Non Contiguous Allocation)
-    Program / proses ditempatkan pada beberapa sagmen berserakan, tidak perlu saling berdekatan atau berurutan. biasanya digunakan untuk lokasi memori maya sebagai lokasi page-page.
-    Kelebihan : sistem dapat memanfaatkan memori utama secara lebih efisien, dan system operasi masih dapat menyisip protes bila jumlah lubang-lubang memori cukup untuk memuat proses yang akan dieksekusi.
-    Kekurangan : memerlukan pengendalian  yang lebih rumit dan memori jadi banyak berserakan tidak terpakai.
Terdapat 2 manajemen memori:
a)      Manajemen Memori Statis
Dengan pemartisian statis, jumlah, lokasi, dan ukuran prosesdi memori tidak beragam sepanjang waktu secara tetap.
b)     Manajemen Memori Dinamis
Dengan pemartisian dinamis, jumlah, lokasi, dan ukuran proses di memori dapat berseragam sepanjang waktu secara dinamis.
  Wulandari Tampongangoy (NIM. 10 311 177)
MANAJEMEN MEMORI PEMARTISIAN STATIS
Kondisi tanpa swapping :
a.      Monoprogramming
Monoprogramming merupakan manajemen memori paling sederhana, sistem komputer hanya mengijinkan satu program/pemakai berjalan pada satu waktu. Semua sumber daya sepenuhnya dikuasi proses yang sedang berjalan.
Dalam monoprogramming :
1.      Hanya terdapat satu proses pada satu saat, sehingga proses baru akan menimpa proses lama yang sudah selesai eksekusi.
2.      Hanya satu proses mengunakan semua memori.
3.      Pemakai memusatkan program keseluruh memori dari disk atau tape.
4.      Program mengambil kendali seluruh mesin.
Monoprogramming masih dipakai untuk sistem kecil yaitu sistem tempelan (embedded system) yang menempel atau terdapat di sistem lain. Sistem-sistem tempelan menggunakan mikroprosesor kecil, seperti Intel 8051, dan sebagainya. Sistem ini biasanya untuk mengendalikan satu alat sehingga menjadi bersifat intelejen (intelegent devices) dalam menyediakan satu fungsi spesifik. Karena hanya satu fungsi spesifik, dapat diprogram di mikroprosesor dengan memori kecil (1-64 Kb).
Masalah Proteksi Di Monoprogramming
Merupakan cara memproteksi rutin sistem operasi dari penghancuran program pemakai. Program pemakai dapat tersesat sehingga memanipulasi atau menempati ruang memori rutin sistem operasi. Aktivitas program pemakai ini dapat merusak sistem operasi. Untuk mengatasinya Sistem operasi harus diproteksi dari modifikasi program pemakai.
Proteksi ini diimplementasikan menggunakan satu register batas (boundary register) di pemroses. Setiap kali program pemakai mengacu alamat memori dibandingkan register batas untuk memastikan proses pemakai tidak merusak sistem operasi, yaitu tidak melewati nilai register batas.
           
b.      Multiprogramming dengan pemartisian statis
Multiprogramming dapat dilakukan dengan pemartisian statis, yaitu memori dibagi menjadi beberapa sejumlah partisi tetap. Pada partisi-partisi tersebut proses-proses ditempatkan.
Manajemen Memori Multiprogramming
Melibatkan banyak pemakai secara simultan sehingga di memori akan terdapat lebih dari satu proses bersamaan. Oleh karena itu dibutuhkan sistem operasi yang mampu mendukung dua kebutuhan tersebut.
Melakukan dua aktivitas :
1.      Proteksi memori dengan isolasi ruang-ruang alamat secara disjoint (terpisah).
2.      Pemakaian bersama memori.
Memungkinkan proses-proses bekerja sama mengakses daerah memori bersama. Ketika konsep multiprogramming digunakan, pemakaian CPU dapat ditingkatkan.
Multiprogramming Pemartisian Statis,
Terdapat beberapa alasan :
·         Mempermudah pemogram
Pemrogram dapat memecah program menjadi dua proses atau lebih.
·         Agar dapat memberi layanan interaktif ke beberapa orang secara simultan
Untuk itu diperlukan kemampuan mempunyai lebih dari satu proses di memori agar memperoleh kinerja yang baik.
·         Efisiensi penggunaan sumber daya
Bila pada multiprogramming maka proses tersebut diblocked (hanya DMA yang bekerja) dan proses lain mendapat jatah waktu pemroses, maka DMA dapat meningkatkan efisiensi sistem.
·         Eksekusi lebih murah jika proses besar dipecah menjadi beberapa proses kecil
·         Dapat mengerjakan sejumlah job secara simultan
PEMARTISIAN STATIS BERDASARKAN UKURAN
Partisi-partisinya terbagi dua :
1.      Pemartisian menjadi partisi berukuran sama (ukuran semua partisi memori sama), yaitu:
Beberapa proses yang ukurannya kurang atau sama dengan ukuran partisi dimasukkan ke sembarang partisi yang tersedia.
Kelemahan :
-          Bila program berukuran lebih besar dibanding partisi yang tersedia, maka tidak dapat dimuatkan, tidak dapat dijalankan. Pemogram harus mempersiapkan overlay sehingga hanya bagian program yang benar-benar dieksekusi yang dimasukkan ke memori utama dan saling bergantian. Untuk overlay diperlukan sistem operasi yang mendukung swapping.
-          Untuk program yang sangat kecil dibanding ukuran partisi yang ditetapkan, maka banyak ruang yang tak dipakai yang diboroskan,  disebut fragmentasi internal. Kelemahan ini dapat dikurangi dengan partisi-partisi tetap berukuran berbeda.
2.      Pemartisian menjadi partisi-partisi berukuran berbeda, yaitu ukuran semua partisi memori adalah berbeda
Strategi penempatan program ke partisi
DESKRIPSI :
a)      Strategi penempatan pada pemartisian menjadi partisi-partisi berukuran sama. Penempatan proses ke memori dilakukan secara mudah karena dapat dipilih sembarang partisi yang kosong.
b)      Strategi penempatan pada pemartisian menjadi partisi-partisi berukuran berbeda.
Satu antrian untuk tiap partisi (banyak antrian untuk seluruh partisi).
Proses ditempatkan ke partisi paling kecil yang dapat memuatnya.
Keuntungan :
-          teknik ini adalah meminimalkan pemborosan memori.
Kelemahan :
-          dapat terjadi antrian panjang disuatu partisi sementara antrian partisi-partisi lain kosong.
Satu antrian untuk seluruh partisi.
Proses-proses diantrikan di satu antrian tunggal untuk semua partisi. Proses segera ditempatkan di partisi bebas paling kecil yang dapat memuat.
Keunggulan :
-          Lebih fleksibel serta implementasi dan operasi lebih minimal karena hanya mengelola satu antrian.
Kelemahan :
-          Proses dapat ditempatkan di partisi yang banyak diboroskan, yaitu proses kecil ditempatkan di partisi sangat besar.
FRAGMENTASI PADA PEMARTISIAN STATIS
Fragmentasi yaitu Penyiaan/pemborosan memori akan terjadi pada setiap organisasi penyimpanan. Fragmentasi pada pemartisian tetap terdiri dari:
a.      Fragmentasi internal.
Proses tidak mengisi penuh partisi yang telah ditetapkan untuk proses.
b.      Fragmentasi ekstenal.
Partisi dapat tidak digunakan karena ukuran partisi lebih kecil dibanding ukuran proses yang menunggu di antrian, sehingga tidak digunakan
FUNGSI MANAJEMEN MEMORI
1.      Mengelola informasi memori yang dipakai dan tidak dipakai.
2.      Mengalokasikan memori ke proses yang memerlukan.
3.      Mendealokasikan memori dari proses yang telah selesai.
4.      Mengelola swapping antara memori utama dan disk.
DESKRIPSI HIRARKI MEMORI
1.      Pemakaian memori dua tingkat, menggunakan cache memory yang dapat meningkatkan kinerja dan utilisasi memori secara dinamik.
2.      Chace memory merupakan penyimpan berkecepatan tinggi lebih cepat dibanding memori utama.
3.      Chace memory lebih mahal dibanding memori utama, sehingga kapasitas cache relatif kecil. 
ADDRESS BINDING
-          Sebelum eksekusi, program/proses berada di dalam disk, dan pada saat dieksekusi ia perlu berada pada suatu lokasi dalam memori fisik.
-          Address binding adalah menempatkan address relatif program/proses ke dalam address fisik meori (real memory address). Dapat berlangsung dalam salah satu tahapan: kompilasi, load atau eksekusi
TAHAPAN RUNNING PROGRAM
1.      Tahapan Kompilasi : source program (source code) dikompilasi menjadi object module (object code).
2.      Tahapan link & load : object module di-link dengan object module lain menjadi load module (execution code) kemudian di-load ke memori untuk dieksekusi.
3.      Tahapan eksekusi : mungkin juga dilakukan dynamic linking dengan resident library.
ADDRESS BINDING SAAT KOMPILASI
1.      Jika lokasi dari proses sudah diketahui sebelumnya maka saat kompilasi address-address instruksi dan data ditentukan dengan alamat fisik.
2.      Jika terjadi perubahan pada lokasi tersebut maka harus di rekompilasi.
ADDRESS BINDING SAAT LOAD
1.      Code hasil kompilasi masih menunjuk address-address secara relatif, saat di-load address-address disubstitusi dengan alamat fisik berdasar relokasi proses yang diterima.
2.      Jika terjadi perubahan relokasi maka code di-load ulang.
ADDRESS BINDING SAAT EKSEKUSI
1.      Binding (ikatan) bisa dilakukan ulang selama proses
-    Hal ini untuk memungkinkan pemindahan proses dari satu lokasi ke lokasi lain selama run.
2.      Perlu adanya dukungan hardware untuk pemetaan address
-    Contoh : base register dan limit register