Shortest Job First (SJF) adalah salah satu algoritma penjadwalan proses yang digunakan dalam sistem operasi untuk mengatur urutan eksekusi proses berdasarkan waktu eksekusi yang dibutuhkan. Dalam metode ini, proses dengan waktu eksekusi terpendek akan dieksekusi terlebih dahulu. SJF dapat diterapkan dalam dua mode: preemptive dan non-preemptive.


### **Prinsip Kerja SJF**


- **Preemptive SJF**: Dalam mode ini, jika ada proses baru yang tiba dengan waktu eksekusi lebih pendek daripada proses yang sedang berjalan, maka proses yang sedang berjalan akan dihentikan sementara dan proses baru akan dieksekusi.

  

- **Non-preemptive SJF**: Dalam mode ini, proses yang sedang berjalan tidak akan dihentikan meskipun ada proses baru dengan waktu eksekusi yang lebih pendek. Proses yang sedang berjalan akan terus dieksekusi hingga selesai sebelum proses baru dimulai.


### **Karakteristik SJF**


- **Waktu Tunggu Rata-rata yang Pendek**: SJF memiliki waktu tunggu rata-rata yang lebih rendah dibandingkan dengan algoritma lain seperti First Come First Serve (FCFS).

  

- **Algoritma Greedy**: SJF termasuk dalam kategori algoritma greedy, di mana keputusan diambil berdasarkan informasi yang tersedia saat itu untuk meminimalkan waktu tunggu.


- **Masalah Starvation**: SJF dapat menyebabkan masalah kelaparan (starvation) bagi proses yang lebih lama jika proses-proses pendek terus datang.


### **Keuntungan dan Keterbatasan SJF**


#### **Keuntungan:**


- **Waktu Tunggu Rata-rata yang Lebih Pendek**: SJF mengurangi waktu tunggu rata-rata untuk semua proses yang ada dalam antrean[5].

  

- **Ideal untuk Proses Batch**: SJF sangat efektif dalam lingkungan di mana waktu eksekusi proses diketahui sebelumnya, seperti dalam pemrosesan batch.


#### **Keterbatasan:**


- **Estimasi Burst Time**: Sulit untuk memperkirakan waktu eksekusi (burst time) dari proses yang akan datang, yang dapat mengurangi efektivitas SJF.

  

- **Starvation**: Proses yang lebih lama mungkin tidak pernah mendapatkan kesempatan untuk dieksekusi jika proses yang lebih pendek terus muncul.


### **Contoh Implementasi SJF**