TUGAS ARTIKEL THREAD SISTEM OPERASI NAMA NIM : OKY KURNIAWAN : 14111057 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INFORMASI UNIVERSITAS MERCU BUANA YOGYAKARTA KATA PENGANTAR Puji syukur saya panjatkan kehadirat Tuhan Yang Maha Esa karena dengan rahmat, karunia, serta taufik dan hidayah-Nya kami dapat menyelesaikan artikel tentang Thread ini dengan baik meskipun banyak kekurangan didalamnya. Dan juga kami berterima kasih pada Bapak Ryan Ari Setyawan selaku Dosen mata kuliah Sistem Operasi yang telah memberikan tugas ini kepada penulis. Kami sangat berharap artikel ini dapat berguna dalam rangka menambah wawasan serta pengetahuan kita mengenai thread pada sistem operasi. Kami juga menyadari sepenuhnya bahwa di dalam makalah ini terdapat kekurangan dan jauh dari kata sempurna. Oleh sebab itu, kami berharap adanya kritik, saran dan usulan demi perbaikan makalah yang telah kami buat di masa yang akan datang, mengingat tidak ada sesuatu yang sempurna tanpa saran yang membangun. Semoga makalah sederhana ini dapat dipahami bagi siapapun yang membacanya. Sekiranya laporan yang telah disusun ini dapat berguna bagi kami sendiri maupun orang yang membacanya. Sebelumnya kami mohon maaf apabila terdapat kesalahan kata-kata yang kurang berkenan dan kami memohon kritik dan saran yang membangun demi perbaikan di masa depan. Yogyakarta, Oktober 2015 Penyusun Thread 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. Secara informal, proses adalah program yang sedang dieksekusi. Ada dua jenis proses, proses berat (heavyweight) atau biasa dikenal dengan proses tradisional, dan proses ringan atau kadang disebut thread. Thread saling berbagi bagian program, bagian data dan sumber daya sistem operasi dengan thread lain yang mengacu pada proses yang sama. Thread terdiri atas ID thread, program counter, himpunan register, dan stack. Dengan banyak kontrol thread proses dapat melakukan lebih dari satu pekerjaan pada waktu yang sama. Keuntungan Thread 1. Responsi Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalamweb browser yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image. 2. Berbagi sumber daya Thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengijinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama. 3. Ekonomi Dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. 4. Utilisasi arsitektur multiprocessor Keuntungan dari multithreading bisa sangat meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu( satu -satuan waktu pada CPU biasa disebut time slice atau quantum ). User Thread User thread didukung oleh kernel dan diimplementasikan oleh thread library ditingkat pengguna. Library mendukung untuk pembentukan thread, penjadualan, dan managemen yang tidak didukung oleh kernel. User thread didukung diatas kernel dan diimplementasi oleh thread library pada user level. Library menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadwalan thread dilakukan di user space tanpa intervensi dari kernel. Oleh karena itu, user -level thread biasanya cepat untuk dibuat dan diatur. Tetapi user thread mempunyai kelemahan yaitu apabila kernelnya merupakan thread tunggal maka apabila salah satu user-level thread menjalankan blocking system call maka akan mengakibatkan seluruh proses diblok walaupun ada thread lain yang bisa jalan dalam aplikasi tersebut. Contoh user-thread libraries adalah POSIX Pthreads, Mach C-threads, dan Solaris threads. Kernel Threads Kernel thread didukung secara langsung oleh sistem operasi. Pembentukan thread, penjadwalan, dan manajemen dilakukan oleh kernel dalam ruang kernel. Karena managemen thread telah dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Keuntungannya adalah thread diatur oleh kernel, karena itu jika sebuah thread menjalankan blocking system call maka kernel bisa menjadwalkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkungan multiprocessor, kernel bisa menjadwal thread-thread pada processor yang berbeda. Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX. Multithreading Models 1. One-to-One One-to-One model memetakan setiap user thread ke kernel thread. Ia menyediakan lebih banyak concurrency dibandingkan Many-to-One model. Keuntungannya sama dengan keuntungan kernel thread. Kelemahannya model ini adalah setiap pembuatan user thread membutuhkan pembuatan kernel thread. Karena pembuatan thread bisa menurunkan performa dari sebuah aplikasi maka implmentasi dari model ini membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem operasi yang mendukung One-to-One model adalah Windows NT dan OS/2. 2. Many-to-One model Many-to-One model memetakan banyak user-level thread ke saru kernel thread. Pengaturan thread dilakukan di user space, oleh karena itu ia efisien tetapi ia mempunyai kelemahan yang sama dengan user thread. Selain itu karena hanya satu thread yang bisa mengakses thread pada suatu waktu maka multiple thread tidak bisa berjalan secara pararel pada multiprocessor. User-level thread yang diimplementasi pada sistem operasi yang tidak mendukung kernel thread menggunakan Manyto-One model. Contoh: Solaris Green Threads dan GNU Portable Threads. 3. Many-to-Many model Many-to-many model multiplexes banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread. Jumlah kernel thread bisa spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengijinkan developer ntuk membuat user thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang bisa dijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi(dalam beberapa hal, developer hanya bisa membuat thread dalam jumlah yang terbatas). Many-to-Many model tidak menderita kelemahan dari 2 model di atas. Developer bisa membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan bisa bejalan secara pararel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX. Thread Pools Pada web server yang multithreading ada 2 masalah yang timbul : 1. Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya. 2. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem. Solusinya adalah dengan penggunaan thread pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools, dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika threadnya tersedia maka permintaan tersebut akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada 1 thread yang bebas. Keuntungan thread pool : 1. Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat. 2. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistem yang tidak bisa mendukung banyak thread yang berjalan secara concurrent . Jumlah thread dalam pool bisa tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yangconcurrent Thread Cancellation Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM (Java Virtual Machine) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread. Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda : 1. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread. 2. Defered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut. Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation. Sistem operasi akan mengambil kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang diberhentikan. Alternatifnya adalah dengan menggunakan deffered cancellation. Cara kerja dari deffered cancellation adalah dengan menggunakan 1 thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia bisa diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagai cancellation points . Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara asynchronous. Tetapi Pthread API menyediakan deferred cancellation. Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengijinkan deferred cancellation. Thread Java Threads di Java dibuat dengan cara : a. meng-extends class Threads b. men-implement interface Runnable Threads di Java diatur oleh Java Virtual Machine (JVM). Keunggulan Java Threads adalah: a. JVM menggunakan prioritas preemptive berdasarkan algoritma penjadualan. b. Semua threads di Java mempunyai prioritas. Prioritas tertinggi dijadualkan untuk dieksekusi oleh JVM. c. Jika ada 2 thread yang prioritasnya sama, digunakan algoritma First In First Out (FIFO). Keadaan Threads di Java dibagi menjadi 4 keadaan : a. new: sebuah thread pada keadaan ini ada ketika objek dari thread tersebut dibuat. b runnable: memanggil start() method untuk mengalokasikan memori bagi thread baru dalam JVM dan memanggil run() method untuk membuat objek. c. block: sebuah thread akan diblok jika menampilkan sebuah kalimat pengeblokan. Contohnya: sleep() atau suspend(). d. dead: sebuah thread dipindahkan ke keadaan dead ketika run() method berhenti atau ketika stop() method dipanggil. 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 processmemungkinkan 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 projectyang 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 darimultiprogramming, dimana CPU digunakan secara bergantian untuk proses yang berbeda. Suatu proses terdiri dari dua siklus yaitu Burst I/O danBurst 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. · Algoritma Penjadwalan Penjadwalan CPU menyangkut penentuan proses-proses yang ada dalam ready queue yang akan dialokasikan pada CPU. Terdapat beberapa algoritma penjadwalan CPU seperti dijelaskan pada poin-poin di bawah ini. § First Come-First Served Proses yang pertama kali meminta jatah waktu untuk menggunakan CPU akan dilayani terlebih dahulu. Pada skema ini, proses yang meminta CPU pertama kali akan dialokasikan ke CPU pertama kali. Rata-rata waktu tunggu (Average Waiting Time=AWT) cukup tinggi. Misalnya terdapat tiga proses yang dapat dengan urutan P1, P2, dan P3 dengan waktu CPU-burst dalam milidetik yang diberikan sebagai berikut : Process P1 P2 P3 Burst Time 24 3 3 Gant Chart dengan penjadwalan FCFS adalah sebagai berikut : Waktu tunggu untuk P1 adalah 0, P2 adalah 24 dan P3 adalah 27 sehingga rata-rata waktu tunggu adalah (0 + 24 + 27)/3 = 17 milidetik. Sedangkan apabila proses datang dengan urutan P2, P3, dan P1, hasil penjadwalan CPU dapat dilihat pada gant chart berikut Waktu tunggu sekarang untuk P1 adalah 6, P2 adalah 0 dan P3 adalah 3 sehingga rata-rata waktu tunggu adalah (6 + 0 + 3)/3 = 3 milidetik. Rata-rata waktu tunggu kasus ini jauh lebih baik dibandingkan dengan kasus sebelumnya. Pada penjadwalan CPU dimungkinkan terjadi Convoy effect apabila proses yang pendek berada pada proses yang panjang. Algoritma FCFS termasuk nonpreemptive. karena, sekali CPU dialokasikan pada suatu proses, maka proses tersebut tetap akan memakai CPU sampai proses tersebut melepaskannya, yaitu jika proses tersebut berhenti atau meminta I/O. § Shortest Job Pada penjadwalan SJF, proses yang memiliki CPU burst paling kecil dilayani terlebih dahulu. Terdapat dua skema : 1. Non preemptive, bila CPU diberikan pada proses, maka tidak bisa ditunda sampai CPU burst selesai. 2. Preemptive, jika proses baru datang dengan panjang CPU burst lebih pendek dari sisa waktu proses yang saat itu sedang dieksekusi, proses ini ditunda dan diganti dengan proses baru. Skema ini disebut dengan Shortest-Remaining- Time-First (SRTF). SJF adalah algoritma penjadwalan yang optimal dengan rata-rata waktu tunggu yang minimal. Misalnya terdapat empat proses dengan panjang CPU burst dalam milidetik. Process P1 P2 P3 P4 Arrival Time 0.0 2.0 4.0 5.0 Burst Time 7 4 1 4 Waktu tunggu untuk P1 adalah 0, P2 adalah 26, P3 adalah 3 dan P4 adalah 7 sehingga rata-rata waktu tunggu adalah (0 + 6 + 3 + 7)/4 = 4 milidetik. Sedangkan Penjadwalan proses dengan algoritma SRTF (preemptive) dapat dilihat pada gant chart berikut : Waktu tunggu untuk P1 adalah 9, P2 adalah 1, P3 adalah 0 dan P4 adalah 4 sehingga rata-rata waktu tunggu adalah (9 + 1 + 0 + 4)/4 = 3 milidetik. Meskipun algoritma ini optimal, namun pada kenyataannya sulit untuk diimplementasikan karena sulit untuk mengetahui panjang CPU burst berikutnya. Namun nilai ini dapat diprediksi. CPU burst berikutnya biasanya diprediksi sebagai suatu rata-rata eksponensial yang ditentukan dari CPU burst sebelumnya atau “Exponential Average”. dengan: τ n+1 = panjang CPU burst yang diperkirakan τ 0 = panjang CPU burst sebelumnya τ n = panjang CPU burst yang ke-n (yang sedang berlangsung) α = ukuran pembanding antara τ n+1 dengan τ n (0 sampai 1) Grafik hasil prediksi CPU burst dapat dilihat pada Gambar dibawah: Sebagai contoh, jika α = 0,5, dan CPU burst (τ n ) = 6 4 6 4 13 13 13 . . . τ n = 10 8 6 6 5 9 11 12 . . . Pada awalnya τ 0 = 6 dan τ n = 10, sehingga : τ 2 = 0,5 * 6 + (1 - 0,5) * 10 = 8 Nilai yang dapat digunakan untuk mencari τ 3 τ 3 = 0,5 * 4 + (1 - 0,5) * 8 = 6 · Dispatcher Dispatcher adalah suatu modul yang akan memberikan kontrol pada CPU terhadap penyeleksian proses yang dilakukan selama short-term scheduling. Fungsi-fungsi yang terkandung di dalam-nya meliputi: § Switching context; § Switching ke user-mode; Waktu yang diperlukan oleh dispatcher untuk menghentikan suatu proses dan memulai untuk menjalankan proses yang lainnya disebutdispatch latency. Karena dispatcher digunakan setiap berpindah proses,dispatcher harus secepat mungkin. · Priority Algoritma SJF adalah suatu kasus khusus dari penjadwalan berprioritas. Tiaptiap proses dilengkapi dengan nomor prioritas (integer). CPU dialokasikan untuk proses yang memiliki prioritas paling tinggi (nilai integer terkecil biasanya merupakan prioritas terbesar). Jika beberapa proses memiliki prioritas yang sama, maka akan digunakan algoritma FCFS. Penjadwalan berprioritas terdiri dari dua skema yaitu non preemptive dan preemptive. Jika ada proses P1 yang datang pada saat P0 sedang berjalan, maka akan dilihat prioritas P1. Seandainya prioritasP1 lebih besar dibanding dengan prioritas P0, maka pada non-preemptive, algoritma tetap akan menyelesaikan P0 sampai habis CPU burst-nya, dan meletakkan P1 pada posisi head queue. Sedangkan pada preemptive, P0 akan dihentikan dulu, dan CPU ganti dialokasikan untukP1. Misalnya terdapat lima proses P1, P2, P3, P4 dan P5 yang datang secara berurutan dengan CPU burst dalam milidetik. Process Burst Time Priority P1 10 3 P2 1 1 P3 2 3 P4 1 4 P5 5 2 Waktu tunggu untuk P1 adalah 6, P2 adalah 0, P3 adalah 16, P4 adalah 18 dan P5 adalah 1 sehingga rata-rata waktu tunggu adalah (6 + 0 +16 + 18 + 1)/5 = 8.2 milidetik. · Multiprocessor Jelaskan Sistem Real Time , Sistem Hard Realtime, Soft Realtime, Gambarkan Grafiknya Ø Sistem Real Time Real time system disebut juga dengan sistem waktu nyata. Sistem yang harus menghasilkan respon yang tepat dalam batas waktu yang telah ditentukan. Jika respon komputer melewati batas waktu tersebut, maka terjadi degradasi performansi atau kegagalan sistem. Sebuah Real time system adalah sistem yang kebenarannya secara logis didasarkan pada kebenaran hasil-hasil keluaran sistem dan ketepatan waktu hasil-hasil tersebut dikeluarkan. Aplikasi penggunaan sistem seperti ini adalah untuk memantau dan mengontrol peralatan seperti motor, assembly line, teleskop, atau instrumen lainnya. Peralatan telekomunikasi dan jaringan komputer biasanya juga membutuhkan pengendalian secara Real time. Komponen dari 1. 2. Sistem 3. Bahasa 4. Sistem Komunikasi. Real time Perangkat Operasi Pemrograman system ini Real Real adalah: keras, time, time, Suatu sistem komputasi dinamakan real-time jika sistem tersebut dapat mendukung eksekusi program / aplikasi dengan waktu yang memiliki batasan, atau dengan kata lain suatu sistem realtime harus memiliki : a. Batasan waktu dan memenuhi deadline, artinya bahwa aplikasi harus menyelesaikan tugasnya dalam waktu yang telah dibatasi atau ditentukan. b. Dapat diprediksi, artinya bahwa sistem harus bereaksi terhadap semua kemungkinan kejadian selama kejadian tersebut dapat diprediksi. c. Proses bersamaan, artinya jika ada beberapa proses yang terjadi bersamaan, maka semua deadline nya harus terpenuhi. d. Dapat mengerjakan hal-hal yang penting saja, yang tidak penting tidak perlu dikerjakan. e. Membuat processor agar bekerja lebih cepat, sehingga dapat ditingkatkan jumlah task yang diselesaikan. f. Menemukan tingkat effisiensi waktu. Ø Sistem Hard Realtime Sistem hard real-time dibutuhkan untuk menyelesaikan critical task dengan jaminan waktu tertentu. Jika kebutuhan waktu tidak terpenuhi, maka aplikasi akan gagal. Dalam definisi lain disebutkan bahwa kontrol sistem hard real-time dapat mentoleransi keterlambatan tidak lebih dari 100 mikro detik.Secara umum, sebuah proses di kirim dengan sebuah pernyataan jumlah waktu dimana dibutuhkan untuk menyelesaikan atau menjalankan I/O. Kemudian penjadwal dapat menjamin proses untuk selesai atau menolak permintaan karena tidak mungkin dilakukan. Mekanisme ini dikenal dengan resource reservation. Oleh karena itu setiap operasi harus dijamin dengan waktu maksimum. Pemberian jaminan seperti ini tidak dapat dilakukan dalam sistem dengan secondary storage atau virtual memory, karena sistem seperti ini tidak dapat meramalkan waktu yang dibutuhkan untuk mengeksekusi suatu proses. Diagramhard real-time dapat dilihat seperti Gambar berikut ini. Contoh: Dalam kehidupan sehari-hari adalah pada sistem pengontrol pesawat terbang. Dalam hal ini, keterlambatan sama sekali tidak boleh terjadi,karena dapat berakibat tidak terkontrolnya pesawat terbang. Nyawa penumpang yang ada dalam pesawat tergantung dari sistem ini, karena jika sistem pengontrol tidak dapat merespon tepat waktu, maka dapat menyebabkan kecelakaan yang merenggut korban jiwa. Ø Soft Realtime Komputasi soft real-time memiliki sedikit kelonggaran. Dalam sistem ini,proses yang kritis menerima prioritas lebih daripada yang lain. Walaupun menambah fungsi soft real-time ke sistem time sharing mungkin akan mengakibatkan ketidakadilan pembagian sumber daya dan mengakibatkan delay yang lebih lama, atau mungkin menyebabkan starvation, hasilnya adalah tujuan secara umum sistem yang dapat mendukung multimedia, grafik berkecepatan tinggi, dan variasi tugas yang tidak dapat diterima di lingkungan yang tidak mendukung komputasi soft realtime. Diagram soft real-time dapatdilihat seperti gambar berikut ini. Contoh: Penerapan sistem ini dalam kehidupan sehari-hari adalah pada alat penjual/pelayan otomatis. Jika mesin yang menggunakan sistem ini telah lama digunakan, maka mesin tersebut dapat mengalami penurunan kualitas,misalnya waktu pelayanannya menjadi lebih lambat dibandingkan ketika masih baru. Keterlambatan pada sistem ini tidak menyebabkan kecelakaan atau akibat fatal lainnya, melainkan hanya menyebabkan kerugian keuangan saja. Jika pelayanan mesin menjadi lambat, maka para pengguna dapat saja merasa tidak puas dan akhirnya dapat menurunkan pendapatan pemilik mesin. Setelah batas waktu yang diberikan telah habis, pada sistem hard realtime,aplikasi yang dijalankan langsung dihentikan. Akan tetapi, pada sistem softreal-time, aplikasi yang telah habis masa waktu pengerjaan tugasnya,dihentikan secara bertahap atau dengan kata lain masih diberikan toleransi waktu. Mengimplementasikan fungsi soft real-time membutuhkan design yang hati-hati dan aspek yang berkaitan dengan sistem operasi. Pertama,sistem harus punya prioritas penjadualan, dan proses real-time harus memiliki prioritas tertinggi, tidak melampaui waktu, walaupun prioritas non realtime dapat terjadi.Kedua, dispatch latency harus lebih kecil. Semakin kecil latency, semakin cepat real-time proses mengeksekusi. Untuk menjaga dispatch tetap rendah, kita butuh agar system call untuk preemptible. Ada beberapa cara untuk mencapai tujuan ini. Pertama adalah dengan memasukkan preemption points di durasi system call yang lama, yang memeriksa apakah prioritas utama butuh untuk dieksekusi. Jika sudah, maka contex switch mengambil alih, ketika high priority proses selesai, proses yang diinterupsi meneruskan dengan system call. Points premption dapat diganti hanya di lokasi yang aman di kernel dimana kernel struktur tidak dapat dimodifikasi. Metoda yang lain adalah dengan membuat semua kernel preemptible. Karena operasi yang benar dapat dijamin, semua struktur data kernel harus diproteksi dengan mekanisme sinkronisasi. Dengan metode ini, kernel dapat selalu di preemptible, karena setiap data kernel yang sedang di update diproteksi dengan pemberian prioritas yang tinggi. Jika ada proses dengan prioritas tinggi ingin membaca atau memodifikasi data kernel yang sedang dijalankan, prioritas yang tinggi harus menunggu sampai proses dengan prioritas rendah tersebut selesai. Situasi seperti ini dikenal dengan priority inversion. Kenyataanya, serangkaian proses dapat saja mengakses sumber daya yang sedang dibutuhkan oleh proses yang lebih tinggi prioritasnya. Masalah ini dapat diatasi dengan priority-inheritance protocol, yaitu semua proses yang sedang mengakses sumber daya mendapat prioritas tinggi sampai selesai menggunakan sumber daya. Setelah selesai, prioritas proses ini dikembalikan menjadi seperti semula. Penjadwalan AMP Asymetric multiprocessing Asymmetric Multiprocessing, atau AMP, adalah pengganti sementara perangkat lunak untuk menangani beberapa CPU sebelumSymmetric Multiprocessing atau SMP yang tersedia. Pendekatan pertama untuk penjadwalan multiprosessor adalah penjadwalan asymmetric multiprocessing atau biasa disebut juga sebagai penjadwalan Master Slave MultiProcessor. Dimana pada metode ini satu prosesor bertindak sebagai master dan prosesor lainnya sebagai slave. Master Processor bertugas untuk menjadualkan dan mengalokasikan proses yang akan dijalankan oleh Slave Processors. Master Processor melakukan pekerjaan yang berhubungan dengan System, Slave Processor melayani user requests dalam pengeksekusian program. Pemrosesan yang banyak tidak menyebabkan penurunan performance. Metode ini sederhana karena hanya satu prosesor yang mengakses struktur data sistem dan juga mengurangi data sharing. Sebagai contoh, prosesor master memilih proses yang akan dieksekusi, kemudian mencari prosesor yang available, dan memberikan instruksi start processor. Prosesor slave memulai eksekusi pada lokasi memori yang dituju. Saat slave mengalami sebuah kondisi tertentu, prosesor slave memberi interupsi kepada prosesormaster dan berhenti untuk menunggu perintah selanjutnya. Perlu diketahui bahwa prosesor slave yang berbeda dapat ditujukan untuk suatu proses yang sama pada waktu yang berbeda. Master processor dapat mengeksekusi OS dan menangani I/O, sedangkan sisanya processor tidak punya kemampuan I/O dan disebut sebagai Attached Processor (Aps). APs mengeksekusi kodekode user dibawah pengawasan master processor. Penjadwalan SMP Penjadwalan SMP adalah pendekatan kedua untuk penjadwalan prosesor jamak. Pada metode ini setiap prosesor menjadwalkan dirinya sendiri (self scheduling). Penjadwalan terlaksana dengan menjadwalkan setiap prosesor untuk memeriksa antrian ready dan memilih suatu proses untuk dieksekusi. Jika suatu sistem prosesor jamak mencoba untuk mengakses dan mengupdate suatu struktur data, penjadwal dari prosesor-prosesor tersebut harus diprogram dengan hati-hati, kita harus yakin bahwa dua prosesor tidak memilih proses yang sama dan proses tersebut tidak hilang dari antrian. Secara virtual, semua sistem operasi modern mendukung SMP, termasuk Windows XP, Windows 2000, Windows Vista, Solaris, Linux, dan Mac OS X. a. Jelaskan Load Balancing Dalam sistem SMP, sangat penting untuk menjaga keseimbangan workload (banyaknya task yang harus diselesaikan oleh prosesor)antara semua prosesor untuk memaksimalkan keuntungan memiliki multiprocessor. Jika tidak, mungkin satu atau lebih prosesor idle disaat prosesor lain harus bekerja keras dengan workload yang tinggi. Load balancing adalah usaha untuk menjaga workload terdistribusi sama rata untuk semua prosesor dalam sistem SMP. Perlu diperhatikan bahwa load balancing hanya perlu dilakukan pada sistem dimana setiap prosesor memiliki antrian tersendiri( private queue) untuk proses-proses yang berstatus ready. Pada sistem dengan antrian yang biasa (common queue), load balancing tidak diperlukan karena sekali prosesor menjadi idle, prosesor tersebut segera mengerjakan proses yang dapat dilaksanakan dari antrian biasa tersebut. Perlu juga diperhatikan bahwa pada sebagian besar sistem operasi kontemporer mendukung SMP, jadi setiap prosesor bisa memiliki private queue. Ada dua jenis load balancing, yakni: · Push migration, pada kondisi ini ada suatu task spesifik yang secara berkala memeriksa load dari tiap-tiap prosesor. Jika terdapat ketidakseimbangan, maka dilakukan perataan dengan memindahkan( pushing) proses dari yang kelebihan muatan ke prosesor yangidle atau yang memiliki muatan lebih sedikit. · Pull migration, kondisi ini terjadi saat prosesor yang idle menarik( pulling) proses yang sedang menunggu dari prosesor yang sibuk. Kedua pendekatan tersebut tidak harus mutually exclusive dan dalam kenyataannya sering diimplementasikan secara paralel pada sistem load-balancing. b. Jelaskan Symetric Multhithreading SMT (Symetric Multithreading) adalah strategi alternatif untuk menjalankan beberapa thread secara bersamaan. Sistem SMP mengizinkan beberapa thread untuk berjalan secara bersamaan dengan menyediakan banyak physical processor. Ada sebuah strategi alternatif yang lebih cenderung untuk menyediakan logical processor daripada physical processor. Strategi ini dikenal sebagai Symetric Multithreading (SMT). SMT juga biasa disebut teknologi hyperthreading dalam prosessor intel. Ide dari SMT adalah menciptakan banyak logical prosessor dalam suatu physical. Prosessor yang sama mempresentasikan beberapa prosessor kepada sistem operasi. Setiap logical prosessor mempunyai state arsitekturnya sendiri yang mencakup general purpose dan machine state register. Lebih jauh lagi, setiap logical prosessor bertanggung jawab pada penanganan interupsinya sendiri, yang brarti bahwa interupsi cenderung dikirimkan ke logical prosessor dan ditangani oleh logical processor bukan physical prosessor. Denagn kata lain, setiap logical prosessor membagi resource dari physical prosessornya seperti chace dan bus. Gambar diatas mengilustrasikan suatu tipe arsitektur SMT dengan dua physical prosessor dengan masing-masing punya ua logical processor. Dari sudut pandang sistem operasi pada sistem ini terdapat empat prosessor. Perlu diketahui bahwa SMT adalah fitur yang disediakan dalam hardware, bukan software. Sehingga hardware harus menyediakan representasi state arsitektur dari setiap logical prosessor sebagaimana representasi dari penanganan interupsinya. Sistem operasi tidak perlu didesain khusus jika berjalan pada sistem SMT, akan tetapi performa yang diharapkan tidak selalu terjadi pada sistem operasi yang berjalan pada SMT. Misalnya suatu sistem memiliki 2 physical prosessor, keduanya idle, penjadwal pertama kali akan lebih memilih untuk membagi thread ke physical prosessor daripada membaginya ke logical processor dalam physical prosessor yang sama, sehingga logical prosessor pada suatu physical prosessor bisa menjadi sibuk sedangkan physical prosesso yang lain menjadi idle. · Microcernels, kategori kernel, keuntungan kernel Mikrokernel Dalam pengetahuan ilmu komputer, mikrokernel merupakan seperangkat perangkat lunak dalam jumlah minimum yang meyediakan beragam mekanisme dasar yang dibutuhkan untuk bekerja sebagai sebuah sistem operasi, seperti halnya manajemen pengalamatan ruang tingkat rendah, manajemen thread, dan komunikasi antar proses. Dalam implementasinya mikrokernel merupakan satu-satunya perangkat lunak yang berjalan dengan tingkat kewenangan tertinggi (umumnya disebut sebagai modus supervisor atau modus kernel) dari serangkaian level kewenangan yang tersedia pada perangkat kerasnya. Layanan yang disediakan oleh sebuah sistem operasi beberapa diantaranya adalah device driver, protokol jaringan, sistem berkas, dan kode antarmuka pengguna yang berada dalam ruang pengguna Mikrokernel sangat erat terkait dengan exokernel , serta memiliki banyak kesamaan dengan hypervisor, namun implementasinya lebih bersifat minimalis, dan secara spesifik untuk mendukung pengimplementasian mesin virtual. Mikrokernel L4 sering juga disebut sebagaihypervisor, yang mengindikasikan kemungkinan pengimplementasian sebuah mikrokernel sebagai hypervisor. Istilah nanokernel dalam sejarahnya digunakan untuk membedakan mikrokernel saat ini dengan istilah mikrokernel sebelumnya yang menyediakan layanan sistem aktual, namun secara prinsip minimalitas menurut Jochen Liedtke dalam disain mikrokernel L4 menyebutkan bahwa istilahistilah tersebut memiliki arti yang kurang lebih sama. Karena sebuah mikrokernal harus dapat meletakkan layanan-layanan sistem operasi pada level teratas, fungsionalitas yang harus dimiliki oleh mikrokernel setidaknya melingkupi: · Mekanisme pengaturan pengalamatan ruang, dibutuhkan untuk mengatur proteksi ingatan. · Mekanisme eksekusi secara abstrak untuk mengatur alokasi CPU biasanya adalah thread atau pengaktifan penjadual; dan · Komunikasi antarproses dibutuhkan untuk menyediakan mekanisme pemanggilan peladen yang berjalan pada alamat ruang spesifik. Pada umumnya mikrokernel mendukung proses dan menajemen memori yang minimal, sebagai tambahan untuk fasilitas komunikasi. Fungsi utama mikrokernel adalah mendukung fasilitas komunikasi antara program klien dan bermacam-macam layanan yang juga berjalan di user space. Komunikasi yang dilakukan secara tidak langsung, didukung oleh sistem message passing, dengan bertukar pesan melalui mikrokernel. Salah satu keuntungan mikrokernel adalah ketika layanan baru akan ditambahkan ke user space, kernel tidak perlu dimodifikasi. Kalau pun harus, perubahan akan lebih sedikit. Hasil sistem operasinya lebih mudah untuk ditempatkan pada suatu desain perangkat keras ke desain lainnya. Mikrokernel juga mendukung keamanan reliabilitas lebih, karena kebanyakan layanan berjalan sebagai pengguna proses. Jika layanan gagal, sistem operasi lainnya tetap terjaga. Beberapa sistem operasi yang menggunakan microkernel: · IBM AIX, sebuah versi UNIX dari IBM · Amoeba, sebuah kernel yang dikembangkan untuk tujuan edukasi · Kernel Mach, yang digunakan di dalam sistem operasi GNU/Hurd, NexTSTEP, OPENSTEP, dan Mac OS/X · Minix, kernel yang dikembangkan oleh Andrew Tanenbaum untuk tujuan edukasi · Symbian OS, sebuah sistem operasi yang populer digunakan pada hand phone, handheld device, embedded device, dan PDA Phone. Kelebihan Mikrokernel 1. Ketika layanan baru akan ditambahkan ke user-space,kernel tidak perlu dimodifikasi. 2. Mendukung keamanan reliabilitas lebih, karena sebagianbesar pada level pengguna, SO jadi terjaga. 3. Interface yang seragam. Proses tidak lagi dibedakan, baik antara kernel-level maupun userlevel,karena semuanya berkomunikasi via message passing. 4. Extensibility. Bisa menambahkan fitur-fitur baru tanpa perlu melakukan kompilasi ulang. 5. Flexibility. Fitur-fitur yang sudah ada bisa dikurangi, atau dimodifikasi sesuai dengan kebutuhan sehingga menjadi lebih efisien. Misalnya tidak semua pengguna membutuhkan security yang sangat ketat, atau kemampuan untuk melakukan distributed computing. 6. Portability. Pada mikro kernel, semua atau sebagian besar kode yang prosesor-spesifik berada di dalamnya. Jadi, proses porting ke prosesor lain bisa dilakukan dengan relatif sedikit usaha. Pada kelompok desktop misalnya, tampaknya dominasi Intel makin kuat. Tapi, sampai seberapa lama itu bisa bertahan? Karena itulah, portability adalah salah satu isu yang sangat penting. 7. Reliability. Semakin besar suatu software, maka tentulah semakin sulit untuk menjamin reliabilitynya. Desain dengan pendekatan berlapis sangatlah membantu, dan dengan pendekatan mikro kernel bisa lebih lagi. Mikro kernel dapat diuji secara ekstensif karena dia menggunakan API yang sedikit,sehingga bisa meningkatkan kualitas code di luar kernel. 8. Support for object-oriented OS. Model mikro kernel sangat sesuai untuk mengembangkan sistem operasi yang berbasis object-oriented. Contoh sistem operasi yang menggunakan mikro kernel adalah Mac OS X dan QNX. Kinerja Mikrokernel Untuk mengatur kegiatan proses mereka perlu saling berkomunikasi. Linux mendukung berbagai mekanisme komunikasi antar proses (KAP). Sinyal dan pemipaan merupakan dua di antaranya, tapi linux juga mendukung system sistem ke lima mekanisme KAP. Manajemen I/O berguna Untuk mengelola perangkat masukan/keluaran, dimana perangkat tersebut digunakan proses tertenty, sehingga perlu dijaga agar proses lain tidak memakainya. Sistem operasi perlu mengetahui status operasi masukan/keluaran dan lokasi memori utama yang digunakan untuk transfer data. Rancangan Mikrokernel a. Manajemen memory level bawah (lowlevel):Memetakan setiap page virtual ke frame fisik. Sebagian besar tugas manajemen memory terjadi dalam user space. b. Komunikasi antar proses (Interprocess Communication) atau thread dalam suatu SO mikrokernel adalah melalui message. Suatu message menyertakan: § Header yang mengidetifikasi proses pengiriman dan penerimaan, dan § Body yang mengandung data langsung, pointer ke suatu block data, atau beberapa informasi kontrol mengenai proses. c. Manajemen I/O & Interrupt Di dalam mikrokernel, adalah mungkin menangani interupsi hardware sebagai message dan menyertakan port I/O dalam ruang alamat. - Proses user-level tertentu dilewatkan ke interrupt & kernel memelihara pemetaan tersebut. ü Kategori Cernels Kernel adalah suatu perangkat lunak yang menjadi bagian utama dari sebuah sistem operasi. Ada 4 kategori kernel: 1. Monolithic kernel. Kernel yang menyediakan abstraksi perangkat keras yang kaya dan tangguh. 2. Microkernel. Kernel yang menyediakan hanya sekumpulan kecil abstraksi perangkat keras sederhana, dan menggunakan aplikasi-aplikasi yang disebut sebagai server untuk menyediakan fungsi-fungsi lainnya. 3. Hybrid (modifikasi dari microkernel). Kernel yang mirip microkernel, tetapi ia juga memasukkan beberapa kode tambahan di kernel agar ia menjadi lebih cepat. 4. Exokernel. Kernel yang tidak menyediakan sama sekali abstraksi hardware, tapi ia menyediakan sekumpulan pustaka yang menyediakan fungsi-fungsi akses ke perangkat keras secara langsung atau hampir-hampir langsung. Keuntungan Cernels Salah satu keuntungan kernel yang bersifat modular, berganti-ganti hardware menjadi lebih mudah, karena anda tinggal menge-probe suatu modul, atau jika belum ada anda tinggal mem-build satu modul saja. Kerugiannya adalah relatif rentan terhadapat masalah security, karena biasanya script kiddies memasukkan suatu modul ke dalam kernel (dengan harapan proses yang dimilikinya tidak diketahui oleh admin sistem yang bersangkutan).