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
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.
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