Minggu, 15 Mei 2016

Medium_term scheduler and THREAD || Task_me


1.      Medium_Term Scheduler
  •   Gambar Bagan 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.



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.


Status thread pada windows :
Ready
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).

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
 



Source: