Senin, 24 Oktober 2016

Thread pada linux

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/


Kamis, 13 Oktober 2016

Contoh Data Empiris Beserta Grafik

Sebanyak 12 orang mahasiswa terpilih sebagai sampel dalam penelitian di sebuah universitas. Mahasiswa yang terpilih tersebut diukur tinggi badannya. Hasil pengukuran berat badan disajikan tabel berikut



Dan berikut adalah grafik dari data empiris diatas:

- Pie Chart




- Ogive




- Histogram





Daftar Pustaka : http://intanridhaputri.blogspot.co.id/