Proses dan Penjadwalan Proses dan Penjadwalan v v v v v v v v v v Konsep Proses Penjadualan Proses Interaksi Proses Komunikasi Antar Proses Konsep Thread Ilustrasi Thread dengan Linux dan Java Konsep Dasar dan Kriteria Penjadualan; Algoritma Penjadwalan Penjadwalan Multiprocessor Real Time System Konsep Proses v v Proses adalah suatu program yang sedang dieksekusi Suatu proses meliputi: à Program counter Tempat untuk menyimpan alamat suatu proses yang akan dieksekusi selanjutnya à Stack tempat penyimpanan temporary data yang dibutuhkan selama program dieksekusi à Data section mengandung variabel global dari suatu proses Status Proses Suatu proses dapat berstatus: v New: pada saat proses pertama kali dibuat v Running: pada saat proses sedang dieksekusi v Waiting: proses menunggu suatu event lain (contoh: proses I/O) v Ready: proses siap untuk diekseskusi v Terminated: pada saat proses sudah selesai dieksekusi Diagram Status Suatu Proses PCB (Process Control Block) v Setiap proses direpresentasikan kedalam sistem operasi oleh PCB v PCB meliputi informasi yang berhubungan dengan proses: à Process state à Program counter à CPU registers à CPU scheduling information à Memory-management information à Accounting information à I/O status information PCB (Process Control Block) Penjadwalan Antrian v Umumnya setiap proses akan berada dalam v beberapa tahap antrian : v job queue : ketika proses memasuki sistem v ready queue : proses yang hidup pada memori utama, siap dan menunggu untuk di-eksekusi v device queue : bila proses tersebut menunggu peralatan I/O tertentu Ready Queue dan Beberapa I/O Device Queue Diagram Antrian Penjadwal Bertugas memproses antrian-antrian Ada 2 macam : 1. Long-term scheduler (or job scheduler) : menentukan proses mana yang harus dimasukkan ke dalam ready queue. 2. Short-term scheduler (or CPU scheduler) : menentukan proses mana yang selanjutnya akan dieksekusi dan mengalokasikan CPU Penjadwal Medium-term Yang perlu diketahui v Short-term scheduler lebih sering dipanggil (hanya dalam waktu millisecond). v Long-term scheduler jarang dipanggil (dalam hitungan detik, menit). v Proses dapat juga dibagi atas 2 macam : àI/O-bound process – menghabiskan waktu lebih banyak untuk mengerjakan I/O daripada di CPU à short CPU bursts. àCPU-bound process – jarang melakukan permintaan I/O, menggunakan lebih banyak waktunya di CPU à long CPU bursts àSistem dengan kinerja yang terbaik akan memiliki kombinasi proses CPU bound dan I/O bound yang seimbang. Context Switch Context Switch v Pada saat CPU beralih ke proses lain, sistem harus menyimpan state dari proses lama dan mengambil state dari proses yang baru. v Tugas ini dilakukan oleh context switch Interaksi Proses v Sistem operasi akhir-akhir ini menjalankan program secara simultan (concurrent). v Program yang dijalankan secara simultan itu dapat bekerja sama dengan proses lain ataupun bekerja sendiri. Cooperating Processes v Proses yang independen : proses yang tidak bisa dipengaruhi dan tidak bisa mempengaruhi proses lain v Proses yang cooperating : proses yang bisa mempengaruhi atau dipengaruhi oleh proses lain Alasan dipakainya Cooperating Processes vInformation Sharing vComputation Speedup vModularity vConvenience Information sharing Menggunakan informasi(resource) yang sama untuk beberapa proses Computation Speedup Suatu task tertentu bisa dipecah menjadi beberapa cooperating processes sehingga bisa dikerjakan secara paralel sehingga menjadi lebih cepat selesai Modularity Pembuatan suatu sistem yang moduler dengan memecahkan fungsi-fungsi dari sistem tersebut menjadi beberapa proses atau thread Convenience v User bisa dengan mudah mengerjakan sesuatu yang berbeda dalam waktu yang sama v Contoh : satu user bisa saja secara bersamaan mengetik dan mengedit serta mencetak suatu halaman tertentu Contoh Coop. Processes : Consumer-Producer problem v Produsen : memproduksi barang v Konsumer : menghabiskan barang v Perlu diperhatikan bahwa barang yang diproduksi oleh produsen dan yang dihabiskan oleh konsumer adalah sama Consumer-Producer problem v Suatu paradigma yang umum untuk cooperating processes v Terdapat 2 macam consumer-producer problem: à Unbounded-buffer à Bounded-buffer Unbounded-buffer Tidak adanya batas bagi produsen untuk memproduksi barang Bounded-buffer v Adanya suatu batas bagi produsen untuk memproduksi barang v Consumer harus menunggu sampai buffer kosong dan producer harus menunggu sampai buffer penuh. RPC (Remote Procedure Call) Client Client Clientmengirim mengirim pesan pesanberisi berisi parameter parameterdan dan prosedure yang prosedure yangakan akan dipanggil dipanggil Server Server Servermenunggu menunggu client client Proses dan parameter Server Servermembaca membaca parameter parameterdan dan menjalankan menjalankan prosedur proseduryang yang dipanggil dipanggil Client Clientmenunggu menunggu response response Client Clientmengirim mengirim pesan pesanberisi berisi parameter parameterdan dan prosedure yang prosedure yangakan akan dipanggil dipanggil Server Servermengirim mengirim hasilnya hasilnyake keclient client Output Server Servermenunggu menunggu client client Kelebihan RPC (1) v Relatif mudah digunakan: àPemanggilan remote procedure tidak jauh berbeda dibandingkan pemanggilan local procedure. Sehingga pemrogram dpt berkonsentrasi pd software logic, tidak perlu memikirkan low level details spt soket, marshalling & unmarshalling. v Relatively portable: à S/w developed using RPC is easier to be ported compared to sockets. Kelebihan RPC (2) vRobust: àSejak th 1980-an RPC telah banyak digunakan dlm pengembangan mission-critical application yg memerlukan scalability, fault tolerance, & reliability. Kekurangan RPC v Tidak fleksibel thdp perubahan: àStatic relationship between client & server at run-time. v Berdasarkan prosedural/structured programming yang sudah ketinggalan jaman dibandingkan OOP. Format Pesan RPC v Tipe Pesan. Bisa call(0) atau reply(1). v Status Pesan. Bisa berbeda tergantung jenis operasi call atau reply. v Rpcvers. Versi RPC (integer tidak bertanda). v Prog, vers and proc. Menjelaskan semua detil dari remote prosedur (integer tidak bertanda). v Cred. Credentials Autentikasi. v Verf. Verifikasi Autentikasi. v Prosedure parameter. Java RMI (1) v Memungkinkan kita untuk menulis sebuah object yang dapat diakses secara remote. v Stub dan skleton bertindak sebagai proxy antara client dan server v Stub dan Skleton dapat dibuat/compile melalui interface yang kita buat menggunkan tool rmic (rmi compiler), dimana semua remote method didefinisikan. Java RMI (2) v Interface mendifinisikan semua remote method yang kita sediakan public interface StatsInterface extends Remote { int getNama(int uid) throws RemoteException; int SetNama(String nama) throws RemoteException; } v Untuk membuat Stub dan Skleton gunakan : RMIC StatsInterFace Java RMI (3) Client RMI Client Client RMI RMI Server Remote Object JDBC DB Stub & Skeleton Mengatur remote reference Register Pesan Client Stub class Proxy untuk remoteObject. Transport Layer Server Skeleton class Remote object Socket Apa itu Socket? v Sebuah programming interface ke OS yang memungkinkan proses untuk saling berkomunikasi ke proses lainya v Eksekusi TCP/UDP berlangsung di level kernel, socket bertindak sebagai jembatan ke user space. v Di java ada 4 jenis socket àDatagramSocket – untuk UDP àMulticastSocket – turunan dari DatagramSocket àServerSocket – untuk TCP server àSocket – endpoint dari TCP stream Ilustrasi Socket Dikendalikan Oleh programer Dikendalikan Oleh OS process process socket TCP with buffers, variables Client Atau server internet socket TCP with buffers, variables Client Atau server Dikendalikan Oleh programer Dikendalikan Oleh OS Threads • Definisi: unit dasar dari penggunaan CPU, thread terdiri dari thread ID, program counter, set register, dan stack. • Thread juga sering 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 (1) v Responsiveness : Melakukan multithreading pada aplikasi yang interaktif dapat membuat program terus berjalan meskipun bagian dari program tersebut diblok atau sedang menjalankan operasi yang panjang, karena itu dapat meningkatkan respon kepada user. v 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. Keuntungan Thread (2) v Economy: karena mahal untuk mengalokasikan memori dan sumber daya untuk pembuatan proses. Alternatifnya adalah dengan pengunaan thread sebab thread berbagi sumber daya dari proses yang memilikinya oleh sebab itu akan lebih ekonomis untuk membuat sebuah thread v Utilization of multiproccesor architectures: keuntungan dari multithreading dapat meningkat secara drastis dalam arsitektur multiprosesor, dimana setiap thread dapat berjalan secara pararel pada prosesor yang berbeda. User dan Kernel Threads (1) User 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. User dan Kernel Threads (2) 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. Multithreading Models ( Many to One Model ) Many to One Model memetakan beberapa user-level threads ke satu kernel threads. Multithreading Models ( One to One Model ) One to One model memetakan setiap user thread ke kernel thread. Multithreading Models ( Many to Many Model ) Many to many model memetakan banyak user-level thread ke kernel thread yang lebih sedikit atau sama. Fork Bila sebuah thread di program memanggil fork maka ada dua skenario yang bisa terjadi : 1. Semua thread akan diduplikasi. 2. Hanya thread yang memanggil fork yang akan didupliakasi. Cancellation v Thread cancellation adalah sebuah tugas untuk memberhentikan thread sebelum thread tersebut selesai. v Thread yang akan diberhentikan disebut target thread. v Dua skenario thread cancellationn : 1. Asynchronous cancellation : satu thread memberhentikan target thread seketika itu juga. 2. Deferred cancellation : target thread secara periodik dapat mengecek apakah ia harus berhenti, skenario ini memberi kesempatan kepada target thread untuk memberhentikan dirinya sendiri. Signal Handling (1) v Sebuah sinyal digunakan di sistem UNIX untuk memberitahu sebuah proses kalau peristiwa tertentu sedang terjadi. v Pola sinyal : - Sebuah sinyal diaktifkan oleh munculnya suatu peristiwa. - Sinyal yang diaktifkan dikirim ke proses. - Sesudah dikirim, sinyal tersebut harus ditangani. Signal Handling (2) v Setiap sinyal bisa ditangani oleh salah satu dari 2 handler yang ada : 1. A default signal handler 2. A user defined signal handler v Beberapa pilihan kemana sebuah sinyal seharusnya dikirim : 1. Mengirim sinyal ke thread yang dituju. 2. Mengirim sinyal ke semua thread dalam proses. 3. Mengirim sinyal ke thread tertentu dalam proses. 4. Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses tersebut. Thread Pools (1) v Gagasan umum : Membuat beberapa thread pada start-up proses dan menempatkan mereka ke dalam sebuah pool dimana mereka diam dan menunggu untuk bekerja. v 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 Pools (2) v Thread specific data Duplikat data tertentu dari suatu thread pada suatu situasi. v Pthreads Merujuk kepada POSIX standard ( IEEE 1003 . 1 c ) mendefinisikan API untuk pembuatan thread dan sinkronisasi. Ini merupakan spesifikasi thread behaviour dan bukan merupakan implmentasi. Desainer OS boleh mengimplementasikan spesifikasi tersebut dalam cara apapun yang mereka mau. Linux Threads (1) v Threads pada linux mulai digunakan di kernel versi 2.2 v Threads lebih dianggap sebagai tasks Linux Threads (2) v Linux menyediakan 2 system call : àfork() àclone() v clone() mirip seperti 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 (1) v Threads di Java dibuat dengan cara : àmeng-extends class Threads àmen-implement interface Runnable v Threads di Java diatur oleh Java Virtual Machine (JVM) Java Threads (2) v Keunggulan Java Threads adalah: ÒJVM menggunakan prioritas preemptive berdasarkan algoritma penjadualan ÒSemua threads di Java mempunyai prioritas. Prioritas tertinggi dijadualkan untuk dieksekusi oleh JVM ÒJika ada 2 thread yang prioritasnya sama, digunakan algoritma First In First Out (FIFO) Java Threads (3) v 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. Java Threads (4) à block: 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. Konsep Dasar Kriteria Penjadwalan (1) v Tujuan Utama : untuk mempunyai proses berjalan secara bersamaan, untuk memaksimalkan kinerja dari CPU. v Pemanfaatan CPU maksimum diperoleh dengan multiprograming v CPU-I/O Burst Cycle- Pelaksanaan proses terdiri dari suatu siklus tunggu I/O dan eksekusi CPU Konsep Dasar Kriteria Penjadwalan (1) v Distribusi Burst CPU Penjadwal CPU (1) v Penjadwal memilih dari sekian proses yang ada di memori yang sudah siap dieksekusi, dan mengalokasikan CPU untuk mengeksekusinya v 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. Penjadwal CPU (2) • Penjadwalan 1 dan 4 adalah non preemptive; Maksudnya adalah Dalam penjadual nonpreemptive sekali CPU telah dialokasikan untuk sebuah proses, maka tidak bisa di ganggu, contoh pada windows 3.x • Selain itu bersifat preemptive Dispatcher vArti :Modul pemberi kontrol CPU ke proses, fungsi ini meliputi : à switching context à switching to user mode à Lompat dari suatu bagian di progam user untuk mengulang progam. vDispatch Latency :waktu yang dibutuhkan untuk menstop satu proses dan menjalankan proses lainnya Kriteria Penjadwalan v Adil (fairness) v Utilisasi CPU (utilization) v Throughput v Turnaround Time v Waktu Tunggu(waiting time) v Waktu Respon(respond time) Kriteria Optimasi v Biasanya yang dilakukan adalah v Memaksimalkan CPU utilization dan throughput v Meminimalkan turnaround time, waiting time, dan response time v Dalam situasi tertentu diambil rata-rata Algoritma Penjadwalan v First-Come, First-Served v Shortest-Job-First v Priority v Round-Robin v Multilevel Queue v Multilevel Feedback Queue First-Come, First-Serve (1) vProses pertama yg datang, mendapat alokasi CPU (implementasi antrian FIFO) CPU 1 2 3 4 CPU 2 3 4 5 5 First-Come, First-Serve (2) vAvg waiting time is often quite long 0 0 8 1 2 vEfek konvoi vnonpreemptive 9 10 10 Shortest-Job-First v Mendahulukan proses dengan burst time terkecil (shortest next CPU burst) v Avg waiting time terkecil (optimal) v Sulit menentukan panjang CPU burst (prediksi) v Preemptive or not. Preemptive=shortest-remaining-timefirst Priority v Tiap proses diberikan skala prioritas v Skala bisa ditentukan secara internal/eksternal v Preemptive or not. v Indefinite blocking (starvation), diatasi dengan aging Round-Robin v Preemptive first-come, first-served v Digilir selama time quantum v Performa tergantung besar time quantum. Time quantum sangat besar (infinit), akan seperti FCFS. Kalau terlalu kecil, context switch terlalu banyak Multilevel Queue v Terdiri dari beberapa antrian (queue) v Tiap antrian mempunyai skala prioritas v Antrian tidak akan mendapat jatah CPU, selama masih ada antrian dg prioritas lebih tinggi yg belum mendapat jatah Multilevel Feedback Queue v Proses bisa pindah antar antrian v Umumnya antrian high priority menggunakan RR, yang rendah FCFS v Parameternya 1. Jumlah antrian 2. Algoritma tiap antrian 3. Kapan naik 4. Kapan turun 5. Yang mana yang mendapat jatah, jika diperlukan Penjadwalan Multiprocessor (1) v Sistem yg dimaksud adalah homogen – dimana tiap prosesor memiliki fungsi yg sama. v Asumsi bahwa tiap proses dapat mengakses memori dgn cara yg sama [Uniform Memory Access] v Pembatasan dalam penjadwalan juga terjadi dalam MultiProsesor. Misalnya ; kemungkinan adanya load sharing. v Untuk mengatasi hal itu maka tiap prosesor memiliki kemampuan penjadwalan mandiri [self-scheduling]. v Masalah lain yg mungkin terjadi, yaitu kemungkinan terlewatinya sebuah proses dari antrian [ready queue] atau beberapa prosesor memilih untuk mengeksekusi proses yg sama. Penjadwalan Multiprocessor (2) v Sebuah Master-Slave Structure digunakan untuk menjawab permasalahan seperti itu. v Master-Slave structure adalah suatu struktur dimana satu prosesor ditunjuk sebagai Master. Master inilah yg akan bertanggung jawab dalam hal penjadwalan, memproses I/O, dan sebagainya. Sedangkan prosesor yg lain [Slave] hanya bertugas untuk mengeksekusi user code. v Hal ini disebut juga sebagai Asymmetric multiprocessing, krn hanya satu prosesor yg dpt mengakses struktur data dari sistem. Real Time Scheduler v v v Definisi Pembagian Real Time Diagram Real Time Pembagian Real Time I. Hard-Real Time v Menjamin proses dapat diselesaiken dengan tepat waktu. v Pada saat proses dikirim,terdapat statement yang menyatakan jumlah waktu yang diperlukan untuk menyelesaikan proses tersebut. v Scheduler memainkan peranan yang penting. v Jika permintaan alokasi waktu terlalu besar,maka scheduler akan menolaknya. Pembagian Real Time II. Soft-Real Time v Memiliki keterbatasan yang lebih rendah dari hardtime system. v Critical task diberikan prioritas yang lebih tinggi dari yang lainnya. v Memerlukan desain scheduler yang lebih cermat, karena harus men-set prioritas. v Dapat menyebabkan pembagian resource yang kurang adil, delay yang lama, sampai terjadinya starvation. Diagram Real Time # Setelah deadline, proses langsung berhenti. # Setelah deadline, proses berhenti bertahap.