Tuesday, April 29, 2014

Algoritma Penjadwalan CPU

Algoritma Penjadwalan CPU - Penjadwalan CPU adalah permasalahan menentukan proses mana pada ready queue yang dialokasikan ke CPU. Terdapat beberapa algoritma penjadwalan CPU, diantaranya :
  1. Algoritma Penjadwalan First Come, First Served (FIFO).
  2. Algoritma Penjadwalan Shortest Job First.
  3. Algoritma Penjadwalan Priority Schedulling (jadwal prioritas).
  4. Algoritma Penjadwalan Round Robin.
Setiap algoritma diukur “turnaround time” dan “waiting time” untuk membandingkan performansi dengan algoritma lain. Dan untuk mengukur turnaround time dan waiting time, digunakan “Gant Chart” . CPU time (Burst Time) membutuhkan semua proses diasumsikan diketahui. Arrival time untuk setiap proses pada ready queue diasumsikan diketahui.
  • Algoritma Penjadwalan First Come, First Served (FCFS)
Proses yang pertama kali meminta jatah waktu untuk menggunakan CPU akan dilayani terlebih dahulu. Dan rata-rata waktu tunggu (Average waiting time) cukup tinggi.
Algoritma penjadwalan FCFS merupakan salah satu strategi penjadwalan non-Preemptive karena sekali CPU dialokasikan pada suatu proses, maka proses tersebut akan tetap memakai CPU sampai proses tersebut melepaskannhya, yaitu jika proses berhenti atau meminta I/O. Kelemahan dari Algoritma penjadwalan ini adalah adanya convoy effect.
skema proses yang meminta CPU mendapat prioritas. Implementasi dari FCFS mudah diatasi dengan FIFO queue. Contoh :
urutan kedatangan adalah P1, P2, P3
Gant Chart ini adalah :
arfkomunika.blogspot.com

Waiting time for P1 = 0; P2 = 24; P3 = 27
Average waiting time: (0 + 24 + 27)/3 = 17
misal proses dibalik sehingga urutan kedatangan adalah P2, P3, P1. Gant Chartnya adalah :
arfkomunika.blogspot.com

  • Algoritma Shortest Job First Scheduler
Algoritma ini digunakan ketika CPU bebas proses yang mempunyai waktu terpendek untuk menyelesaikannya mendapat prioritas. Seandainya dua proses atau lebih mempunyai waktu yang sama maka FCFS algoritma digunakan untuk menyelsaikan masalah tersebut.
Prinsip algoritma penjadwalan ini adalah, proses yang memiliki CPU burst paling kecil dilayani terlebih dahulu. Oleh karena itu, algoritma ini optimal jika digunakan, tetapi sulit untuk diimplementasikan karena sulit mengetahui CPU burst selanjutnya.
Ada dua skema dalam SJFS ini yaitu:
  1. Non premptive— ketika CPU memberikan kepada proses itu tidak bisa ditunda hingga selesai.
  2. premptive— bila sebuah proses datang dengan waktu proses lebih rendah dibandingkan dengan waktu proses yang sedang dieksekusi oleh CPU maka proses yang waktunya lebih rendah mendapatkan prioritas. Skema ini disebut juga Short – Remaining Time First (SRTF). Contoh :
arfkomunika.blogspot.com

arfkomunika.blogspot.com

Average waiting time = (0 + 6 + 3 + 7)/4 = 4
Contoh SJF Primtive
SJF algoritma mungkin adalah yang paling optimal, karena ia memberikan rata-rata minimum waiting untuk kumpulan dari proses yang mengantri.
arfkomunika.blogspot.com

arfkomunika.blogspot.com

Average waiting time = (9 + 1 + 0 +2)/4 = 3
  • Algoritma Penjadwalan Priority Schedulling (jadwal prioritas)
Penjadualan SJF (Shortest Job First) adalah kasus khusus untuk algoritma penjadual Prioritas. Prioritas dapat diasosiasikan masing-masing proses dan CPU dialokasikan untuk proses dengan prioritas tertinggi. Untuk proritas yang sama dilakukan dengan FCFS.
Ada pun algoritma penjadual prioritas adalah sebagai berikut:
 Setiap proses akan mempunyai prioritas (bilangan integer). Beberapa sistem menggunakan integer dengan urutan kecil untuk proses dengan prioritas rendah, dan sistem lain juga bisa menggunakan integer urutan kecil untuk proses dengan prioritas tinggi. Tetapi dalam teks ini diasumsikan bahwa integer kecil merupakan prioritas tertinggi.
 CPU diberikan ke proses dengan prioritas tertinggi (integer kecil adalah prioritas tertinggi).
 Dalam algoritma ini ada dua skema yaitu:
1. Preemptive: proses dapat di interupsi jika terdapat prioritas lebih tinggi yang memerlukan CPU.
2. Nonpreemptive: proses dengan prioritas tinggi akan mengganti pada saat pemakain time-slice habis.
 SJF adalah contoh penjadual prioritas dimana prioritas ditentukan oleh waktu pemakaian CPU berikutnya. Permasalahan yang muncul dalam penjadualan prioritas adalah indefinite blocking atau starvation.
 Kadang-kadang untuk kasus dengan prioritas rendah mungkin tidak pernah dieksekusi. Solusi untuk algoritma penjadual prioritas adalah aging.
 Prioritas akan naik jika proses makin lama menunggu waktu jatah CPU.
Contoh Priority:
arfkomunika.blogspot.com

  • Algoritma Penjadwalan Round Robin.
Algoritma Round Robin (RR) dirancang untuk sistem time sharing. Algoritma ini mirip dengan penjadual FCFS, namun preemption ditambahkan untuk switch antara proses. Antrian ready diperlakukan atau dianggap sebagai antrian sirkular. CPU mengelilingi antrian ready dan mengalokasikan masing-masing proses untuk interval waktu tertentu sampai satu time slice/ quantum.
Berikut algoritma untuk penjadual Round Robin:
 Setiap proses mendapat jatah waktu CPU (time slice/ quantum) tertentu Time slice/quantum umumnya antara 10 – 100 milidetik.
  1. Setelah time slice/ quantum maka proses akan di-preempt dan dipindahkan ke antrian ready.
  2. Proses ini adil dan sangat sederhana.
 Jika terdapat n proses di “antrian ready” dan waktu quantum q (milidetik), maka:
  1. Maka setiap proses akan mendapatkan 1/n dari waktu CPU.
  2. Proses tidak akan menunggu lebih lama dari: (n-1)q time units.
 Kinerja dari algoritma ini tergantung dari ukuran time quantum.
  1. Time Quantum dengan ukuran yang besar maka akan sama dengan FCFS.
  2. Time Quantum dengan ukuran yang kecil maka time quantum harus diubah ukurannya lebih besar dengan respek pada alih konteks sebaliknya akan memerlukan ongkos yang besar. Contoh :
arfkomunika.blogspot.com

  • Tipikal: lebih lama waktu rata-rata turnaround dibandingkan SJF, tapi mempunyai response terhadap user lebih cepat.

arfkomunika.blogspot.com

Monday, April 28, 2014

Program membandingkan 2 buah bilangan java this static final

Buatlah program untuk membandingkan 2 buah bilangan yaitu Bil1 dan Bil2. Dengan kemungkinan output berikut ini :
> Bil1 lebih besar dari Bil2
> Bil2 lebih besar dari Bil1
> Bil1 dan Bil2 sama besar
Berikut ketentuan untuk soal yang dimaksud :
1. Terdiri dari kelas A dan B.
2. Pada kelas A terdapat 4 atribut, yaitu :
static final int max = 100;
static final int min = 0;
static int bil1;
static int bil2;
3. Pada kelas A terdapat metode getBanding(), dimana metode ini berfungsi untuk membandingkan atribut bil1 dan bil2.
4. pada kelas B terdapat metode main().
5. Atribut bil1 dan bil2 hanya dapat memasukan angka diantara nilai min dan max (0-100). Jika user memaksa untuk memasukan diluar nilai min dan max, maka program akan meminta memasukan kembali.
6. Pemanggilan metode getBanding() akan mengembalikan informasi berupa String, sesuai dengan kemungkinan output diatas.

Contoh output :
Codding Program :
Kelas A :
import java.util.Scanner;

public class java2_thisstaticfinal_a_10512318 {
static final int max = 100;
static final int min = 0;
static int bil1;
static int bil2;

public static String getBanding() {
String ket="Bil1 dan Bil2 sama besar";
if (bil1>bil2) ket="Bil1 lebih besar dari Bil2";
if (bil1 return ket;
}
   
}

Kelas B :
import java.util.Scanner;

public class java2_thisstaticfinal_a_10512318_main {

public static void main(String[]args) {
Scanner arf = new Scanner(System.in);
do {
System.out.print("Input bil1 : ");
java2_thisstaticfinal_a_10512318.bil1 = arf.nextInt();
} while (java2_thisstaticfinal_a_10512318.bil1 java2_thisstaticfinal_a_10512318.bil1>java2_thisstaticfinal_a_10512318.max);

do {
System.out.print("Input bil2 : ");
java2_thisstaticfinal_a_10512318.bil2 = arf.nextInt();
} while (java2_thisstaticfinal_a_10512318.bil2 java2_thisstaticfinal_a_10512318.bil2>java2_thisstaticfinal_a_10512318.max);

System.out.print(java2_thisstaticfinal_a_10512318.getBanding());
}
 
}

Download Codding .java kelas A langsung ...
Download Codding .java kelas B langsung ...

Keyword this, static, dan final pada java

1. Keyword this
keyword this adalah kata kunci yang berfungsi untuk menunjuk sebuah atribut pada kelas yang sedang aktif.
Cara menggunakan kata kunci this, dengan cara menuliskan kata kuci this lalu diikuti dengan tanda titik ('.'), setelah itu diikuti dengan nama atribut.
Berikut cara menggunakan kata kunci this
This.
2. Keyword Static
Keyword static adalah kata kunci yang digunakan untuk membuat atribut dan metode bisa dipanggil secara langsung.
Berikut contoh pemanggilan metode static :
System.out.print();
System.out.printf();
System.out.println();
Dari contoh diatas dapat disumpulkan bahwa metode print(), printf(), println() adalah metode static. Buktinya adalah ketika melakukan pemanggilan ketiga metode tersebut, tidak pernah sekalipun kita meinstansisasi kelas System.
Ketika pertama kali JVM(Java Virtual Machine) menjalankan program, JVM membutuhkan sebuah metode static untuk menjalankan program pertama kali. Karena ketika pertama kali sebuah program dijalankan, maka tidak ada satupun objek yang terbentuk.
Berikut deklarasi atribut dan metode static
//Deklarasi atribut static
static ;
//Deklarasi metode static
static () { ; }
Berikut adalah pemanggilan atribut dan metode secara langsung :
NamaKelas.attribut;
NamaKelas.method();

3. Keyword Final
Dalan java, kata kunci final memiliki tiga kegunaan, yaitu :
1.       Apabila digunakan di atribut, maka nilai dari atribut itu tidak bisa diubah atau dengan kata lain bersifat konstanta. Contoh : nilai phi = 22/7 atau phi = 3.14.
2.       Apabila digunakan di metode, maka metode tersebut tidak bisa di override atau diperbaharui lagi oleh kelas-kelas turunannya.
3.       Apabila digunakan di kelas, maka kelas tersebut merupakan kelas terakhir pada suatu hirarki kelas, dengan kata lain tidak bisa memiliki subkelas(keturunan).
Berikut format penulisan keyword final :
//Deklarasi attribut final
final = ;
//Deklarasi Metode final
final ;
//Deklarasi kelas final
final class ;

4. Menggabungkan Keyword static dan final
Penggunaan kata kunci static dan final bisa digabung, yang berarti atribut atau metode tersebut bersifat final dan bisa langsung diakses oleh metode final ataupun melalui nama kelas tersebut.
Berikut format penulisan penggabungan kata kunci static dan final :
//Deklarasi attribut static final
static final = ;
//Deklarasi Metode static final

static final ;

5. Tugas mengenai keyword this static final yang sudah saya kerjakan

Program menghitung luas dan keliling persegi panjang java this static final

Bab III B.
Buatlah program untuk menghitung luas dan keliling persegi panjang, dengan ketentuan dibawah ini :

1. Terdapat 4 attribut, yaitu :
private double panjang ;
private double lebar;
private static double luas;
private static double keliling;

2. Terdapat 4 metode, yaitu : setPanjang(), setLebar(), getLuas() dan getKeliling() adalah memberikan nilai kepada atribut luas dan keliling yang nantinya ditampilkan di metode main().

Contoh Output :
Coding :

import java.util.Scanner;

class java2_thisstaticfinal_b_10512318 {
private double panjang;
private double lebar;
private static double luas;
private static double keliling;

private void setPanjang(double panjang) {
this.panjang=panjang;
}
private void setLebar(double lebar) {
this.lebar=lebar;
}
public static double getLuas(){
            return luas;
}
public static double getKeliling(){
            return keliling;
}

public static void main(String[]args) {
Scanner arf = new Scanner(System.in);
java2_thisstaticfinal_b_10512318 p = new java2_thisstaticfinal_b_10512318();
java2_thisstaticfinal_b_10512318 l = new java2_thisstaticfinal_b_10512318();

System.out.print("setPanjang : ");
double panjang = arf.nextDouble();
p.setPanjang(panjang);
System.out.print("setLebar : ");
double lebar = arf.nextDouble();
l.setLebar(lebar);
luas = p.panjang*l.lebar;
keliling = 2*p.panjang+2*l.lebar;
System.out.println("Luas Persegi panjang : "+getLuas());
System.out.println("Keliling Persegi panjang : "+getKeliling());

}
}

Download coding .java langsung disini ...

Program menghitung penjualan Bakso This Static Final Java

Bab III C.
Buatlah program menghitung penjualan bakso, dengan ketentuan dibawah ini :
Terdapat 3 attribut, yaitu :
a. attribut max merupakan atribut static final bertipe data int dengan nilai awal 5.
b. attribut hargaBakso merupakan atribut static final bertipe data int dengan nilai awal 10000.
c. attribut a merupakan atribut static bertipe data int.

Contoh output :

Codingnya :

Download Codingnya langsung disini ...