dasar sistem operasi : MANAGEMEN PROSES
DEVELOPER : Khusnul Khotimah
ADVISER : Umam Almuqtashid
KONSEP PROSES
Secara informal;
n proses adalah program dalam eksekusi.
n Suatu proses adalah lebih dari kode program, dimana
kadang kala dikenal sebagai bagian tulisan.
n Proses juga termasuk aktivitas yang sedang terjadi,
sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar
prosesor/ processor's register.
n Suatu proses umumnya juga termasuk process stack,
yang berisikan data temporer (seperti parameter metoda, address yang kembali,
dan variabel lokal) dan sebuah data section, yang berisikan variabel global.
n program itu sendiri bukanlah sebuah proses; suatu
program adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan
didalam disket, sebagaimana sebuah proses dalam suatu entitas aktif, dengan
sebuah program counter yang mengkhususkan pada instruksi selanjutnya
untuk dijalankan dan seperangkat sumber daya/ resource yang berkenaan
dengannya.
Walau dua proses dapat
dihubungkan dengan program yang sama, program tersebut dianggap dua urutan
eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy
yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak
copy dari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan
walau bagian tulisan-text adalah sama, data section bervariasi. Juga adalah
umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja
n Ketika proses bekerja, maka proses tersebut merubah
state (keadaan statis/ asal). Status dari sebuah proses didefinisikan dalam
bagian oleh aktivitas yang ada dari proses tersebut. Tiap proses mungkin adalah
satu dari keadaan berikut ini:
1. New: Proses sedang dikerjakan/ dibuat.
2. Running: Instruksi sedang dikerjakan.
3. Waiting: Proses sedang menunggu sejumlah kejadian untuk
terjadi (seperti sebuah penyelesaian I/O atau penerimaan sebuah tanda/ signal).
4. Ready: Proses sedang menunggu untuk ditugaskan pada sebuah
prosesor.
5. Terminated: Proses telah selsesai melaksanakan tugasnya/
mengeksekusi.
n Istilah-istilah tersebut adalah arbitrer/ berdasar
opini, istilah tersebut bervariasi disepanjang sistem operasi. Keadaan yang
mereka gambarkan ditemukan pada seluruh sistem. Namun, sistem operasi tertentu
juga lebih baik menggambarkan keadaan/ status proses. Adalah penting untuk
menyadari bahwa hanya satu proses dapat berjalan pada prosesor mana pun pada
waktu kapan pun. Namun, banyak proses yang dapat ready atau waiting.
Process
Control Block
n Tiap proses digambarkan dalam sistem operasi oleh
sebuah process control block (PCB) - juga disebut sebuah control
block.
n PCB berisikan banyak bagian dari informasi yang
berhubungan dengan sebuah proses yang spesifik, yaitu :
1. Keadaan proses: Keadaan mungkin, new, ready,
running, waiting, halted, dan juga banyak lagi.
2. Program counter:
Counter mengindikasikan address dari perintah selanjutnya untuk
dijalankan untuk proses ini.
3. CPU register: Register bervariasi dalam jumlah dan
jenis, tergantung pada rancangan komputer. Register tersebut termasuk
accumulator, index register, stack pointer, general-puposes register, ditambah
code information pada kondisi apa pun. Besertaan dengan program counter,
keadaan/ status informasi harus disimpan ketika gangguan terjadi, untuk
memungkinkan proses tersebut berjalan/ bekerja dengan benar setelahnya.
4. Informasi managemen memori: Informasi ini dapat
termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel
page/ halaman, atau tabel segmen tergantung pada sistem memori yang digunakan
oleh sistem operasi.
5. Informasi pencatatan: Informasi ini termasuk jumlah
dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, jumlah job
atau proses, dan banyak lagi.
6. Informasi status I/O: Informasi termasuk daftar dari
perangkat I/O yang di gunakan pada proses ini, suatu daftar open berkas dan
banyak lagi.
n PCB hanya berfungsi sebagai tempat menyimpan/ gudang
untuk informasi apa pun yang dapat bervariasi dari prose ke proses.
KONSEP
PENJADUALAN
n Tujuan dari multiprogramming adalah untuk memiliki
sejumlah proses yang berjalan pada sepanjang waktu, untuk memaksimalkan
penggunaan CPU. Tujuan dari pembagian waktu adalah untuk mengganti CPU diantara
proses-proses yang begitu sering sehingga pengguna dapat berinteraksi dengan
setiap program sambil CPU bekerja. Untuk sistem uniprosesor, tidak akan ada
lebih dari satu proses berjalan. Jika ada proses yang lebih dari itu, yang
lainnya akan harus menunggu sampai CPU bebas dan dapat dijadualkan kembali.
1. Penjadualan
Antrian
Ketika proses
memasuki sistem, mereka diletakkan dalam antrian job. Antrian ini terdiri dari
seluruh proses dalam sistem. Proses yang hidup pada memori utama dan siap dan
menunggu/ wait untuk mengeksekusi disimpan pada sebuah daftar bernama ready
queue. Antrian ini biasanya disimpan sebagai daftar penghubung. Sebuah header
ready queue berisikan penunjuk kepada PCB-PCB awal dan akhir. Setiap PCB
memiliki pointer field yang menunjukkan proses selanjutnya dalam ready queue.
Juga ada antrian lain dalam sistem. Ketika sebuah proses mengalokasikan CPU,
proses tersebut berjalan/bekerja sebentar lalu berhenti, di interupsi, atau
menunggu suatu kejadian tertentu, seperti penyelesaian suatu permintaan I/O.
Pada kasus ini sebuah permintaan I/O, permintaan seperti itu mungkin untuk
sebuah tape drive yang telah diperuntukkan, atau alat yang berbagi, seperti
disket. Karena ada banyak proses dalam sistem, disket bisa jadi sibuk dengan
permintaan I/O untuk proses lainnya. Maka proses tersebut mungkin harus
menunggu untuk disket tersebut. Daftar dari proses yang menunggu untuk
peralatan I/O tertentu disebut sebuah device queue. Tiap peralatan memiliki
device queuenya sendiri
Reprensentasi
umum untuk suatu diskusi mengenai penjadualan proses adalah diagram antrian.
Setiap kotak segi empat menunjukkan sebuah antrian. Dua tipe antrian menunjukan
antrian yang siap dan suatu perangkat device queues. Lingkaran menunjukkan
sumber-sumber yang melayani sistem. Sebuah proses baru pertama-tama ditaruh
dalam ready queue. Lalu menunggu dalam ready queue sampai proses tersebut
dipilih untuk dikerjakan/lakukan atau di dispatched. Begitu proses tersebut
mengalokasikan CPU dan menjalankan/ mengeksekusi, satu dari beberapa kejadian
dapat terjadi.
1. Proses tersebut dapat mengeluarkan sebuah permintaan
I/O, lalu di tempatkan dalam sebuah antrian I/O.
2. Proses tersebut dapat membuat subproses yang baru
dan menunggu terminasinya sendiri.
3. Proses tersebut dapat digantikan secara paksa dari
CPU, sebagai hasil dari suatu interupsi, dan diletakkan kembali dalam ready
queue.
2. Penjadualan
Sebuah proses
berpindah antara berbagai penjadualan antrian selama umur hidupnya. Sistem
operasi harus memilih, untuk keperluan penjadualan, memproses antrian-antrian
ini dalam cara tertentu. Pemilihan proses dilaksanakan oleh penjadual yang
tepat/ cocok. Dalam sistem batch, sering ada lebih banyak proses yang
diserahkan daripada yang dapat dilaksanakan segera. Proses ini dipitakan/
disimpan pada suatu alat penyimpan masal (biasanya disket), dimana proses
tersebut disimpan untuk eksekusi dilain waktu. Penjadualan long term, atau
penjadual job, memilih proses dari pool ini dan mengisinya kedalam memori
eksekusi.
Sebuah proses
dapat mengeksekusi untuk hanya beberapa milidetik sebelum menunggu permintaan
I/O. Seringkali, penjadualan shorterm mengeksekusi paling sedikit sekali setiap
100 milidetik. Karena durasi waktu yang pendek antara eksekusi, penjadualan
shorterm haruslah cepat. Jika memerlukan 10 mili detik untuk menentukan suatu
proses eksekusi selama 100 mili detik, maka 10/(100 + 10) = 9 persen CPU sedang
digunakan (terbuang) hanya untuk pekerjaan penjadualan.
Penjadualan
longterm pada sisi lain, mengeksekusi jauh lebih sedikit. Mungkin ada beberapa
menit antara pembuatan proses baru dalam sistem. Penjadualan longterm
mengkontrol derajat multiprogramming (jumlah proses dalam memori). Jika derajat
multiprogramming stabil, lalu tingkat rata-rata dari penciptaan proses harus
sama dengan tingkat kepergian rata rata dari proses yang meninggalkan sistem.
Maka penjadualan longterm mungkin diperlukan untuk dipanggil hanya ketika suatu
proses meninggalkan sistem. Karena interval yang lebih panjang antara eksekusi,
penjadualan longterm dapat memakai waktu yang lebih lama untuk menentukan
proses mana yang harus dipilih untuk dieksekusi
Adalah
penting bagi penjadualan longterm membuat seleksi yang hati-hati. Secara umum,
kebanyakan proses dapat dijelaskan sebagai I/O bound atau CPU bound. Sebuah
proses I/O bound adalah salah satu yang membuang waktunya untuk mengerjakan I/O
dari pada melakukan perhitungan. Suatu proses CPU-bound, pada sisi lain, adalah
salah satu yang jarang menghasilkan permintaan I/O, menggunakan lebih banyak
waktunya melakukan banyak komputasi daripada yang digunakan oleh proses I/O
bound. Penting untuk penjadualan longterm memilih campuran proses yang baik
antara proses I/O bound dan CPU bound. Jika seluruh proses adalah I/O bound,
ready queue akan hampir selalu kosong, dan penjadualan short term akan memiliki
sedikit tugas. Jika seluruh proses adalah CPU bound, I/O waiting queue akan
hampir selalu kosong, peralatan akan tidak terpakai, dan sistem akan menjadi
tidak imbang. Sistem dengan kinerja yang terbaik akan memiliki kombinasi proses
CPU bound dan I/O bound.
Ide
utama/kunci dibelakang sebuah penjadual medium term adalah kadang kala akan
menguntungkan untuk memindahkan proses dari memori (dan dari pengisian aktif
dari CPU), dan maka untuk mengurangi derajat dari multiprogramming. Dikemudian
waktu, proses dapat diperkenalkan kedalam memori dan eksekusinya dapat dilanjutkan
dimana proses itu di tinggalkan/ diangkat. Skema ini disebut swapping.
Proses di swapped out, dan lalu di swapped in, oleh penjadual
jangka menengah. Swapping mungkin perlu untuk meningkatkan pencampuran
proses, atau karena suatu perubahan dalam persyaratan memori untuk dibebaskan.
3.
Alih Konteks
Mengganti CPU ke proses lain memerlukan
penyimpanan suatu keadaan proses lama (state of old process) dan
kemudian beralih ke proses yang baru. Tugas tersebut diketahui sebagai alih
konteks (context switch). Alih konteks sebuah proses digambarkan dalam
PCB suatu proses; termasuk nilai dari CPU register, status proses dan informasi
managemen memori.
Ketika
alih konteks terjadi, kernel menyimpan konteks dari proses lama kedalam PCB nya
dan mengisi konteks yang telah disimpan dari process baru yang telah terjadual
untuk berjalan. Pergantian waktu konteks adalah murni overhead, karena sistem
melakukan pekerjaan yang tidak perlu. Kecepatannya bervariasi dari mesin ke
mesin, bergantung pada kecepatan memori, jumlah register yang harus di copy,
dan keberadaan instruksi khusus (seperti instruksi tunggal untuk mengisi atau
menyimpan seluruh register). Tingkat kecepatan umumnya berkisar antara 1 sampai
1000 mikro detik
Waktu
alih konteks sangat begantung pada dukungan perangkat keras. Sebagai contoh,
prosesor seperti UltraSPARC menyediakan dua rangkap register. Sebuah alih
konteks hanya memasukkan perubahan pointer ke perangkat register yang ada.
Tentu saja, jika ada lebih proses-proses aktif yang ada dari pada yang ada di
perangkat register, sistem menggunakan bantuan untuk meng-copy data register
pada dan dari memori, sebagaimana sebelumnya. Semakin sistem operasi kompleks,
makin banyak pekerjaan yang harus dilakukan selama alih konteks.
OPERASI PADA PROSES
1.
Pembuatan Proses
Secara umum, suatu proses akan
memerlukan sumber tertentu (waktu CPU, memori, berkas, perangkat I/O) untuk
menyelesaikan tugasnya. Ketika suatu proses membuat sebuah subproses, sehingga
subproses dapat mampu untuk memperoleh sumbernya secara langsung dari sistem
operasi. Induk mungkin harus membatasi sumber diantara anaknya, atau induk
dapat berbagi sebagian sumber (seperti memori berkas) diantara beberapa dari
anaknya. Membatasi suatu anak proses menjadi subset sumber daya induknya mencegah
proses apa pun dari pengisian sistem yang telalu banyak dengan menciptakan
terlalu banyak subproses.
Sebagai tambahan pada berbagai sumber
fisik dan logis bahwa suatu proses diperoleh ketika telah dibuat, data pemula
(masukan) dapat turut lewat oleh induk proses sampai anak proses. Sebagai
contoh, anggap suatu proses yang fungsinya untuk menunjukkan status sebuah
berkas, katakan F1, pada layar terminal. Ketika dibuat, akan menjadi sebagai
sebuah masukan dari proses induknya, nama dari berkas F1, dan akan mengeksekusi
menggunakan kumpulan data tersebut untuk memperoleh informasi yang diinginkan.
Proses tersebut juga mendapat nama dari perangkat luar. Sebagian sistem operasi
melewati sumber-sumber ke anak proses. Pada sistem tersebut, proses baru bisa mendapat
dua berkas terbuka yang baru, F1 dan perangkat terminal dan hanya perlu untuk
mentransfer data antara kedua berkas tersebut.
Ketika suatu proses membuat proses baru,
dua kemungkinan ada dalam term eksekusi:
Induk terus menerus
untuk mengeksekusi secara bersama-sama dengan anaknya.
Induk menunggu sampai
sebagian dari anaknya telah diakhiri/terminasi.
Juga ada dua kemungkinan dalam term dari
address space pada proses baru:
Anak proses adalah
duplikat dari induk proses.
Anak proses memiliki
program yang terisikan didalamnya.
1.Penghentian Proses
1)
Sebuah proses
berakhir ketika proses tersebut selesai mengeksekusi pernyataan akhirnya dan
meminta sistem operasi untuk menghapusnya dengan menggunakan sistem pemanggilan
exit. Pada titik itu, proses tersebut dapat mengembalikan data (keluaran) pada
induk prosesnya (melalui sistem pemanggilan wait) Seluruh sumber-sumber dari
proses-termasuk memori fisik dan virtual, membuka berkas, dan penyimpanan I/O
di tempatkan kembali oleh sistem operasi.
2)
Ada situasi
tambahan tertentu ketika terminasi terjadi. Sebuah proses dapat menyebabkan
terminasi dari proses lain melalui sistem pemanggilan yang tepat (contoh
abort). Biasanya, sistem seperti itu dapat dipanggil hanya oleh induk proses
tersebut yang akan diterminasi. Bila tidak, pengguna dapat secara
sewenang-wenang membunuh job antara satu sama lain. Catat bahwa induk perlu
tahu identitas dari anaknya. Maka, ketika satu proses membuat proses baru,
identitas dari proses yang baru diberikan kepada induknya.
3)
Induk dapat
menterminasi/ mengakhiri satu dari anaknya untuk beberapa alasan, seperti:
Anak telah melampaui
kegunaannya atas sebagaian sumber yang telah diperuntukkan untuknya.
Pekerjaan yang
ditugaskan kepada anak telah keluar, dan sistem operasi tidak memeperbolehkan
sebuah anak untuk meneruskan jika induknya berakhir.
Untuk menentukan kasus pertama, induk
harus memiliki mekanisme untuk memeriksa status anaknya. Banyak sistem,
termasuk VMS, tidak memperbolehkan sebuah anak untuk ada jika induknya telah
berakhir. Dalam sistem seperti ini, jika suatu proses berakhir (walau secara
normal atau tidak normal), maka seluruh anaknya juga harus diterminasi.
Fenomena ini, mengacu pada terminasi secara cascading, yang normalnya
dimulai oleh sistem operasi.
Untuk
mengilustrasikan proses eksekusi dan proses terminasi, kita menganggap bahwa,
dalam UNIX, kami dapat mengakhiri suatu proses dengan sistem pemanggilan exit;
proses induknya dapat menunggu untuk terminasi anak proses dengan menggunakan
sistem pemanggilan wait. Sistem pemanggilan wait kembali ke pengidentifikasi
proses dari anak yang telah diterminasi, maka induk dapat memberitahu
kemungkinanan anak mana yang telah diterminasi. Jika induk menterminasi. Maka,
anaknya masih punya sebuah induk untuk mengumpulkan status mereka dan
mengumpulkan statistik eksekusinya.
HUBUNGAN ANTAR PROSES
1. Proses Kooperatif
Proses yang
bersifat simultan (concurrent) dijalankan pada sistem operasi dapat
dibedakan menjadi yaitu proses independent dan proses kooperatif.
•
Suatu proses
dikatakan independen apabila proses tersebut tidak dapat terpengaruh atau
dipengaruhi oleh proses lain yang sedang dijalankan pada sistem. Berarti, semua
proses yang tidak membagi data apa pun (baik sementara/ tetap) dengan proses
lain adalah independent.
•
Sedangkan proses
kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh
proses lain yang sedang dijalankan dalam sistem. Dengan kata lain, proses
dikatakan kooperatif bila proses dapat membagi datanya dengan proses lain.

Pembagian
informasi: apabila beberapa pengguna dapat tertarik pada bagian informasi yang
sama (sebagai contoh, sebuah berkas bersama), kita harus menyediakan sebuah
lingkungan yang mengizinkan akses secara terus menerus ke tipe dari
sumber-sumber tersebut.
Kecepatan
penghitungan/ komputasi: jika kita menginginkan sebuah tugas khusus untuk
menjalankan lebih cepat, kita harus membagi hal tersebut ke dalam subtask,
setiap bagian dari subtask akan dijalankan secara parallel dengan yang lainnya.
Peningkatan kecepatan dapat dilakukan hanya jika komputer tersebut memiliki
elemen-elemen pemrosesan ganda (seperti CPU atau jalur I/O).
Syarat
lingkungan yang memperbolehkan terjadinya proses kooperatif (lanjutan):
Modularitas:
kita mungkin ingin untuk membangun sebuah sistem pada sebuah model
modular-modular, membagi fungsi sistem menjadi beberapa proses atau threads.
Kenyamanan:
bahkan seorang pengguna individu mungkin memiliki banyak tugas untuk dikerjakan
secara bersamaan pada satu waktu. Sebagai contoh, seorang pengguna dapat
mengedit, memcetak, dan meng-compile secara paralel.
2. Komunikasi Proses
Dalam Sistem
Cara lain untuk
meningkatkan efek yang sama adalah untuk sistem operasi yaitu untuk menyediakan
alat-alat proses kooperatif untuk berkomunikasi dengan yang lain lewat sebuah
komunikasi dalam proses (IPC = Inter-Process Communication).
IPC menyediakan
sebuah mekanisme untuk mengizinkan proses-proses untuk berkomunikasi dan
menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamat yang sama.
IPC adalah
khusus digunakan dalam sebuah lingkungan yang terdistribusi dimana proses
komunikasi tersebut mungkin saja tetap ada dalam komputer-komputer yang berbeda
yang tersambung dalam sebuah jaringan.
IPC adalah
penyedia layanan terbaik dengan menggnakan sebuah sistem penyampaian pesan, dan
sistem-sistem pesan dapat diberikan dalam banyak cara.
2.1. Sistem Penyampaian
Pesan
Fungsi dari
sebuah sistem pesan adalah untuk memperbolehkan komunikasi satu dengan yang
lain tanpa perlu menggunakan pembagian data.
Sebuah fasilitas
IPC menyediakan paling sedikit dua operasi yaitu kirim (pesan) dan terima
(pesan).
Pesan dikirim
dengan sebuah proses yang dapat dilakukan pada ukuran pasti atau variabel. Jika
hanya pesan dengan ukuran pasti dapat dikirimkan, level sistem implementasi
adalah sistem yang sederhana.
Pesan berukuran
variabel menyediakan sistem implementasi level yang lebih kompleks.
2.2. Metode
untuk mengimplementasikan sebuah jaringan dan operasi pengiriman/ penerimaan
secara logika:
1.
Komunikasi
langsung atau tidak langsung.
2.
Komunikasi
secara simetris/ asimetris.
3.
Buffer otomatis atau eksplisit.
4.
Pengiriman
berdasarkan salinan atau referensi.
5.
Pesan berukuran
pasti dan variabel.
2.2.1. Komunikasi
Langsung
Proses-proses
yang ingin dikomunikasikan harus memiliki sebuah cara untuk memilih satu dengan
yang lain. Mereka dapat menggunakan komunikasi langsung/ tidak langsung.
Setiap
proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit
baik penerimaan atau pengirim dari komunikasi tersebut. Dalam konteks ini,
pengiriman dan penerimaan pesan secara primitive dapat dijabarkan sebagai:
1. Send (P, message) - mengirim sebuah pesan ke proses
P.
2. Receive (Q, message) - menerima sebuah pesan dari
proses Q.
2.2.1. Komunikasi
Langsung (Lanjutan)
Sebuah
jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu:
1. Sebuah jaringan yang didirikan secara otomatis
diantara setiap pasang dari proses yang ingin dikomunikasikan. Proses tersebut
harus mengetahui identitas dari semua yang ingin dikomunikasikan.
2. Sebuah jaringan adalah terdiri dari penggabungan dua
proses.
3. Diantara setiap pesan dari proses terdapat tepat
sebuah jaringan.
Pembahasan
ini memperlihatkan sebuah cara simetris dalam pemberian alamat. Oleh karena
itu, baik keduanya yaitu pengirim dan penerima proses harus memberi nama bagi
yang lain untuk berkomunikasi, hanya pengirim yang memberikan nama bagi
penerima sedangkan penerima tidak menyediakan nama bagi pengirim. Dalam konteks
ini, pengirim dan penerima secara sederhana dapat dijabarkan sebagai:
Send
(P, message) - mengirim sebuah pesan kepada proses P.
Receive
(id, message) - menerima sebuah pesan dari semua proses. Variabel id diatur
sebagai nama dari proses dengan komunikasi.
2.2.2. Komunikasi Tidak
Langsung
Dengan
komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/
melalui mailbox (kotak surat) atau terminal-terminal, sebuah mailbox
dapat dilihat secara abstrak sebagai sebuah objek didalam setiap pesan yang
dapat ditempatkan dari proses dan dari setiap pesan yang bias dipindahkan.
Setiap
kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses
dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari mailbox
yang berbeda.
Dua
proses dapat saling berkomunikasi apabila kedua proses tersebut sharing mailbox.
Pengirim
dan penerima dapat dijabarkan sebagai:
1. Send (A, message) - mengirim pesan ke mailbox
A.
2. Receive (A, message) - menerima pesan dari mailbox
A.
2.2.2. Komunikasi Tidak
Langsung (Lanjutan)
Dalam
masalah ini, link komunikasi mempunyai sifat sebagai berikut:
1. Sebuah link dibangun diantara sepasang proses dimana
kedua proses tersebut membagi mailbox.
2. Sebuah link mungkin dapat berasosiasi dengan lebih
dari dua proses.
3. Diantara setiap pasang proses komunikasi, mungkin
terdapat link yang berbeda-beda, dimana setiap link berhubungan pada satu mailbox.
Misalkan
terdapat proses P1, P2 dan P3 yang semuanya share mailbox. Proses P1
mengirim pesan ke A, ketika P2 dan P3 masing-masing mengeksekusi sebuah kiriman
dari A. Proses mana yang akan menerima pesan yang dikirim P1? Jawabannya
tergantung dari jalur yang kita pilih:
4. Mengizinkan sebuah link berasosiasi dengan paling
banyak 2 proses.
5. Mengizinkan paling banyak satu proses pada suatu
waktu untuk mengeksekusi hasil kiriman (receive operation).
6. Mengizinkan sistem untuk memilih secara mutlak proses
mana yang akan menerima pesan (apakah itu P2 atau P3 tetapi tidak keduanya,
tidak akan menerima pesan). Sistem mungkin mengidentifikasi penerima kepada
pengirim.
2.2.2. Komunikasi Tidak
Langsung (Lanjutan)
Mailbox
mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika mailbox
dimiliki oleh proses, maka kita mendefinisikan antara pemilik (yang hanya dapat
menerima pesan melalui mailbox) dan pengguna dari mailbox (yang
hanya dapat mengirim pesan ke mailbox).
Selama
setiap mailbox mempunyai kepemilikan yang unik, maka tidak akan ada
kebingungan tentang siapa yang harus menerima pesan dari mailbox. Ketika
proses yang memiliki mailbox tersebut diterminasi, mailbox akan
hilang. Semua proses yang mengirim pesan ke mailbox ini diberi pesan
bahwa mailbox tersebut tidak lagi ada. Dengan kata lain, mempunyai mailbox
sendiri yang independent, dan tidak melibatkan proses yang lain. Maka sistem
operasi harus memiliki mekanisme yang mengizinkan proses untuk melakukan
hal-hal dibawah ini:
1. Membuat mailbox baru.
2. Mengirim dan menerima pesan melalui mailbox.
3. Menghapus mailbox.
Proses
yang membuat mailbox pertama kali secara default akan memiliki mailbox
tersebut. Untuk pertama kali, pemilik adalah satu-satunya proses yang dapat
menerima pesan melalui mailbox ini.
3. Sinkronisasi
Komunikasi
antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive.
Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive.
Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat
dibloking (nonblocking) - juga dikenal dengan nama sinkron atau
asinkron.
1. Pengiriman yang diblok: Proses pengiriman di blok
sampai pesan diterima oleh proses penerima (receiving process) atau oleh
mailbox.
2. Pengiriman yang tidak diblok: Proses pengiriman
pesan dan mengkalkulasi operasi.
3. Penerimaan yang diblok: Penerima mem blok samapai
pesan tersedia.
4. Penerimaan yang tidak diblok: Penerima mengembalikan
pesan valid atau null.
4. Buffering
Baik
komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses
memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian
tersebut diimplementasikan:
1. Kapasitas nol: antrian mempunyai panjang maksimum 0,
maka link tidak dapat mempunyai penungguan pesan (message waiting).
Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan.
2. Kapasitas terbatas: antrian mempunyai panjang yang
telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak
penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim
pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas
terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada
antrian.
3. Kapasitas tak terbatas: antrian mempunyai panjang
yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak
akan pernah di blok.
THREAD
Thread, atau kadang-kadang disebut proses ringan (lightweight),
adalah unit dasar dari utilisasi CPU. Di dalamnya terdapat ID thread, program
counter, register, dan stack. Dan saling berbagi dengan thread lain dalam
proses yang sama.
1. Konsep Dasar
Secara
informal, proses adalah program yang sedang dieksekusi. Ada dua jenis proses,
proses berat (heavyweight) atau biasa dikenal dengan proses tradisional,
dan proses ringan atau kadang disebut thread.
Thread
saling berbagi bagian program, bagian data dan sumber daya sistem operasi
dengan thread lain yang mengacu pada proses yang sama. Thread terdiri atas ID
thread, program counter, himpunan register, dan stack. Dengan banyak kontrol
thread proses dapat melakukan lebih dari satu pekerjaan pada waktu yang sama.
2. Keuntungan
Tanggap:
Multithreading mengizinkan program untuk berjalan terus walau pun pada
bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi
yang lama/ panjang. Sebagai contoh, multithread web browser dapat mengizinkan
pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload
oleh thread yang lain.
Pembagian
sumber daya: Secara default, thread membagi memori dan sumber daya dari
proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan
aktifitas thread dengan alokasi memori yang sama.
2. Keuntungan
(LANJUTAN)
Ekonomis:
Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal.
Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih
ekonomis untuk membuat threads.
Pemberdayaan
arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan
dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara
parallel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU
biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat
ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di
setiap waktu.
3. User thread
Didukung
oleh kernel dan diimplementasikan oleh thread library ditingkat pengguna.
Library mendukung untuk pembentukan thread, penjadualan, dan managemen yang
tidak didukung oleh kernel.
User
Thread & Kernel Thread
4. Kernel Threads
Kernel
thread didukung secara langsung oleh sistem operasi: pembentukan thread,
penjadualan, dan managemen dilakukan oleh kernel dalam ruang kernel. Karena
managemen thread telah dilakukan oleh sistem operasi, kernel thread biasanya
lebih lambat untuk membuat dan mengelola daripada pengguna thread.
Bagaimana
pun, selama kernel mengelola thread, jika suatu thread di block tehadap sistem
pemanggilan, kernel dapat menjadualkan thread yang lain dalam aplikasi untuk
dieksekusi. Juga, di dalam lingkungan multiprosesor, kernel dapat menjadualkan
thread dalam prosesor yang berbeda. Windows NT, Solaris, dan Digital UNIX
adalah sistem operasi yang mendukung kernel thread.
MULTI THREADING
Model Many to One
Model
many-to-one ini memetakan beberapa tingkatan pengguna thread hanya ke satu buah
kernel thread. Managemen proses thread dilakukan oleh (di ruang) pengguna,
sehingga menjadi efisien, tetapi apabila sebuah thread melakukan sebuah
pemblokingan terhadap sistem pemanggilan, maka seluruh proses akan berhenti (blocked).
Kelemahan dari model ini adalah multihreads tidak dapat berjalan atau bekerja
secara paralel di dalam multiprosesor dikarenakan hanya satu thread saja yang
bisa mengakses kernel dalam suatu waktu.
Model One to One
Model
one-to-one memetakan setiap thread pengguna ke dalam satu kernel thread. Hal
ini membuat model one-to-one lebih sinkron daripada model many-to-one dengan mengizinkan
thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap
sistem pemanggilan; hal ini juga mengizinkan multiple thread untuk berjalan
secara parallel dalam multiprosesor.
Kelemahan
model ini adalah dalam pembuatan thread pengguna dibutuhkan pembuatan
korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread
dapat mempengaruhi kinerja dari aplikasi maka kebanyakan dari implementasi
model ini membatasi jumlah thread yang didukung oleh sistem. Model one-to-one diimplementasikan
oleh Windows NT dan OS/2.
Model Many to Many
Beberapa
tingkatan thread pengguna dapat menggunakan jumlah kernel thread yang lebih
kecil atau sama dengan jumlah thread pengguna. Jumlah dari kernel thread dapat
dispesifikasikan untuk beberapa aplikasi dan beberapa mesin (suatu aplikasi
dapat dialokasikan lebih dari beberapa kernel thread dalam multiprosesor
daripada dalam uniprosesor) dimana model many-to-one mengizinkan pengembang
untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak dapat tercapai
karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.
Model one-to-one
mempunyai konkurensi yang lebih tinggi, tetapi pengembang harus hati-hati untuk
tidak membuat terlalu banyak thread tanpa aplikasi dan dalam kasus tertentu
mungkin jumlah thread yang dapat dibuat dibatasi.
Komentar
Posting Komentar