18
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
19
✓ 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
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
Ready Running
Blocked
Submit Dispatch Completed
Timeout
Suspended Blocked Suspended Ready
Event Wait
Suspend Resume
Suspend Resume
Event Occur
20
➢ 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
21
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)
22
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.
23
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
24
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