1. Medium_Term Scheduler
- Kenapa Medium_Term Scheduler Muncul ?
Penjadwalan
jangka menengah (medium term scheduler) muncul karena aktivitas pemindahan
proses yang tertunda dari memori utama ke memori sekunder yang disebut
swapping. Proses ini mempunyai kepentingan kecil saat itu sebagai proses yang
tertunda. Tetapi, begitu kondisi yang membuatnya tertunda hilang dan proses
dimasukkan kembali ke memori utama dan ready.
-
Dalam
penjadwalan medium term ini, beberapa OS seperti contoh time-sharing harus
membutuhkan penjadwalan dengan level tambahan.
2.
THREAD
- Beda THREAD dengan PROSES?
Perbedaan 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.
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 seperangkat sumber
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 mengakhiri 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.
- Gambar 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.
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. One
to Many.
- 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
- Thread pada LINUX dan WINDOWS seperti apa?
Threads pada windows
Diimplementasikan sebagai objek. Proses executable dapat
terdiri dari satu thread atau lebih. Proses dan objek thread mempunyai
kemampuan sinkronisasi built-in.
• Ready
• Standby
• Running
• Waiting
• Transition
• Terminated
• Standby
• Running
• Waiting
• Transition
• Terminated
Threads pada 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 callclone() 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 memungkinkancloned 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
processyang
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, khusunya 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).
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, khusunya 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.
Status proses pada
linux :
· Running
· Interruptable
· Uninterruptable
· Stopped
· Zombie
· Running
· Interruptable
· Uninterruptable
· Stopped
· Zombie
Source:






