Proses dan Thread

PROSES DAN THREAD 

 Dalam blog ini akan dijelaskan tentang proses dan thread untuk membiarkan komputer melakukan lebih dari satu kegiatan pada satu waktu, proses dan thread memberikan layanan besar, tetapi ada perbedaan antara mereka dalam cara mereka beroperasi. Semua program yang berjalan pada komputer menggunakan setidaknya satu proses atau thread . Proses dan thread membiarkan saklar prosesor lancar antara beberapa tugas sambil berbagi sumber daya komputer. 

Konsep Proses

• Program yang sedang dieksekusi

• Proses tidak hanya sekedar 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.

• Proses adalah sebuah program yang dieksekusi yang

mencakup program counter, register, dan variabel di

dalamnya.

• Sistem Operasi mengeksekusi proses dengan dua cara

yaitu Batch System yang mengeksekusi jobs dan Timeshared System yang mengatur pengeksekusian program

pengguna (user) atau tasks.

• Sistem operasi UNIX mempunyai system call fork yang

berfungsi untuk membuat proses baru

•Proses yang memanggil system call fork ini akan dibagi

jadi dua, proses induk dan proses turunan yang identik.

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.

• Proses dapat mengembalikan data keluaran kepada proses induknya melalui system call wait


Status Proses

• Running: status yang dimiliki pada saat instruksi-instruksi dari

sebuah proses dieksekusi.

• Waiting: status yang dimiliki pada saat proses menunggu suatu

sebuah event seperti proses M/K.

• Ready: status yang dimiliki pada saat proses siap untuk dieksekusi

oleh prosesor.

• New: status yang dimiliki pada saat proses baru saja dibuat.

• Terminated: status yang dimiliki pada saat proses telah selesai

dieksekusi.

 


Proses Control Block

Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) – juga disebut sebuah control block.


• PCB berisikan banyak bagian dari informasi yang berhubungan

dengan sebuah proses yang spesifik, termasuk hal-hal di bawah

ini:

Status Proses

Program counter

CPU Register

Informasi Manajemen Memori

Informasi pencatatan


Proses Thread

• Thread adalah sebuah alur kontrol dari sebuah proses. Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu.


Contoh Multi-Threading 



• Banyak perangkat lunak yang berjalan pada PC modern dirancang secara multi-threading.

• Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali.

• Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.

• Situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa tugas yang serupa

• Contohnya adaah sebuah web server yang dapat mempunyai ratusan klien yang mengaksesnya secara concurrent

• Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani satu klien pada pada satu satuan waktu.

• Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani.

• Solusinya adalah dengan membuat web server menjadi multi-threading.

• Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut.

Thread Dalam Proses 

• 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

Keuntungan Thread

1. Responsi : Membuat aplikasi yang interaktif menjadi

multithreading dapat membuat sebuah program terus berjalan

meskipun sebagian dari program tersebut diblok atau melakukan

operasi yang panjang, karena itu dapat meningkatkan respons

kepada pengguna. Sebagai contohnya dalam web browser yang

multithreading, sebuah thread dapat melayani permintaan

pengguna sementara thread lain berusaha menampilkan image.

2. Berbagi sumber daya : thread berbagi memori dan sumber daya

dengan thread lain yang dimiliki oleh proses yang sama.

Keuntungannya adalah mengizinkan sebuah aplikasi untuk

mempunyai beberapa thread yang berbeda dalam lokasi memori

3. Ekonomi : dalam pembuatan sebuah proses banyak 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).

Multithreading

• Thread pengguna: Thread yang pengaturannya dilakukan oleh

pustaka thread pada tingkatan pengguna. Karena pustaka yang

menyediakan fasilitas untuk pembuatan dan penjadwalan thread,

thread pengguna cepat dibuat dan dikendalikan.

• Thread Kernel: Thread yang didukung langsung oleh kernel.

Pembuatan, penjadwalan dan manajemen thread dilakukan oleh

kernel pada kernel space. Karena dilakukan oleh sistem operasi,

proses pembuatannya akan lebih lambat jika dibandingkan

Model Multithreading 

1. Model MANY TO ONE

2. Model ONE TO ONE 

3. Model MANY TO MANY


Multithreading Models 

1. Many-to-One Model

 • Memetakan banyak user-level thread ke satu kernel thread 

• Pengaturan thread dilakukan di user space 

• Efisien tetapi ia mempunyai kelemahan yang sama dengan user thread 

• Tidak dapat berjalan secara pararel pada multiprocessor

2. One-to-One Model

 ■ Memetakan setiap user thread ke kernel thread 

■ Menyediakan lebih banyak concurrency dibandingkan Manyto-One model 

■ Keuntungannya sama dengan keuntungan kernel thread 

■ Kelemahannya setiap pembuatan user thread membutuhkan pembuatan kernel thread yang dapat menurunkan performa dari sebuah aplikasi 

■ Sistem operasi yang mendukung One-to-One model adalah Windows NT dan OS/2 




3. Many-to-Many Model
 ■ multiplexes banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread 
■ Jumlah kernel thread dapat spesifik untuk sebagian aplikasi atau sebagian mesin
 ■ Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara pararel pada multiprocessor. 
■ Ketika suatu thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain untuk melakukan eksekusi. 
■ Sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX. 


Pustaka Thread

• Pustaka Thread atau yang lebih familiar dikenal dengan Thread Library

bertugas untuk menyediakan API (API (Application Programming Interface))

untuk programmer dalam menciptakan dan memanage thread. Ada dua cara

dalam mengimplementasikan pustaka thread :

a. Menyediakan API dalam level pengguna tanpa dukungan dari kernel sehingga

pemanggilan fungsi tidak melalui system call. Jadi, jika kita memanggil fungsi

yang sudah ada di pustaka, maka akan menghasilkan pemanggilan fungsi call

yang sifatnya lokal dan bukan system call.

b. Menyediakan API di level kernel yang didukung secara langsung oleh sistem

operasi. Pemanggilan fungsi call akan melibatkan system call ke kernel.

• Ada tiga pustaka thread yang sering digunakan saat ini, yaitu: POSIX

Pthreads, Java, dan Win32. Implementasi POSIX standard dapat dengan

cara user level dan kernel level, sedangkan Win32 adalah kernel level. Java

API thread dapat diimplementasikan oleh Pthreads atau Win32.

PEMBATALAN THREAD (THREAD CANCELLATION)

• Thread Cancellation ialah pembatalan thread sebelum tugasnya

selesai. Umpamanya, jika dalam program Java hendak mematikan

Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka

seluruh thread yang berjalan harus dibatalkan terlebih dahulu.

Contoh lain adalah di masalah search. Apabila sebuah thread

mencari sesuatu dalam database dan menemukan serta

mengembalikan hasilnya, thread sisanya akan dibatalkan. Thread

yang akan diberhentikan biasa disebut target thread.

PENJADWALAN THREAD

• Begitu dibuat, thread baru dapat dijalankan dengan berbagai

macam penjadwalan. Kebijakan penjadwalanlah yang menentukan

setiap proses, di mana proses tersebut akan ditaruh dalam daftar

proses sesuai proritasnya dan bagaimana ia bergerak dalam

daftar proses tersebut.






Comments

Popular posts from this blog

Status Proses Sistem Operasi

ORGANISASI KOMPUTER : UNIT MASUKAN DAN KELUARAN

Penjadwalan Proses CPU Pada Sistem Operasi