Process dan Thread
Thread adalah sesuatu yang seperti benang, berada dalam sebuah proses dan memiliki kesamaan dengan proses.Property - property dasar thread adalah :
- Punya thread id yang unik
- Punya kumpulan / set dari register, stack pointer
- Punya signal mask.
- Bisa diberi priority
- Punya return value.
Thread dalam satu proses yang sama dapat berbagi :
- Alamat memory yang sama
- Instruksi proses yang sama
- Data - data pada umumnya
- Descriptors
- Signal dan signal handlers
- User dan group ID
- Satu process memiliki satu thread (1 to 1)
- Satu process namun memiliki banyak thread (Many to 1)
- Satu thread dimiliki dalam 2 process berbeda (1 to Many)
- dan Ada lebih dari satu process dan lebih dari satu thread (Many to N)
Therad juga memiliki beberapa thread model yaitu :
- Per process item
-
-
Keuntungan dari penggunaan thread adalah :
- Lebih butuh waktu yang relatif sedikit untuk membuat sebuah thread baru daripada membuat sebuah process baru.
- Waktu yang dibutuhkan untuk terminate sebuah thread lebih kecil daripada waktu untuk terminate sebuah process.
- Waktu yang digunakan untuk switch antar thread dalam satu process lebih kecil
- Thread dapat berkomunikasi antar thread tanpa melibatkan kernel.
Penerapan Thread:
- User Space
Keuntungan : Tiap process punya algoritma scheduling sendiri - sendiri, dan performanya bagus.
Kerugian : Penerapan blocking system call, tidak ada thread lain yang bisa berjalan sampai ada
thread lain yang menyerahkan resources (no interrput).
- Kernel Space
Keuntungan : Tidak perlu system baru non-blocking system call
Kerugian : Cost yang dibutuhkan untuk create dan destroy thread lebih mahal.
-
Merupakan implementasi thread dengan thread yang berada di kernel space dan user space.
Ada juga sebuah thread yang dinamakan Pop Up Thread. Pop Up Thread adalah sebuah thread yang akan dibuat saat ada pesan muncul. contoh :
Karena ada multithreading, perlu adanya scheduler dan dispatcher. Scheduler dan dispatcher adalah cara untuk melakukan thread scheduling. Ada juga metode atau Batch scheduling algorithm untuk melakukan thread scheduling. Dalam jalannya sebuah proses, ada dikenal dengan Process-bound dan I/O-bound. Process bound adalah behaviour sebuah proses karena cara kerja proses itu sendiri sementara I/O bound adalah behaviour karena proses input / output dalam proses itu sendiri (berkaitan dengan tukar menukar resources).
Kriterian dalam sebuah scheduling adalah membuat cpu sesibuk mungkin (CPU utilization), banyaknya proses yang dapat dihasilkan per unit waktu (Throughput), waktu yang diperlukan untuk menyelesaikan sebuah process (Turnaround time), waktu yang diperlukan untuk wait dalam queue (Waiting time), dan waktu yang diperlukan saat request diterima sampai respons pertama kali (Response time).
Melakukan scheduling berarti kita ingin agar proses yang sedang berjalan dapat berjalan dengan seoptimal mungkin. Berikut adalah kriteria untuk optimisasi dalam sebuah OS
- Maximum CPU utilization
- Maximum throughput
- Minimum turn around time
- Minimum waiting time
- Minimum response time
- All System
Fairness, Policy enforcement, dan Balance
- Batch System
Throughput, Turnaround time, dan CPU utilization
- Interactive system
Response time, dan Proportionality
- Real - Time system
Meeting deadline , dan Predictable.
Short-term scheduler.
Beberapa algoritma untuk scheduling:
-> Batch Scheduling Algorithm
First come First serve
Shortest Job First (Non-Preemptive)
Shortest Job First (Preemptive)
-> Interactive Scheduling Algorithm
Round - robin scheduling
Priority scheduling
Multiple queuers
Shortest process next
Guaranted scheduling
Lottery scheduling
Fair-share scheduling.
-> Real time scheduling
Concurrency
Seperti gambar diatas, concurrency adalah sebuah kejadian saat ada dua atau lebih process yang diaktifkan atau diakses. Bisa ditemukan saat membukan banyak aplikasi saat bersamaan, contohnya , buka web browser, word editor, dan game secara berbarengan. Dalam proses concurrency dapat ditemukan komunikasi antar proses, sharing resources, sinkronisasi antar multiple proses, dan pengaturan alokasi processor.
Jika 2 atau lebih proses berjalan bersamaan , maka dapat saja timbul permasalahan seperti :
Sharing resources global
Masalah management untuk alokasi resources
Eror dalam programing sulit untuk ditrack.
Konsern utama OS dalam permasalahan seperti ini adalah
- Tetap track proses - proses yang aktif
- Mengalokasikan dan mendealokasikan resources contohnya
Processor time (Clock)
Memory
Files
I/O devices. - Melindungi data dan resources
- Hasil dari proses harus independent terhadap kecepatan eksekusi proses konkurent yang lain.
- Deadlock
Kejadian saat banyak proses terhenti karena saling menunggu untuk mengakses resources - Starvation
Kejadian saat resources yang tersedia tidak mencukupi proses - proses yang aktif sehingga terjadi kelaparan bagi proses-prosesnya.
- Menghilangkan interupsi (non-preemptive)
sebuah proses tetap akan berjalan sampai proses tersebut selesai dengan tugasnya
- Lock variable
menggunakan variable lock (1 dan 0) sehingga proses lainnya akan antri.
- Strict alternatioin
perubahan giliran untuk masuk dalam critical region
- Semaphore
penggunaan variable untuk melakukan signaling sehingga proses yang sedang antri, akan menunggu signal untuk mulai akses resources setelah proses sebelumnya telah selesai mengakses resources.
Semaphore
Sebuah nilai integer yang digunakan untuk signaling antara tiap proses. Hanya terdapat 3 proses dalam semaphore yaitu : initialize, decrement, dan increment. Decrement sebuah semaphore akan merujuk ke blocking a process sementara increment akan mengarah ke unblocking a process. Ada binary semaphore yaitu sebuah semaphore yang hanya terdiri dari 1 dan 0. Dari prinsip giliran atau menunggu antrian ini, muncul kasus Producer/Consumer Problem.Seperti contoh :
- Sleeping Barber problem
- Dining Philosopher Problem
Solusi dari permasalahan diatas, dapat menggunakan MUTEX (Mutul Exclusion Lock) yaitu memakain thread seperti contoh dibawah :
solving sleeping barber problem
Monitor
Adalah sebuah bentuk programming language yang menyediakan fungsi yang menyerupai fungsi yang disediakan semaphore namun lebih mudah untuk dikontrol. Monitor merupakan software modul yang terdiri dari satu atau lebih prosedur, contoh : inisialisasi sequence dan local data.Message Passing
Komunikasi antar proses - proses dapat menggunakan sintax send(dest,&message) dan untuk menerima pesannya menggunakan receive(source,&message).Issue - issue atau masalah yang bisa timbul dengan menggunakan message passing adalah :
- Message yang berantakan
- Message yang hilang
- Kehilangan acknowledge sehingga pengiriman pesan putus
- Tujuan tidak dapat dijangkau
- Masalah authentication
- Performance.
Tidak ada komentar:
Posting Komentar