Jumat, 01 Juli 2011

Tugas 2


1.       - Thread
Merupakan unit dasar dari penggunaan CPU, thread, terdiri dari thread ID, program counter, set register, dan stack.Thread sering juga disebut Lightweight process.
Thread berbagi code section , data section,  dan sumber daya sistem operasi dengan thread lain yang termasuk dalam proses yang sama.
Proses tradisional (Heavyweight process) mempunyai thread tunggal yang berfungsi sebagai pengontrol.
-          Keuntungan Thread
Responsiveness : melakukan multithreading pada aplikasi yang interaktif dapat membuat program terus berjalan meskipun bagian dari program tersebut diblok atau sedanng menjalankan operasi yang panjang, karena itu dapat meningkatkan respon kepada user.
Resource sharing : sebuah aplikasi dapat mempunyai beberapa thread yang berbeda dalam sebuah alamat memori yang sama karena thread berbagi memori dan sumber daya dari proses yang memilikinya.
Economy : karena mahal untuk mengalokasikan memori dan sumber daya untuk pembuatan proses. Alternatifnya adalah dengan penggunaan thread sebab thread berbagi sumber daya dari proses yang memilikinya oleh sebab itu akan lebih ekonomis untuk membuat sebuah thread
Utilization of multiproccesor architectures : keuntungan dari multhithreading dapat mengkatkan secara draktis dalam arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel pada prosesor yang berbeda.
-          User dan kernel threads
User Threads didukung diatas kernel dan diimplementasikan oleh thread library pada level user. Library mendukung pembuatan thread, penjadwalan, dan manajemen tanpa dukungan dari kernel. Karena kernel tidak menyadari adanya user-level threads maka pembuatan semua thread dan penjadwalan dilakukan di dalam user space tanpa intervensi dari kernel
Kernel Threads
Kernel Threads didukung secara langsung dari sistem operasi. Pembuatan thread, penjadwalan, dan manajemen dilakukan oleh sistem operasi. Secara umum kernel threads lebih lambat untuk dibuat dan diatur dibanding user thread



-          Multhithreading models
One to one model memetakan setiap user thread ke kernel thread
Many to one memetakan beberapa user-level threads ke satu kernel threads
Many to many model memetakan banyak user-level thread ke kernel
-          Cancellation dan thread polls
Cancellation
Adalah sebuah tugas untuk memberhentikan thread sebelum thread tersebut selesai. Thread yang akan diberhentikan disebut target thread.
Ada dua scenario thread cancellation :
1.       Asynchronous cancellation :
Satu thread memberhentikan target thread seketika itu juga.
2.       Deferred cancellation
Target thread secara periodik dapat mengecek apakah ia harus berhenti , scenario ini memberi kesempatan kepada target thread untuk memberhentikan dirinya sendiri.
Thread Polls
Membuat beberapa thread pada start-up proses dan menetapkan mereka ke dalam sebuah pool dimana mereka diam dan menunggu untuk bekerja.
Keuntungan :
Ø  Biasanya lebih cepat untuk melayani sebuah permintaan dengan thread yang ada dibanding menunggu thread tersebut dibuat.
Ø  Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak bisa mendukung banyak concurrent thread.
Thread specific data
Duplikat data tertentu dari suatu thread pada suatu situasi
Pthreads
Merujuk kepada POSIX standard (IEEE 1003.1 c) mendefinisikan API untuk pembuatan thread dan sinkronisasi . Ini merupakan spesifikasi thread behavior dan bukan merupakan implementasi. Desainer OS boleh mengimplementasikan spesifikasi tersebut dalam cara apapun yang mereka mau.
-          Thread dengan Linux dan Java
Linux
Ø  Threads pada linux mulai digunakan di kernel versi 2.2
Ø  Threads lebih dianggap sebagai tasks
Ø  Linux menyediakan 2 system call :
1.       Fork()
2.       Clone()
Ø  Clone mirip sperti fork(), namun selain meng-copy proses yang memanggilnya, method ini membuat proses baru yang berbagi address space yang sama dengan proses yang memanggilnya

Java
Ø  Threads di java dibuat dengan cara :
1.       Meng-extends class Threads
2.       Meng-implement interface Runnable
Ø  Thread di java di atur oleh Java Virtual Machine (JVM)
Ø  Keunggulan Java threads adalah :
-          JVM menggunakan prioritas preemptive berdasarkan algoritma penjadwalan
-          Semua thread di java mempunyai prioritas. Prioritas tertinggi dijadwalkan unutk dieksekusi oleh JVM
-          Jika ada 2 thread yang prioritasnya sama, digunakan algoritma First In First Out (FIFO)
Ø  Keadaan Threads di java dibagi menjadi 4 keadaan :
-          New : sebuah thread pada keadaan ini ada ketika objek dari thread tersebut dibuat
-          Runnable : memanggil start() method untuk mengalokasikan memori bagi thread baru dalam JVM dan memanggil run() method untuk membuat objek.
-          Blok : sebuah thread akan diblok jika menampilkan sebuah kalimat pengeblokan. Contohnya : sleep() atau suspend()
-          Dead : sebuah thread dipindahkan ke keadaan dead ketika run() method berhenti atau ketika stop() method dipanggil.


















2.Penjadwalan CPU
a. Kriteria penjadwalan
Ø  Tujuan utama nya untuk mempunyai proses berjalan secara bersamaan, untuk memaksimalkan kinerja dari CPU
Ø  Pemanfaatan CPU maksimum diperoleh dengan multiprogramming
Ø  CPU-I/O Burst Cycle-Pelaksanaan proses terdiri dari suatu siklus tunggu I/O dan eksekusi CPU
Ø  Distribusi Burst CPU
Penjadwal CPU
Ø  Penjadwal memilih dari sekian proses yang ada di memori yang sudah siap dieksekusi, dan mengalokasikan CPU untuk mengeksekusinya
Ø  Penjadwalan CPU mungkin akan dijalankan ketika proses :
1.       Berubah dari running ke waiting state
2.       Berubah dari running ke ready state
3.       Berubah dari waiting ke ready
4.       Terminates
Ø  Penjadwalan 1 dan 4 adalah non preemptive. Maksudnya adalah dalam penjadwalan nonpreemptive sekali CPU telah dialokasikan untuk sebuah proses, maka tidak bisa diganggu, contoh pada Windows 3.x
Ø  Selain itu bersifat preemptive
b. Dispatcher
Modul pemberi control CPU ke proses, fungsi ini meliputi :
-          Switching context
-          Switching to user mode
-          Lompat dari suatu bagian di program user untuk mengulang program
Ø  Display Latency
Waktu yang dibutuhkan untuk menstop satu proses dan menjalankan proses lainnya
c. Algoritman Penjadwalan
- First come-first served
Proses pertama yang dating, mendapat alokasi CPU (implementasi antrian FIFO)
CPU
2
3
4
5
CPU
1
2
3
4
5





AVG waiting time is often quite long



 0                                                                                                                          8          9          10


 0            1           2                                                                                                       10
Efek konvoi
Nonpreemptive
-          Shortest-Job-First
Ø  Mendahulukan proses dengan burst time terkecil (shortest next CPU burst)
Ø  Avg waiting time terkecil (optimal)
Ø  Sulit menentukan panjang CPU burst (prediksi)
Ø  Preemptive or not. Preemptive=shortest-remaining-time-first
-          Priority
Ø  Tiap proses diberikan skala prioritas
Ø  Skala bisa ditentukan secara internal/eksternal
Ø  Preemptive or not
Ø  Indefinite blocking (starvation), diatasi dengan aging


-          Round-Robin
Ø  Preemptive first-come,first-served
Ø  Digilir selama time quantum
Ø  Performa tergantung besar time quantum. Time quantum sangat besat (infinit), akan seperti FCFS. Kalau terlalu kecil, context switch terlalu banyak.
3. Multiprocessor
- Hard-Real Time
Ø  Menjamin proses dapat diselesaikan dengan tepat waktu
Ø  Pada saat proses dikirim, terdapat statement yang menyatakan jumlah waktu yang diperlukan untuk menyelesaikan proses tersebut
Ø  Scheduler memainkan peranan yang penting
Ø  Jika permintaan alokasi waktu terlalu besar, maka scheduler akan menolaknya
- Soft-Real Time
Ø  Memiliki keterbatasan yang lebih rendah dari hard-time system
Ø  Critical task diberikan prioritas yang lebih tinggi dari yang lainnya
Ø  Memerlukan desain scheduler yang lebih cermat, karena harus men-set prioritas
Ø  Dapat menyebabkan pembagian resource yang kurang adil, delay yang lama, sampai terjadinya starvation.
                                      
#Setelah deadline,                                                                          #Setelah deadline,
Proses langsung berhenti                                                             proses berhenti bertahap

- Penjadwalan AMP
Pendekatan pertama untuk penjadwalan prosesor jamak adalah penjadwalan asymmetric multiprocessing atau biasa disebut juga sebagai penjadwalan master/slave. Dimana pada metode ini hanya satu prosesor (master ) yang menangani semua keputusan penjadwalan pemrosesan M/K, dan aktivitas system lainnya dan prosesor lainnya(slave) hanya mengeksekusi proses. Metode ini sederhana karena hanya satu prosesor yang mengakses struktur data system dan juga mengurangi data sharing
a.       Load Balancing adalah usaha untuk menjaga workload terdistribusi sama rata untuk semua prosesor dalam system AMP. Load Balancing hanya perlu untuk dilakukan pada system dimana setiap prosesor memiliki antrian tersendiri(private queue)untuk proses-proses yang akan dipilih untuk dieksekusi.
b.      Symetric Multithreading adalah strategi alternative untuk menjalankan beberapa thread secara bersamaan. SMT juga biasa disebut teknologi hyperthreading dalam prosesor Intel.
4.Concurency terjadi apabila banyak proses yang bias dieksekusi secara bersama, membutuhkan sinkronisasi dalam mengakses sumber daya bersama serta dapat saling bekerja sama
- Mutual exclusion adalah konsep sedemikian sehingga hanya satu proses yang boleh mengakses/menggunakan sebuah sumber daya yang tidak bias dipakai berbarengan (contohnya : printer,kartu jaringan, dll).
- Sinkronisasi terjadi ketika suatu proses mengirimkan pesan dengan memanggil prosedur send ada dua kemungkinan yang dapat terjadi :
1. Proses pengirim diblok hingga pesan diterima, atau
2. proses boleh melanjutkan eksekusi
- Concurency Deadlock adalah kondisi sedemikian sehingga beberapa proses tidak berjalan Karena masing-masing sedang mengakses suatu sumber daya dan untuk menyelesaikan eksekusi critical section masing-masing harus mengakses critical resource yang sedang diakses proses lainnya.
- Concurency Starvation adalah kondisi sedemikian sehingga sebuah proses terus menerus gagal mendapatkan akses suatu sumber daya dikarenakan proses-proses lain terus menggunakan sumber daya tersebut
Cara penanganan deadlock dan metodenya :
1.       Mengabaikan masalah Deadlock
2.       Mendeteksi dan memperbaiki
3.       Penghindaran yang terus menerus dan pengalokasian yang baik dengan menggunakan protocol untuk memastikan system tidak pernah memasuki keadaan Deadlock. Yaitu dengan Deadlock avoidance system untuk mendata informasi tambahan tentang proses mana yang akan meminta dan menggunakan sumber daya.
4.       Pencegahan yang secara struktur bertentangan dengan empat kondisi terjadinya Deadlock dengan Deadlock prevention system untuk memastikan bahwa salah satu kondisi yang penting tidak dapat menunggu.


Tidak ada komentar: