Kamis, 16 Oktober 2014

Session 6 - Process Scheduling

Sekarang kita akan belajar bagaimana cara thread mengatur prosesnya.

kita tahu bahwa proses tidak bisa akur, jadi atas dasar tsb, scheduling dibuat.

Scheduler terjadi didasarkan pada kebijakan / policy, bkn mekanisme.




ada 4 keputusan pada scheduling : 
1. switch state running ke waiting (nonpreemptive)
2. switch state running ke ready(preemptive)
3. switch state waiting le ready(preemptive)
4. terminate (nonpreemptive)

(nonpreemptive) : 
- proses yang sedang berjalan.running tdk bisa dihentikan, 
- akan terus berjalan sampai di block atau sampai menyerahkan CPU

(preemptive) :
- proses running bisa di hentikan
- memilih proses untuk dikerjakan dlm kurun waktu tertentu
- bila melewati batasan waktu maka proses yg berjalan akan di suspend

 Istilah:
Dispatch latency : waktu yg dipakai dispatcher untuk mensuspend proses dan start proses yang lain untuk running.


Oke sekarang beranjak ke metode perhitungannya :  >_<

cth data:

Proses   Burst Time   Arrived   Priority
P1          39                0            0
P2          10                2            3
P3          3                  1            2
P4          5                  5            5

1. FCFS (First Come First Serve)

  • Siapa duluan dia yg masuk
  •  (lihat proses dan burst time) 
  • (JIKA DISOAL HANYA PROSES DAN BURST TIME)
  • jadi Process time : (sebelum ada yg di proses)
  • _P1    P2   P3   P4
  • 0     39    49   52    57
  • kalau waiting time (waiting time for P1): (P1 sudah di proses jadi di taruh di belakang)
  • _P2    P3   P4   P1
  • 0     10    13   18    57
  • (Kalau ada arrived, maka ikutin arrived)
  • jadi Process time : (sebelum ada yg di proses)
  • _P1    P3   P2   P4
  • 0     39    42   52    57


2. SJFP (preemptive)
  • pertama di lihat arrival timenya, lalu bandingkan burst timenya 
  • (kalau burst time sudah di proses maka kurangi dulu)
  • (dari arrival time dan burst time terkecil)

  • _P1    P3   P2   P4   P2   P1
  • 0       1        4       5       10     19     57
3. FJNP (Nonpreemptive)

  • pertama di lihat arrival timenya aja
  • klo misal arrival time sama maka bandingin burst timenya
  • nonpreemptive berarti tidak bisa disuspend prosesnya

  • _P1    P3   P2   P4
  • 0      39       42      52    57
4. Priority
  • (ambil dari priority terbesar)
  • klo priority sama, kerjakan burst time terkecil

  • _P2    P3   P4   P1
  • 0       10      13    18     57
5. Round Robin
  • dia melingkar , jadi ngurut prosesnya
  • sistemnya sama seperti orang makan di meja bundar dan bergiliran
  • (Tambahan soal   Q=13 sec)
  • Jadi batas proses adalah 13 sec 
  • (JIKA DISOAL HANYA Proses ,Burst time, Priority)
  • _P1    P2   P3   P4   P1   P1
  • 0       13      23    26     31     44     57
  • (Kalau ada arrived, maka ikutin arrived)
  • _P1    P3   P2   P4   P1   P1
  • 0       13      23    26     31     44     57

FCFS code (hanya logikanya aja):
//Creator : Anthony Kalyana
//1601210682
//Just another uncompiled ones >_<
#include<stdio.h>
#include<conio.h>
int main(){
char a[10];
int pt[10],i,j,totalburst=0;
float avg=0;
printf("Jumlah proses yang ada:");
scanf("%d",&j);
for(i=0;i<j;i++){
printf("\nProses ke %d name:", i+1);
scanf("%s”,&a[i]);
printf("\nMasukan Burst Time :");
scanf("%d",&pt[i]);
totalburst = totalburst + pt[i];
if(i<j-1)
avg = avg + pt[i];
}
printf("\n\n");
for(i=0;i<j;i++){
printf("   %s",a[i]);
}
printf("\n0   ");
for(i=0;i<j;i++){
printf("%d   ",a[i]);
}
printf("\n\ntotal burst : %d");
printf("\naverage : %f",avg/j);
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
1601210682 - Anthony Kalyana
binus.ac.id
www.skyconnectiva.com


EmoticonEmoticon