What is CPU Scheduling?
CPU scheduling is a process which allows one process to use the CPU while the execution of another process is on hold(in waiting state) due to unavailability of any resource like I/O etc, thereby making full use of CPU. The aim of CPU scheduling is to make the system efficient, fast and fair.
Why do we need Scheduling?
suatu typical process melibatkan baik I/O time maupun CPU time. Dalam sistem uni programming seperti MS-DOS, waktu yang dihabiskan untuk menunggu I/O terbuang percuma dan CPU kosong selama waktu tersebut. Dalam sistem multi programming, satu proses dapat menggunakan CPU sementara proses lainnya menunggu I/O. Ini hanya dapat dilakukan dengan process scheduling.
First-come, First-served
Layaknya mengantri pada restoran, pada Scheduling, terdapat algoritma yang bernama First-come, First-serve dimana algoritma ini merupakan algoritma paling sederhana, tetapi algoritma ini dapat menyebabkan short processes menunggu proses yang sangat lama.
Preemptive Scheduling vs Non-preemptive Scheduling
Preemptive Scheduling digunakan ketika suatu proses beralih dari running state ke ready state atau dari waiting state ke ready state. Sedangkan Non-preemptive Scheduling digunakan ketika suatu proses berhenti atau proses beralih dari running state ke waiting state. Disini dijelaskan juga perbedaan yang lebih spesifik dari keduanya.
Symmetric vs Asymmetric Multiprocessing
Symmetric multiprocessing adalah penggunaan dua atau lebih self-scheduling processors yang berbagi ruang memori yang sama. Setiap prosesor memiliki akses I/O dan perangkat memori. Symmetric Multiprocessing menerapkan banyak CPU untuk menyelesaikan tasks secara paralel dan lebih cepat.
Sedang Asymmetric Multiprocessing adalah penggunaan dua atau lebih processor yang ditangani oleh one master processor. Semua CPU saling berhubungan, tetapi tidak self-scheduling. Asymmetric Multiprocessing digunakan untuk schedule specific task ke CPU beradasarkan prioritas dan importance of task.
Earliest-Deadline-First Scheduling
Earliest-Deadline-First (EDF) Scheduling menetapkan prioritas secara dinamis sesuai dengan deadline. Semakin cepat deadline, semakin tinggi prioritasnya, begitupula sebaliknya. Dalam aturan EDF, ketika suatu proses dapat dijalankan, maka ia harus mengumumkan deadline requirements kepada system. Prioritas mungkin harus disesuaikan untuk mencerminkan tenggat waktu dari proses yang baru berjalan. Perhatikan bagaimana hal ini berbeda dari rate-monotonic scheduling, dimana priorities telah fix.
Load Balancing
Load balancing didefinisikan sebagai suatu method distribusi yang efisien dari suatu jaringan atau lalu lintas aplikasi disebuah ladang server. Setiap load balancer berada di antara perangkat klien dan server backend, menerima dan kemudian mendistribusikan permintaan masuk ke server yang tersedia yang mampu memenuhinya. Load balancing pada multicore systems melakukan equalize loads diantara CPU cores, meskipun migrasi thread antar core untuk menyeimbangkan beban dapat membuat konten cache tidak valid dan oleh karena itu dapat meningkatkan memory access times.