- Proses
Adalah suatu program yang sedang dieksekusi/dijalankan oleh CPU yang membuat program
counter, register, dan variabel. Suatu proses membutuhkan resource, seperti CPU, memori, file,
dan I/O device untuk menyelesaikan proses tersebut. Untuk melakukan pekerjaannya, resource-
resource ini dialokasikan oleh proses pada saat dibuat atau pada saat dieksekusi.
PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah
proses yang spesifik, termasuk hal-hal di bawah ini :
nilai dari dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung
pada sistem memori yang digunakan oleh sistem operasi.
Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu nyata yang
digunakan, batas waktu, jumlah account, jumlah job atau proses, dan banyak lagi.
Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada
proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
Scheduling information : berisis penjadwalan proses beserta algoritmanya. Untuk
memkasimalkan pengguna CPU ada yang di sebut penjadwalan proses agar proses yang
di jalankan berjalan tanpa hambatan.
- Thread
Thread, atau kadang-kadang disebut sebagai proses ringan (lightweight) merupakan unit dasar dari
utilisasi CPU yang di dalamnya terdapat ID thread, program counter, register, dan stack. Atau
dengan kata lain, thread merupakan satu kumpulan instruksi yang akan dieksekusi secara
independen. Thread saling berbagi bagian program, bagian data dan sumber daya sistem operasi
dengan thread lain yang mengacu pada proses yang sama. Dengan banyak kontrol, thread dapat
melakukan lebih dari satu pekerjaan pada waktu yang sama.
1. Single-Thread : proses hanya mengeksekusi satu thread pada satu waktu, atau dapat
diartikan sebagai proses yang bekerja secara berurutan sesuai dengan urutan masing-masing
thread (terstruktur) dan hanya mengerjakan satu tugas(task) dalam satu waktu.
2. Multi-Thread : proses dapat mengeksekusi beberapa thread dalam satu waktu.
1. Responsive; tanggap : Multi-Threading 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.
2. Pembagian sumber daya : Secara default, thread membagi memori dan sumber daya dari proses.
Ketika thread berjalan pada data yang sama, thread tersebut bisa berbagi cache memory.
3. 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.
4. Pemberdayaan arsitektur multiprosesor: Keuntungan dari multi-threading dapat ditingkatkan
dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara paralel 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.
Kerugian Multi-Threading
1. Multiple thread bisa mengganggu satu sama lain saat berbagi hardware resource, misalnya chace
memory.
2. Execution time (waktu proses) dari sebuah single-thread tidak dapat diimprove (ditambah), tapi
malah bisa diturunkan. Ini terjadi karena penurunan frequensi yang dibutuhkan ketika terjadi
pergantian thread yang berjalan.
3. Harus ada dukungan dari hardware ataupun software untuk melakukan multi-Threading.
Proses vs Thread
Proses Thread
Bersifat heavyweight Bersifat lightweight
Membutuhkan lebih banyak waktu dalam Membutuhkan lebih sedikit waktu dalam pembentukan
pembentukan dan mengakhiri proses dan mengakhiri thread
Switch antar Proses lebih lama Switch antar Thread lebih cepat
Proses memiliki overhead Thread hampir tidak memiliki overhead
Proses memiliki ruang alamat atau IP address Thread menggunakan secara bersama ruang alamat
masing-masing atau IP address dari proses yang menciptakannya
Proses hanya dapat mengendalikan proses Thread dapat memiliki pengaruh kontrol yang besar
anakannya/turunan. terhadap thread lain dalam satu proses
KESIMPULAN
Proses dan Thread merupakan dua bagian yang saling berhubungan dan berkaitan.
Suatu program yang sedang dieksekusi merupakan pengertian dari suatu 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
Thread berbagi code section, data section dan juga sumber daya sistem operasi dengan thread lain
mikroprosessor.
Race Condition
Race condition adalah suatu kondisi dimana dua atau lebih proses mengakses shared memory/sumber
daya, pada saat yang bersamaan dan hasil akhir dari data tersebut tergantung dari proses mana yang
terakhir selesai dieksekusi, sehingga hasil akhirnya terkadang tidak sesuai dengan yang dikehendaki.