PROSES
Definisi proses
Secara tidak langsung, proses adalah program yang sedang dieksekusi. Menurut
SilberSchatz, suatu proses adalah lebih dari sebuah kode program, yang
terkadang disebut text section . Proses juga mencakup program counter
, yaitu sebuah stack untuk menyimpan alamat dari instruksi yang akan
dieksekusi selanjutnya dan register. Sebuah proses pada umumnya juga memiliki
sebuah stack yang berisikan data-data yang dibutuhkan selama proses
dieksekusi (seperti parameter method, alamat return dan variabel lokal), dan
sebuah data section yang menyimpan variabel global. Sama halnya dengan
SilberSchatz, Tanenbaum juga berpendapat bahwa proses adalah sebuah program
yang dieksekusi yang mecakup program counter , register, dan variabel di
dalamnya. termasuk
• Suatu program dalam pelaksanaan
• Sebuah contoh dari program yang berjalan pada komputer
• Entitas yang dapat ditugaskan dan dijalankan pada prosesor
• Sebuah unit aktivitas ditandai dengan pelaksanaan suatu urutan instruksi,keadaan saat ini, dan terkait set sumber daya sistem Juga dapat memikirkan suatu proses sebagai entitas yang terdiri dari sejumlah elemen.
• Suatu program dalam pelaksanaan
• Sebuah contoh dari program yang berjalan pada komputer
• Entitas yang dapat ditugaskan dan dijalankan pada prosesor
• Sebuah unit aktivitas ditandai dengan pelaksanaan suatu urutan instruksi,keadaan saat ini, dan terkait set sumber daya sistem Juga dapat memikirkan suatu proses sebagai entitas yang terdiri dari sejumlah elemen.
THREAD
Thread adalah unit dasar dari penggunaan CPU, thread
mengandung Thread ID, program counter , register set , dan stack
. Sebuah Thread berbagi code section , data section , dan sumber
daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama.
Thread juga sering disebut lightweight process . Sebuah proses
tradisional atau heavyweight process mempunyai thread tunggal yang
berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal
dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak
dapat mengerjakan lebih dari satu tugas pada satu satuan waktu.
MUTUAL EXCLUSION
Adalah jaminan hanya satu proses yang mengakses sumber
daya pada suatu interval waktu tertentu. Proses proses yang lain dilarang
mengerjakan hal yang sama. Bagian program yang sedang mengakses memori atau
sumber daya yang dipakai bersama disebut Critical Section/Region. Mutual Exclusion
merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2 proses atau
lebih memasuki Critical Section secara bersamaan. Kesuksesan proses – proses
kongkuren memerlukan pendefinisian Critical Section dan memaksakan Mutual
Exclusion di antara proses-proses kongkuren yang sedang berjalan. Pemaksaan
Mutual Exclusion merupakan landasan pemrosesan kongkuren.
RACE CONDITON
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. Unutk mencegah race condition,
proses-proses yang berjalan besamaan haus 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.
Bayangkan bahwa spooler direktori memiliki slot dengan
jumlah yang sangat besar, diberi nomor 0, 1, 2, 3, 4,… masing-masing dapat
memuat sebuah nama berkas. Juga bayangkan bahwa ada dua variabel bersama, out,
penunjuk berkas berikutnya untuk dicetak, dan in, menunjuk slot kosong di
direktori. Dua vaiabel tersebut dapat menamgami sebuah two-word berkas untuk
semua proses. Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai
dicetak), dan slot 4, 5, 6 sedang terisi (berisi nama dari berkas yang antre
untuk dicetak). Lebih atau kurang secara besamaan, proses A dan B, mereka
memutuskan untuk antre untuk sebuah berkas untuk dicetak.
SINKRONISASI
Koordinasi akses ke shared data, misalkan hanya satu
proses yang dapat menggunakah shared var.
Contoh operasi terhadap var. “counter” harus dijamin
di-eksekusi dalam satu kesatuan (atomik) :
counter := counter +
1;
counter := counter -
1;
Sinkronisasi merupakan “issue” penting dalam
rancangan/implementasi OS (shared resources, data, dan multitasking).
DEADLOCK
eadlock adalah suatu
kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk
melepaskan resource yang sedang dipakai. Karena beberapa proses itu
saling menunggu, maka tidak terjadi kemajuan dalam kerja proses-proses
tersebut. Deadlock adalah masalah yang biasa terjadi ketika banyak
proses yang membagi sebuah resource yang hanya boleh dirubah oleh satu
proses saja dalam satu waktu. Di kehidupan nyata, deadlock dapat
digambarkan dalam gambar berikut.Pada gambar diatas, deadlock
dianalogikan sebagai dua antrian mobil yang akan menyeberangi jembatan. Dalam
kasus diatas, antrian di sebelah kiri menunggu antrian kanan untuk mengosongkan
jembatan (resource), begitu juga dengan antrian kanan. Akhirnya tidak
terjadi kemajuan dalam kerja dua antrian tersebut.Misal ada proses A mempunyai resource
X, proses B mempunyai resource Y. Kemudian kedua proses ini dijalankan
bersama, proses A memerlukan resource Y dan proses B memerlukan resource
X, tetapi kedua proses tidak akan memberikan resource yang dimiliki
sebelum proses dirinya sendiri selesai dilakukan. Sehingga akan terjadi tunggu-menunggu.
STARVATION
Starvation adalah kondisi
yang biasanya terjadi setelah deadlock. Proses yang kekurangan resource
(karena terjadi deadlock) tidak akan pernah mendapat resource
yang dibutuhkan sehingga mengalami starvation (kelaparan). Namun, starvation
juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan
dalam sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu
proses selalu mendapat resource, sedangkan proses yang lain tidak pernah
mendapatkannya. Ilustrasi starvation tanpa deadlock di dunia
nyata dapat dilihat di bawah ini.Pada gambar diatas, pada antrian kanan terjadi
starvation karena resource (jembatan) selalu dipakai oleh antrian
kiri, dan antrian kanan tidak mendapatkan giliran.
MONITOR
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.
- Variabel-variabel data lokal, hanya dapat diakses
oleh prosedur-prosedur dala monitor dan tidak oleh prosedur di luar
monitor.
- Hanya satu proses yang dapat aktif di monitor
pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion).
- Terdapat cara agar proses yang tidak dapat
berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua
operasi, yaitu Wait dan Signal.
- Wait: Ketika prosedur monitor tidak dapat
berkanjut (misal producer menemui buffer penuh) menyebabkan proses
pemanggil diblocked dan mengizinkan proses lain masuk monitor.
- Signal: Proses membangunkan partner-nya yang
sedang diblocked dengan signal pada variabel kondisi yang sedang ditunggu
partnernya.
- Versi Hoare: Setelah signal, membangunkan proses
baru agar berjalan dan menunda proses lain.
- 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.
SEMAPHORE
Jika kita ingin dapat melakukan proses tulis lebih
rumit kita membutuhkan sebuah bahasa untuk melakukannya. Kita akhirnya
medefinisikan semaphore yang kita asumsikan sebagai sebuah operasi atomik.
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 dapat diinisialisasi dengan nilai
non-negatif.
- Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan
asli yang disampaikan Djikstra adalah operasi P dan V.
Sistem Berbagi Memori
Sistem Berbagi Memori atau yang disebut juga sebagai Shared
Memory System merupakan salah satu cara komunikasi antar proses dengan cara
mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses.
Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat
program. Pada metode ini, sistem akan mengatur proses mana yang akan memakai
memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif.
Sistem berkirim pesan adalah proses komunikasi antar
bagian sistem untuk membagi variabel yang dibutuhkan. Proses ini menyediakan
dua operasi yaitu mengirim pesan dan menerima pesan. Ketika dua bagian sistem
ingin berkomunikasi satu sama lain, yang harus dilakukan pertama kali adalah
membuat sebuah link komunikasi antara keduanya. Setelah itu, kedua
bagian itu dapat saling bertukar pesan melalui link komunikasi tersebut.
Sistem
berkirim pesan sangat penting dalam sistem operasi. Karena dapat
diimplementasikan dalam banyak hal seperti pembagian memori, pembagian bus, dan
melaksanakan proses yang membutuhkan pengerjaan bersama antara beberapa bagian
sistem operasi.