Thread Linux
Ketika pertama kali
dikembangkan, Linux tidak didukung dengan threading di dalam kernelnya, tetapi
dia mendukung proses-proses sebagai entitas yang dapat dijadwalkan melalui
clone() system calls. Sekarang Linux mendukung penduplikasian proses
menggunakan system call clone() dan fork(). Clone() mempunyai sifat mirip
dengan fork(), kecuali dalam hal pembuatan copy dari proses yang dipanggil
dimana ia membuat sebuah proses yang terpisah yang berbagi address space dengan
proses yang dipanggil. Pembagian address space dari parent process memungkinkan
cloned task bersifat mirip dengan thread yang terpisah. Pembagian address space
ini dimungkinkan karena proses direpresentasikan di dalam Kernel Linux.
Di dalam Kernel
Linux setiap proses direpresentasikan sebagai sebuah struktur data yang unik.
Jadi, daripada menciptakan yang baru maka struktur data yang baru mengandung
pointer yang menunjuk ke tempat dimana data berada. Jadi ketika fork()
dipanggil, proses yang baru akan tercipta beserta duplikasi dari segala isi di
struktur data di parent process, namun ketika clone() dipanggil, ia tidak
menduplikasi parent processnya tetapi menciptakan pointer ke struktur data pada
parent process yang memungkinkan child process untuk berbagi memori dan sumber daya
dari parent processnya.
Project LinuxThread menggunakan system call ini untuk
mensimulasi thread di user space. Sayangnya, pendekatan ini mempunyai beberapa
kekurangan, khususnya di area signal handling, scheduling, dan interprocess
synchronization primitive.Untuk meningkatkan kemampuan Thread Linux, dukungan
kernel dan penulisan ulang pustaka thread sangat diperlukan. Dua project yang
saling bersaing menjawab tantangan ini. Sebuah tim yang terdiri dari pengembang
dari IBM membuat NGPT (Next Generation POSIX Threads). Sementara pengembang
dari Red Hat membuat NPTL (Native POSIX Thread Library).Sebenarnya Linux tidak
membedakan antara proses dan thread. Dalam kenyataannya, Linux lebih
menggunakan istilah task dibandingkan proses dan thread ketika merujuk kepada
pengaturan alur pengontrolan di dalam program.
Penjadwalan CPU
Penjadwalan CPU
adalah pemilihan proses dari antrian ready untuk dapat dieksekusi. Penjadwalan
CPU juga merupakan konsep dari multiprogramming, dimana CPU digunakan secara
bergantian untuk proses yang berbeda. Suatu proses terdiri dari dua siklus
yaitu Burst I/O dan Burst CPU yang dilakukan bergantian hingga proses selesai.
Penjadwalan CPU mungkin dijalankan ketika proses:
1. running ke waiting time
2. running ke ready state
3. waiting ke ready state
4. terminates
Proses 1 dan 4
adalah proses Non Preemptive, dimana proses tersebut tidak bisa di- interrupt,
sedangkan 2 dan 3 adalah proses Preemptive, dimana proses boleh di interrupt.
Pada saat CPU
menganggur, maka sistem operasi harus menyeleksi proses-proses yang ada di
memori utama (ready queue) untuk dieksekusi dan mengalokasikan CPU untuk salah
satu dari proses tersebut. Seleksi semacam ini disebut dengan shortterm
scheduler (CPU scheduler).
· Kriteria Penjadwalan
Algoritma
penjadwalan CPU yang berbeda mempunyai property yang berbeda. Dalam memilih
algoritma yang digunakan untuk situasi tertentu, kita harus memikirkan properti
yang berbeda untuk algoritma yang berbeda. Banyak kriteria yang dianjurkan
utnuk membandingkan penjadwalan CPU algoritma. Kriteria yang biasanya digunakan
dalam memilh adalah :
1. CPU Utilization
Kita ingin menjaga
CPU sesibuk mungkin. CPU utilization akan mempunyai range dari 0 ke 100 persen.
Di sistem yang sebenarnya seharusnya ia mempunyai range dari 40 persen samapi
90 persen
2. Throughput
Jika cpu sibuk
mengeksekusi proses, jika begitu kerja telah dilaksanakan. Salah satu ukuran
kerja adalah banyak proses yang diselesaikan per unit waktu, disebut througput.
Untuk proses yang lama mungkin 1 proses per jam ; untuk proses yang sebentar
mungkin 10 proses perdetik.
3. Turnaround time
Dari sudur pandang
proses tertentu, kriteria yang penting adalah berapa lama untuk mengeksekusi
proses tersebut. Interval dari waktu yang dijinkan dengan waktu yang dibutuhkan
untuk menyelesaikan sebuah prose disebut turn around time. Trun around time
adalah jumlah periode untuk menunggu untuk bisa ke memori, menunggu di ready
queue, eksekusi di CPU, dan melakukan I/O.
4. Waiting time
Algoritma
penjadwalan cpu tidak mempengaruhi waktu untuk melaksanakan proses tersebut
atau I/O; itu hanya mempengaruhi jumlah waktu yang dibutuhkan proses di antrian
ready. Waiting time adalah jumlah periode menghabiskan di antrian ready.
5. Response time
Di sistem yang
interaktif, turnaround time mungkin bukan waktu yang terbaik untuk kriteria.
Sering sebuah proses bisa memproduksi output diawal, dan bisa meneruskan hasil
yang baru sementara hasil yang sebelumnya telah diberikan ke user. Ukuran yang
lain adalah waktu dari pengiriamn permintaan sampai respon yang pertama di
berikan. Ini disebut response time, yaitu waktu untuk memulai memberikan
respon, tetapi bukan waktu yang dipakai output untu respon tersebut.
Biasanya yang
dilakukan adalah memaksimalkan CPU utilization dan throughput, dan minimalkan
turnaround time, waiting time, dan response time dalam kasus tertentu kita
mengambil rata-rata.
Konsep Thread
Thread merupakan
unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter,
register set,danstack . Sebuah
thread berbagi code section,
datasection, dan sumber daya sistem operasi dengan Thread lain yang dimiliki
oleh prosesyang sama dan Thread juga sering disebut lightweight process.
Keuntungan Thread :
- - Responsif
- - Berbagai sumber daya
- - Ekonomis
- - Utilisasi arsitektur multiprosessor
Thread kernel :
Thread kernel
didukung langsung oleh sistem operasi. Pembuatan,penjadwalan, dan manajemen thread dilakukan oleh kernel pada kernel space
Thread diatur oleh
kernel, karena itu
jika sebuah thread menjalankan
blocking system call maka kernel dapat
menjadwalkan thread lain diaplikasi untuk melakukan eksekusi.
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.
Thread Cancellation
:
Thread cancellation
adalah pemberhentian thread sebelum tugasnya selesai.Pemberhentian target
thread dapat terjadi
melalui dua cara yang berbeda:
1. Asynchronous
cancellation : suatu thread seketika itu juga memberhentikan target thread
2. Defered
cancellation : target thread secara perodik memeriksa apakah dia harusberhenti,
cara ini memperbolehkan target thread untuk memberhentikan dirinya
sendirisecara terurut.
Thread Kernel Linux
:
Linus Torvalds
mendefinisikan bahwa sebuah thread adalah Context of Execution (COE),yang
berarti bahwa hanya ada sebuah Process Control Block (PCB) dan sebuahpenjadwal
yang diperlukan. Linux tidak mendukung multithreading, struktur data
yangterpisah, atau pun rutin kernel.
Linux menyediakan 2
system call yaitu :
1.Fork memiliki fungsi untuk menduplikasi proses
dimana proses anak yang dihasilkanbersifat
Independent.
2. Clone memiliki
sifat yang mirip dengan fork yaitu sama-sama membuat duplikat dariproses induk.
Daftar Pustaka : https://hanatahan.wordpress.com/2011/03/28/konsep-proses-pada-sistem-operasi-linux/
Daftar Pustaka : https://hanatahan.wordpress.com/2011/03/28/konsep-proses-pada-sistem-operasi-linux/
0 komentar:
Posting Komentar