Proses dan Thread
Sebuah
proses adalah sebuah peristiwa adanya sebuah program yang dapat
dieksekusi. Sebagai sebuah eksekusi proses, maka hal tersebut
membutuhkan perubahan keadaan. Keadaan dari sebuah proses dapat
didefinisikan oleh aktivitas proses tersebut. Suatu proses adalah lebih
dari kode program, dimana kadang kala dikenal sebagai bagian tulisan.
Proses juga termasuk aktivitas yang sedang terjadi, sebagaimana
digambarkan oleh nilai pada program counter dan isi dari daftar
prosesor/ processor’s register. 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. Setiap proses mungkin menjadi satu dari
beberapa state berikut, antara lain: new, ready, running, waiting, atau
terminated. Setiap proses direpresentasikan ada sistem operasi
berdasarkan proses-control-block (PCB)-nya.
Saya tekankan
bahwa 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 seperangkatsumber daya/resource yang berkenaan
dengannya.
Proses memiliki dua karakteristik namun kedua karakteristik dilakukan secara independen oleh sistem operasi :
- Resource ownership (kepemilikan sumber daya)
Proses mempunyai ruang alamat virtual untuk menangani image proses yang didefinisikan dalam PCB.
- Scheduling-execution (penjadwalan-eksekusi)
Mengikuti
suatu path eksekusi (trace), ada pergatian dari satu proses ke lainnya
Unit dari kepemilikan sumber daya diacu sebagai proses atau taskuatu
thread yang salah dapat menganggu thread yang lain didalam proses yang
sama,karena thread berbagai pakai ruang memori virtual dan sumber daya
lain yang sama.
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.
Perbedaan proses dan thread?
1.Pembentukan Thread membutuhkan waktu yang lebih sedikit daripada pembentukan process.
2.Membutuhkan waktu yang lebih sedikit untuk menhakhiri Thread daripada process.
3.Lebih mudah dan cepat untuk melakukan switch antar Thread daripada switch antar process.
4.Thread menggunakan secara bersama ruang alamat dari proses yang menciptakannya. Proses memiliki ruang alamat sendiri-sendiri.
5.Thread
memiliki akses langsung ke segemen data dari prosesnya. Masing-masing
proses memiliki salinan segmen data dari parent process-nya.
6.Thread dapat saling komunikasi dengan thread lain dalam satu process. Antar proses harus menggunakan komunikasi antar proses.
7.Thread hampir tidak memiliki overhead. Proses memiliki overhead.
8.Thread
dapat memiliki pengaruh kontrol yang besar terhadap thread lain dalam
satu proses. Proses hanya dapat mengendalikan proses anakannya.
9.Perubahan
pada thread utama seperti pembatalan atau perubahan prioritas dapat
mempengaruhi tingkah laku thread lain dalam satu proses. Perubahan pada
parent proses tidak mempengaruhi proses anakan.
Single thread dan
multi thread
1.Single thread >> process hanya
mengeksekusi satu thread saja pada satu waktu
2.Multi thread >> process dapat mengeksekusi sejumlah thread dalam satu
waktu.
Model Multithread
Sebelumnya, perlu diketahui apa itu user thread dan kernel thread.
User thread >> pengelolaan thread dilakukan oleh user level (pengguna)
Kernel thread >> pengelolaan thread dilakukan oleh kernel komputer User
tidak dapat menginterupsi.
Model-model multithreading :
1. Many to one.
- Beberapa thread user-lever dipetakan ke dalam single kernel thread
- Penggunaannya pada sistem tidak memerlukan dukungan kernel thread
2. One to one
- Setiap user-level thread dipetakan ke kernel thread.
- Contoh : Windows 95/98/NT/2000
3. Many to many
- Membolehkan setiap user-level thread dipetakan ke banyak kernel thread
- Membolehkan sistem operasi membuat sejumlah kernel thread
- Contoh : Windows NT/2000 dengan paket ThreadFiber 10, Solaris 2
Process State
Status proses selalu berubah-ubah selama suatu program dieksekusi atau
dijalankan. Beberapa status tersebut ialah :
- New : proses baru diciptakan
- Running : proses sedang dijalankan
- Waiting : proses sedang menunggu suatu kondisi tertentu untuk bisa berjalan.
(misalkan menunggu respon dari perangkat I/O)
- Ready : proses menunggu untuk dilayani processor
- terminated : proses telah menyelesaikan eksekusi.
Diagram status proses
Process Control Block
(PCB)
Sistem operasi membutuhkan banyak informasi mengenai proses guna pengelolaan
proses. Semua informasi ini ada pada PCB. PCB mengandung beberapa informasi
seperti berikut :
1. Process State >> berisi
informasi status proses. (new,running,waiting,ready,terminated)
2. Program counter >> berisi informasi mengenai alamat instruksi yang
akan digunakan selanjutnya.
3. CPU register >> berisi register2 CPU apa saja yang digunakan
4. CPU scheduling information >> berisis penjadwalan proses beserta
algoritmanya
5. Memory management information >> berisi informasi tentang berapa
jumlah memory yang digunakan, limit register, tabel segment, dll berkenaan
dengan penggunaan memory.
6. I/O status information >> berisi informasi tentang perangkat apa saja
yang digunakan dalam proses
7. Accounting >> berisi informasi tentang statistik eksekusi proses
seperti waktu yang diperlukan, jumlah proses, dll.
Diagram PCB
Kesimpulan:
Proses dan Thread
merupakan dua bagian yang saling berhubungan dan berkaitan. Suatu
program yang sedang
dieksekusi merupakan pengertian dari sutau proses. Proses
membutuhkan sumber daya.
Sistem operasi mengeksekusi proses dengan dua cara yaitu batch
system yang
mengeksekusi jobs dan time-shared system yang mengatur
pengeksekusian
program pengguna (
user) atau tasks. Proses berisikan stack yang menyimpan alamat register
dan juga alamat dari
sebuah instruksi yang berisikan data – data yang dibutuhkan
untuk
instruksi
selanjutnya. Program Counter, register set serta stack merupakan bagian dari
thread.
Thread berbagi code
section, data section dan juga sumber daya sistem operasi dengan
thread
lain yang dalam
proses yang sama. Kelebihan thread antara lain responsif, berbagi