BAB II
PROSES & THREAD
A.
Definisi
Proses
Menurut Silberschatz proses tidak hanya sekadar
suatu kode program (text section), melainkan meliputi beberapa aktivitas
yang bersangkutan seperti program counter dan stack. Sebuah
proses juga melibatkan stack yang berisi data sementara (parameter
fungsi/metode, return address, dan variabel lokal) dan data section yang menyimpan variabel-variabel
global. Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang
dieksekusi yang mencakup program counter, register, dan variabel di
dalamnya.
Sistem Operasi mengeksekusi
proses dengan dua cara :
Ü Batch
System yang mengeksekusi jobs
Ü Time-shared
System yang mengatur pengeksekusian program pengguna (user)
atau tasks.
Proses dapat didefinisikan
sebagai program yang sedang berjalan/dieksekusi. Proses merupakan unit kerja
terkecil yang memiliki sumberdaya-sumberdaya dan dijadwalkan oleh sistem
operasi.
B.
Penciptaan
dan Terminasi Proses
1.
Penciptaan
Proses
Aktivitas
penciptaan proses antara lain :
a.
Menamai proses yang akan diciptakan dengan memberi prosess id
b.
Menyisipkan proses pada senarai proses atau tabel
c.
Menentukan prioritas awal proses
d.
Menciptakan Process Control Block (PCB)
e.
Mengalokasikan sumber daya-sumber daya awal bagi proses
Penyebab terjadinya
penciptaan proses :
a.
Tanggapan atas pemberian job di lingkungan batch
b.
Pemakai baru berusaha log in pada lingkungan interaktif
c.
Tanggapan dari permintaan yang dilakukan aplikasi
d.
Proses menciptakan proses lain (child process)
2.
Terminasi
Proses
Suatu
proses diterminasi ketika proses tersebut telah selesai mengeksekusi perintah
terakhir serta meminta sistem operasi untuk menghapus perintah tersebut dengan
menggunakan system call exit. Pada saat itu, proses
dapat mengembalikan data keluaran kepada proses induk-nya melalui system call
wait. Semua sumber-daya yang digunakan oleh proses akan
dialokasikan kembali oleh sistem operasi agar dapat dimanfaatkan oleh proses
lain. Suatu proses juga dapat diterminasi dengan sengaja oleh proses lain
melalui system call abort. Biasanya proses induk
melakukan hal ini pada turunannya. Alasan terminasi tersebut seperti:
ü
Turunan melampaui penggunaan sumber-daya yang telah
dialokasikan. Dalam keadaan ini, proses induk perlu mempunyai mekanisme untuk
memeriksa status turunannya-nya.
ü
Task yang ditugaskan kepada turunan tidak lagi diperlukan.
ü
Proses induk selesai, dan sistem operasi tidak mengizinkan
proses turunan untuk tetap berjalan. Jadi, semua proses turunan akan berakhir
pula. Hal ini yang disebut cascading termination
C.
Status
Proses
1.
New : Status yang dimiliki saat proses baru saja
dibuat
2.
Ready : Status yang dimiliki saat proses siap untuk
dieksekusi
3.
Running : Instruksi-instruksi sedang dieksekusi
4.
Waiting : Status yang dimiliki saat proses menunggu
sebuah event
5.
Terminated : Status yang dimiliki proses ketika proses
telah selesai dieksekusi
Diagram State Proses
Ready
|
Running
|
Blocked
|
Submit
|
Dispatch
|
Completed
|
Timeout
|
Suspended
Blocked
|
Suspended Ready
|
Event Wait
|
Suspend
|
Resume
|
Suspend
|
Resume
|
Event Occur
|
I/O
Completion
Atau
Event
Completion
|
Gambar 2.1 : Diagram State Proses
Process Control Block
PCB merupakan struktur data
yang menyimpan data lengkap mengenai proses sehingga sistem dapat mengelola
seluruh siklus hidup semua proses di sistem. Ada tiga kelompok utama informasi
dalam PCB yaitu :
1.
Informasi Identifikasi Proses
Ø Identifier
Proses
Ø Identifier
Proses yang menciptakan
Ø Identifier
Pemakai
2.
Informasi Status Pemroses
Ø Register-register
yang terlihat pemakai
Ø Register-register
kendali dan status
Ø Pointer
Stack
3.
Informasi Kendali Proses
Ø Informasi
penjadualan status
Ø Penstrukturan
data
Ø Komunikasi
antar proses
Ø Kewenangan
proses
Ø Manajemen
memori
Ø Kepemilikan
dan utilisasi sumber daya
Gambar 2.2 : Process Control Block (PCB)
D.
Implementasi
Proses
Tabel atau senarai proses
yang dicatat oleh sistem operasi :
1.
Tabel informasi manajemen memori
2.
Tabel informasi manajemen masukan/keluaran
3.
Tabel informasi sistem file
4.
Tabel proses
PCB berperan penting di
sistem operasi. PCB berisi informasi mengenai proses yang diperlukan sistem
operasi. PCB dibaca/dimodifikasi rutin sistem operasi seperti penjadualan,
alokasi sumberdaya, pemrosesan interupsi, monitoring, dan analisa kerja. Untuk
menyatakan senarai proses di sistem operasi dibuat senarai PCB.
Tiap proses dilengkapi ID
unik yang digunakan sebagai indeks ke tabel untuk mengambil PCB. Namun,
kesalahan bisa saja terjadi saat pengaksesan berlangsung. Kesalahan bukan pada
mekanisme pengaksesan, tetapi masalah proteksi terhadap PCB. Masalah utama
proteksi terhadap PCB, yaitu :
1.
Bug (kesalahan pemrograman) pada rutin tunggal misalnya
interrupt handler dapat merusak PCB sehingga dapat berakibat menghancurkan
kemampuan sistem mengelola proses-proses yang diasosiasikan dengan PCB.
2.
Perubahan rancangan struktur dan semantiks PCB dapat
berdampak ke sejumlah modul sistem operasi yang memakai PCB.
E.
Multiprogramming, Multiprocessing
dan Distributed Processing
1.
Multiprogramming
ü Manajemen
banyak proses di satu pemroses
ü Proses
dijalankan secara bersamaan pada satu waktu
ü Setiap
proses yang terjadi mendapat memori dan kendali tersendiri
ü Bersifat
independent dan one program at any instant
2.
Multiprocessing
ü Manajemen
banyak proses di komputer multiprocessor
ü Digunakan
untuk peningkatan kinerja
ü Memberikan
kemampuan fault tolerant
3.
Distributed
Process
ü Manajemen
banyak proses yang dieksekusi di sistem komputer tersebar dalam sebuah
jaringan.
ü Pemrogram
tidak perlu menyadari keberadaan banyak pemroses.
F.
Pengalihan
Proses (Process Switching)
Beberapa
penyebab terjadinya pengalihan proses :
1.
Interupsi Sistem ---> terjadi karena faktor eksternal
Tipe-tipe
interupsi :
Ø Interupsi
clock
Ø Interupsi
masukan/keluaran
Ø Page/memory
fault
2.
Trap ----> Terjadi karena kesalahan yang dihasilkan
proses running, misal : usaha untuk mengakses file secara ilegal
3.
Supervisor Call ---> Panggilan meminta atau mengaktifkan
bagian sistem operasi
G.
Penjadualan
Proses
Penjadualan
adalah kumpulan kebijaksanaan dan mekanisme di sistem operasi yang berkaitan
dengan urutan kerja yang dilakukan sistem komputer, bertugas mengatur proses
yang harus berjalan dan waktu selama proses berjalan.
Kriteria
untuk mengukur dan optimasi kinerja penjadualan :
1.
Adil (Fairness)
2.
Efisiensi
3.
Waktu Tanggap (Response
Time)
4.
Turn
Arround Time
5.
Throughtput
Tipe-tipe penjadualan :
1.
Penjadualan Jangka Pendek
Menjadualkan
alokasi pemroses di antara proses-proses ready yang berada di memori utama.
2.
Penjadualan Jangka Menengah
Bertugas
menangani proses-proses swapping.
3.
Penjadulan Jangka Panjang
Bekerja
terhadap antrian batch dan memilih batch yang harus dieksekusi sistem.
H.
Strategi
Penjadualan
1.
Penjadualan Pre-emptive ---> Proses dapat disela oleh
proses lain
2.
Penjadualan Non pre-emptive ---> Proses tidak dapat
disela oleh proses lain
I.
Algoritma
Penjadualan
1.
Round
Robin (RR)
a.
Jika waktu habis dan proses belum selesai ---> Running
> Ready
b.
Jika waktu belum habis dan proses menunggu ---> Running
> Blocked
c.
Jika waktu belum habis dan proses selesai ---> Running
> Completed
2.
Multiple
Feedback Quenes (MFQ)
a.
Menjalankan proses yang berada pada kelas prioritas
tertinggi.
b.
Jika proses telah menggunakan waktu yang dialokasikan maka
proses diturunkan kelas prioritasnya.
c.
Proses yang masuk pertama kali langsung diberi kelas
tertinggi.
3.
Shortest
Remaining First (SRF)
Proses
dengan sisa waktu jalan diestimasi terendah.
4.
Highest
Ratio Next (HRN)
Pemroses
memberikan prioritas layanan kepada proses yang telah menunggu lebih lama.
5.
Priority
Schedulling (PS)
Proses
yang memliki prioritas tinggi menjadi running.
6.
Guaranteed
Schedulling (GS)
Penjadual
akan menjalankan proses dengan rasio terendah sampai rasio proses di atas
pesaing terdekatnya.
7.
First
in, First Out (FIFO) atau First Come First Serve (FCFS)
a.
Proses diberi jatah waktu pemroses berdasarkan urutan
kedatangan
b.
Proses dijalankan hingga selesai
8.
Shortest
Job First (SJF)
Lebih
mengutamakan proses dengan waktu terpendek.
J.
Thread
Thread merupakan
unit dasar dari penggunaan CPU, yang terdiri dari 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. Perbedaannya ialah
proses dengan thread yang banyak mengerjakan lebih dari satu tugas pada
satu satuan waktu.
Gambar 2.3 : Thread Tunggal dan
Multi-Thread
Keuntungan
dari program yang multithreading terbagi menjadi empat kategori:
1.
Responsif
Aplikasi
interaktif menjadi tetap responsif meski pun sebagian dari program sedang diblok
atau melakukan operasi yang panjang kepada pengguna. Umpamanya, sebuah thread
dari web browser dapat melayani permintaan pengguna sementara thread
lain berusaha menampilkan gambar.
2.
Berbagi sumber daya
Thread berbagi memori dan sumber daya dengan thread
lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode
adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang
berbeda dalam lokasi memori yang sama.
3.
Ekonomis
Pembuatan
sebuah proses memerlukan dibutuhkan pengalokasian memori dan sumber daya.
Alternatifnya adalah dengan penggunaan thread, karena thread berbagi
memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk
membuat dan context switch thread. Akan susah untuk mengukur perbedaan
waktu antara proses dan thread dalam hal pembuatan dan pengaturan,
tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread.
Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread,
dan context switch proses 5 kali lebih lama dibandingkan context
switch thread.
4.
Utilisasi arsitektur multiprocessor
Keuntungan
dari multithreading dapat sangat meningkat pada arsitektur multiprocessor,
dimana setiap thread dapat berjalan secara pararel di atas processor
yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread
secara bergantian tetapi hal ini berlangsung sangat cepat sehingga
menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang
dijalankan CPU pada satu-satuan waktu (satu-satuan waktu pada CPU biasa disebut
time slice atau quantum).
K.
Thread
Pengguna dan Thread Kernel
1.
Thread Pengguna
Thread pengguna
didukung kernel serta diimplementasikan dengan pustaka thread pada
tingkatan pengguna. Pustaka menyediakan fasilitas untuk pembuatan thread,
penjadwalan thread, dan manajemen thread tanpa dukungan dari
kernel. Karena kernel tidak menyadari user-level thread maka semua
pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa
campur tangan kernel. Oleh karena itu, thread pengguna biasanya dapat cepat
dibuat dan dikendalikan. Tetapi thread pengguna mempunyai kelemahan
untuk kernel thread tunggal. Salah satu thread tingkatan pengguna
menjalankan blocking system call maka akan mengakibatkan seluruh proses diblok
walau pun ada thread lain yang dapat jalan dalam aplikasi tersebut. Contoh
pustaka thread pengguna ialah POSIX Pthreads, Mach C-threads, dan
Solaris threads.
2.
Thread Kernel
Thread kernel
didukung langsung oleh sistem operasi. Pembuatan, penjadwalan, dan manajemen thread
dilakukan oleh kernel pada kernel space. Karena pengaturan thread
dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread
lebih lambat dibandingkan user thread. Keuntungannya adalah thread
diatur oleh kernel, karena itu jika sebuah thread menjalankan blocking
system call maka kernel dapat menjadwalkan thread lain di aplikasi
untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkungan multiprocessor,
kernel dapat menjadwal thread-thread pada processor yang berbeda. Contoh sistem
operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital
UNIX.
L.
Model
Penggunaan
1.
Many
to One
Model Many-to-One memetakan
beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel.
Pengaturan thread dilakukan dalam ruang pengguna, sehingga efisien.
Hanya satu thread pengguna yang dapat mengakses thread kernel
pada satu saat. Jadi, multiple thread tidak dapat berjalan secara
pararel pada multiprocessor. Thread tingkat pengguna yang
diimplementasi pada sistem operasi yang tidak mendukung thread kernel
menggunakan model many to one.
2.
One
to One
Model One-to-One memetakan
setiap thread tingkatan pengguna ke thread kernel. Ia menyediakan
lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel. Kelemahannya model
ini ialah setiap pembuatan thread pengguna memerlukan pembuatan thread
kernel. Karena pembuatan thread dapat menurunkan kinerja dari sebuah
aplikasi maka implmentasi dari model ini, jumlah thread dibatasi oleh
sistem. Contoh sistem operasi yang mendukung model One-to-One ialah Windows
NT dan OS/2.
3.
Many
to Many
Model Many-to-Many memultipleks
banyak thread tingkatan pengguna ke thread kernel yang jumlahnya
lebih sedikit atau sama dengan tingkatan pengguna. thread. Jumlah thread
kernel dapat spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One
model mengizinkan developer untuk membuat user thread sebanyak yang ia
mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread
yang dapat dijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency
yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu
banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya
dapat membuat thread dalam jumlah yang terbatas). Model Many-to-Many tidak
menderita kelemahan dari dua model di atas. Developer dapat membuat user thread
sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat
bejalan secara pararel pada multiprocessor. Dan juga ketika suatu thread
menjalankan blocking system call maka kernel dapat menjadwalkan thread
lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model
ini adalah Solaris, IRIX, dan Digital UNIX.
Thanks for reading & sharing Kamar Pekick
0 komentar:
Post a Comment