SISTEM OPERASI
SKRIPSI
oleh:
A THESIS
by:
Yosef Benny Kurniawan
NIM: 045314064
ii
INTISARI
berjalannya suatu algoritma. Oleh karena itu akan lebih mudah bila dibuat
vi
ABSTRACT
algorithm.
This task was made in order to make easier the users in algorithm
vii
KATA PENGANTAR
Puji syukur saya ucapkan ke hadirat Tuhan Yang Maha Esa atas berkat
dan limpahan kasih karunia yang telah diberikan-Nya sehingga saya dapat
Dalam penulisan skripsi ini, penulis telah banyak memperoleh bantuan dan
bimbingan dari berbagai pihak, oleh karena itu tidak lupa penulis mengucapkan
terimakasih kepada:
3. Ayah, Mamah, kakak serta adikku yang selalu memberikan doa, dorongan
4. Bapak Yosef Agung Cahyanta, S.T., M.T selaku Dekan Fakultas Sains dan
5. Bapak Puspaningtyas Sanjoyo Adi, S.T., M..T. selaku Ketua Jurusan Teknik
Yogyakarta.
ix
7. Bapak DS. Bambang Soelistijanto, S.T.,Msc selaku pembimbing I dan
8. Andri Krisharyadi, Kuntarto Kunto Aji, Tri Prasetyo Adi, Yanuarius Budi,
Mahendra Yudha dan Brigita Moris Meta Cynara yang telah membantu
Akhirnya skripsi ini terselesaikan, disadari bahwa skripsi ini jauh dari
sempurna. Untuk itu penulis dengan rendah hati mengharapkan kritik dan saran
yang dapat memberikan kesempurnaan pada penulisan skripsi ini. Akhir kata,
semoga skripsi ini dapat bermanfaat bagi penulis, juga pihak yang membutuhkan.
Penulis
x
DAFTAR ISI
Halaman
INTISARI ………………………………………………………………….. vi
xi
BAB II LANDASAN TEORI …………………………………………… 6
xii
BAB III ANALISIS DAN PERANCANGAN SISTEM .......................... 31
xiii
4.3 Pembahasan ………………………………………………………….. 68
xiv
4.4.4 Sampel Data IV ……………………………………………….. 109
xv
DAFTAR TABEL
4.1 Data I 71
4.2 Data II 84
xvi
DAFTAR GAMBAR
xvii
4.7 Salah satu tampilan Materi Algoritma Penjadwalan 48
4.8 Salah satu tampilan dari Materi First Come First Serve 49
xviii
4.29 Perhitungan hasil kuisioner pertanyaan 7 68
xix
4.51 Visualisasi data IV Algoritma SJF Nonpreemtive 113
xx
BAB I
PENDAHULUAN
sangat pesat, terlebih lagi teknologi sekarang pasti tidak akan lepas dari
sistem komputer, dan perkembangan teknologi komputer saat ini juga sudah
sistem komputer dapat digunakan secara mudah, tepat dan juga membuat
2005).
suatu sistem pengaturan ukuran beban kerja bagi suatu sistem komputer dapat
diselesaikan secara cepat dan tepat. Ketika banyak proses berjalan bersamaan,
sistem operasi harus memutuskan proses mana yang harus berjalan pertama
kali. Bagian dari sistem operasi yang menangani hal ini disebut dengan
menggunakan data-data dan disertai gambar seperti diagram status proses dan
1
2
membahas masalah ini dengan membuat simulasi cara kerja dari algoritma
penjadwalan.
1.4 Tujuan
proses diantaranya:
1. Pengumpulan kebutuhan
seluruh kebutuhannya.
2. Desain cepat
3. Pembangunan prototype
5. Perbaikan prototype
terpenuhi.
6. Produk rekayasa
BAB I PENDAHULUAN
Bab ini akan menjelaskan secara rinci tentang program pada setiap
secara acak.
Bab ini berisi Kesimpulan dan Saran untuk sistem yang telah
dibuat agar ada pengembangan yang lebih baik untuk masa yang
akan datang.
DAFTAR PUSTAKA
LAMPIRAN
BAB II
LANDASAN TEORI
tujuan yang sama (Jogianto, 1999). Tujuan dari sistem informasi adalah untuk
Kriteria sistem informasi yang baik mengacu pada 3 hal, yaitu akurat, tepat
pada waktunya, dan relevan (Jogianto, 1999). Akurat berarti kualitas dari
informasi yang datang pada penerima tidak boleh terlambat karena informasi
setiap orang satu sama lain berbeda, tergantung dari maksud dan tujuan
6
7
diantaranya :
1. Perencanaan
diharapkan.
2. Analisa Sistem
3. Desain Sistem
dulu bebas dari 9 kesalahan. Oleh karena itu program harus diuji untuk
2.2 Simulasi
tidak ada simulasi yang secara otomatis akan mendapatkan solusi yang
optimal .
Ramdhani, 1998).
1. Kelebihan Simulasi
antara lain:
menganalisis tujuan.
2. Kekurangan Simulasi
pengembangannya.
pembuat model.
apa yang dikehendakinya tanpa menyebutkan secara detal output apa saja
Kunci agar model prototype ini berhasil dengan baik adalah dengan
1. Pengumpulan kebutuhan
2. Membangun prototyping
3. Evaluasi prototyping
4. Mengkodekan sistem
5. Menguji sistem
Setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai,
White Box, Black Box, Basis Path, pengujian arsitektur dan lain-lain.
6. Evaluasi Sistem
7. Menggunakan sistem
Perangkat lunak yang telah diuji dan diterima pelanggan siap untuk
digunakan.
pelanggan.
yang diharapkannya.
sistem.
paling fleksibel dalam membuat suatu hasil karya animasi. Macromedia flash
14
lain adalah :
1. Dapat membuat tombol interaktif dengan sebuah movie atau object yang
lain.
struktur yang mirip dengan bahasa pemrograman C++. Salah satu fungsi dari
terdapat dua atau lebih proses yang akan dikerjakan secara bersamaan.
(CPU, I/O device, memory) dapat berjalan secara efisien (Iwan Binanto,
2005).
2. Sistem Operasi
1. Proses
menyimpan satu proses dan merupakan record yang sangat besar dan
2. Status Proses
proses. Dalam tabel 2.1 akan ditunjukan beberapa status dasar yang
dialami proses. Proses dapat berada di salah satu status yang ada dari
Status Deskripsi
Ready Proses siap (ready) dieksekusi oleh CPU, tapi CPU tidak
2.2.
mengakses CPU.
18
register hardware yang penting, dan mencari proses yang ready dan
siap untuk dijalankan (running). Jika tidak ada proses yang ready
CPU pada saat CPU tersebut sedang diakses oleh proses lain dalam
a. Interrupt
b. Timer
jam).
utama, dapat memanipulasi dan melakukan operasi aritmatika pada data dari
lain.
CPU dapat dieksekusi oleh banyak proses dan program. Dalam istilah
penjadwalan berarti terdapat lebih dari satu proses yang akan dijalankan,
maka dari itu peran CPU sangat berguna dalam memutuskan proses mana
yang dapat menggunakan CPU lebih dahulu, kapan CPU tersebut dapat
memutuskan bahwa sebuah proses dalam antrian yang siap (ready queue)
sumber dari komputer yang penting yang menjadi sentral dari sentral
b. Adil (Fairness)
CPU yang sama dan tidak ada proses yang tidak mendapat layanan
c. Throughput
e. Response Time
pertama muncul.
secara simultan.
memilih salah satu atau menjadwalkan proses dari ready list agar
harus dijalankan.
untuk dihentikan oleh proses lain, karena dengan adanya suatu I/O
penjadwal.
23
1. Penjadwalan Preemtive
status ready oleh sistem operasi sehingga CPU dapat diambil alih
sejumlah waktu oleh CPU yang disebut kwanta (quantum time) atau
lebih dari satu kwanta jika ada proses lain dalam daftar siap.
2. Penjadwalan Nonpreemtive
waktu yang diberikan CPU tanpa diganggu oleh proses lain atau
CPU tidak dapat diambil alih oleh proses lain sampai proses itu
selesai mengakses CPU, tanpa dihentikan oleh timer atau sampai ada
4. Priority
1. Multilevel Queue
P1 24
P2 3
P3 3
urutan P2, P3, dan P1, hasil penjadwalan CPU dapat dilihat
meminta I/O.
burst lebih pendek dari sisa waktu proses yang saat itu
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
Binanto, 2005) :
berikutnya.
CPU. Tidak ada proses yang menunggu lebih dari (n-1)q unit
switch.
29
P1 24
P2 3
P3 3
= 5.66 milidetik.
2.7.4.4 Priority
milidetik.
P1 10 3
P2 1 1
P3 2 3
P4 1 4
P5 5 2
Seperti yang telah disampaikan di awal, tugas akhir ini akan membahas
penjadwalan sendiri terdiri dari 5 macam algoritma yang berbeda, First Come
First Serve (FCFS), Shortest Job First (SJF) Preemtive, Shortest Job First
Nonpreemtive.
penjadwalan yang paling sederhana, dimana proses yang waktu tibanya lebih
dulu akan dieksekusi pertama kali. Shortest Job First (SJF) Preemtive
yang akan dieksekusi pertama kali, tetapi jika proses baru datang dengan
panjang proses lebih pendek dari sisa waktu proses yang saat itu sedang
dieksekusi, proses ini ditunda dan diganti dengan proses baru. Shortest Job
31
32
proses yang terpendek yang akan dieksekusi pertama kali, tidak bisa ditunda
sampai proses tersebut selesai. Round Robin, konsep dasar dari algoritma ini
waktu CPU yang disebut dengan waktu kuantum (quantum time) untuk
nomor terkecil akan dieksekusi terlebih dahulu, tetapi jika ada proses baru
yang memiliki prioritas lebih kecil dari proses yang sedang berjalan, maka
proses tersebut akan ditunda dan kemudian digantikan dengan proses yang
dieksekusi terlebih dahulu tanpa bisa ditunda dan akan dieksekusi sampai
selesai.
berikut:
Pilih Menu Bantuan Di dalam fasilitas ini terdapat satu halaman berupa
Pilih Menu Simulasi Di dalam fasilitas ini akan terdapat beberapa jendela
Lihat Simulasi FCFS Pengguna dapat melihat cara kerja dari algoritma
Lihat Simulasi SJF Pengguna dapat melihat cara kerja dari algoritma
Lihat Simulasi SJF Pengguna dapat melihat cara kerja dari algoritma
Lihat Simulasi Priority Pengguna dapat melihat cara kerja dari algoritma
ini.
Lihat Simulasi Priority Pengguna dapat melihat cara kerja dari algoritma
Pilih Menu Materi Di dalam fasilitas akan berisi materi dari setiap
Lihat Materi Algoritma Pengguna dapat melihat dan mempelajari apa itu
singkat.
singkat.
36
Menu
Utama
Program
Menu Menu
Menu Materi
Simulasi Bantuan
Cara
Algoritma First Come Shortest job
Round Robin Priority Penggunaan
Penjadwalan First Serve First
Simulasi
Simulasi Simulasi
Simulasi Simulasi SJF Simulasi SJF Simulasi
Priority Priority
FCFS Preemtive Nonpreemtive Round Robin
Preemtive Nonpreemtive
Start A A
YA YA YA
Tampilkan Penjelasan
Tampilkan Materi-materi Tampilkan Simulasi dari
penggunaan dari
dari Algoritma beberapa Algoritma
program simulasi
Penjadwalan Penjadwalan
Algoritma Penjadwalan
YA YA YA
A A Halaman
Utama
Finish
Perangkat Keras dan Perangkat Lunak yang digunakan agar sistem ini
2) Memori : 128 Mb
3) Hard Disk
2. Perangkat Lunak
MASUK
MASUK
Ini adalah halaman utama dari program, terdiri dari 2 tombol utama.
menu seperti gambar 3.5. Bila pengguna menekan tombol keluar, maka
MENU UTAMA
masuk
Ini adalah tampilan antar muka bila pengguna menekan tombol masuk
pada gambar 3.4. Menu utama ini terdiri dari 3 tombol utama, yaitu Materi,
Simulasi dan Bantuan. Menu Materi masih terdiri dari 5 sub-menu, yaitu
Algoritma Penjadwalan, First Come First Serve, Shortest Job First, Round
MENU UTAMA
Algoritma Penjadwalan
FCFS
SJF
RR
Priority
Bila pengguna menekan salah satu dari sub-menu tersebut, maka pengguna
dapat melihat dan membaca materi atau teori dari algoritma penjadwalan
(gambar 3.7). Bila pengguna menekan tombol kembali, maka pengguna akan
MATERI Kembali
BERISI MATERI-MATERI
DARI ALGORITMA PENJADWALAN
Sebelumnya Selanjutnya
Gambar 3.7 Tampilan materi dari salah satu sub-materi bila ditekan
40
New Terminated
Ready Running
Waiting
Gant Chart
P1
P2
P3
P4
P5
Jalannya Proses
Nama Proses Mulai tunggu Selesai Tunggu Mulai Proses Selesai Proses
P1
P2 AWT atau
Average Waiting Time = ms
P3
P4
P5
Simulasi
Ini adalah tampilan antar muka untuk menu Simulasi, terdiri dari
tombol ini berfungsi untuk mensimulasikan dari data awal berdasarkan jenis
Diagram Status Proses, Diagram Waktu Kedatangan dan Gant Chart yang
BANTUAN
CARA PENGGUNAAN
SISTEM
Ini adalah tampilan dari menu Bantuan bila pengguna menekan menu
cara penggunaan dari sistem, terdapat 3 tombol utama, yaitu next, back dan
close.
BAB IV
bab sebelumnya telah dijelaskan mengenai perancangan sistem. Pada bab ini akan
dijelaskan hasil implementasi dan pembahasan serta hasil dari kuisioner yang
modul-modul flash movie yang terintegrasi antara satu dengan yang lainnya,
menjelaskan apa saja komponen dalam sistem baik. Setelah itu akan
dijelaskan cara kerja fasilitas yang ada pada sistem. Berikut ini adalah
42
43
on (press) {
gotoAndStop(2);
}
frame ‘2’.
on (press) {
fscommand('quit', "");
}
tombol Simulasi dan tombol Bantuan. Setiap tombol diberi action script
isinya, juga terdapat tombol back yang berfungsi untuk kembali menuju
45
digunakan:
on (press) {
gotoAndStop(1); //kembali ke frame 1
}
tombol Materi:
on (release) {
menu_bar_materi._visible=true;
}
Berikut action script yang digunakan untuk membuat
1:
menu_bar_materi._visible = false;
menu_bar_materi.algo_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.algo_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
menu_bar_materi.fcfs_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.fcfs_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
menu_bar_materi.sjf_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.sjf_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
menu_bar_materi.rr_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.rr_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
menu_bar_materi.prio_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.prio_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
47
Penjadwalan
First Serve
dalam pemahaman.
Gambar 4.9 Salah satu tampilan dari Materi Shortest Job First
49
dalam pemahaman.
50
on (release) {
gotoAndStop(3);
}
51
on (release) {
gotoAndStop(1);
}
Script ini diletakkan pada tombol sebelumnya yang
on (release) {
_root.gotoAndStop(2);
removeMovieClip(this);
}
Script ini diletakkan pada tombol home, perintah ini
sendiri terdapat waktu saat tiba dan waktu lama proses serta
4.15.
keadaan error:
else {
_root.error._x = 0;
_root.error._y = 0;
this.error.error_msg.text="DATA BELUM
LENGKAP!!!!!";
54
}
///*
if(cek_data()=='lebih tiba'){
_root.error._x = 0;
_root.error._y = 0;
this.error.error_msg.text="SAAT TIBA
MAKS=10!!!!!";
}
//*/
if(cek_data()=='lebih proses'){
_root.error._x = 0;
_root.error._y = 0;
this.error.error_msg.text="LAMA PROSES
MAKS=15!!!!!";
}
///
if(cek_data()=='lebih prio'){
_root.error._x = 0;
_root.error._y = 0;
this.error.error_msg.text="PRIORITAS
MAKS=5!!!!!";
}
}
Pada saat program dijalankan posisi awal dari movie
oleh pengguna.
untuk waktu lama proses dengan range antara 1-15 dan untuk
on (release) {
function randRange(min:Number,
max:Number):Number {
var randomNum:Number =
Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
///random p1
var n1:Number = randRange(1, 10)
var n2:Number = randRange(1, 15)
56
///random p2
var m1:Number = randRange(1, 10)
var m2:Number = randRange(1, 15)
var m3:Number = randRange(1, 5)
p2_mc.saattiba_p2.text=m1;
p2_mc.lamaproses_p2.text=m2;
p2_mc.prioritas_p2.text=m3;
///random p3
var o1:Number = randRange(1, 10)
var o2:Number = randRange(1, 15)
var o3:Number = randRange(1, 5)
p3_mc.saattiba_p3.text=o1;
p3_mc.lamaproses_p3.text=o2;
p3_mc.prioritas_p3.text=o3;
///random p4
var y1:Number = randRange(1, 10)
var y2:Number = randRange(1, 15)
var y3:Number = randRange(1, 5)
p4_mc.saattiba_p4.text=y1;
p4_mc.lamaproses_p4.text=y2;
p4_mc.prioritas_p4.text=y3;
///random p5
var z1:Number = randRange(1, 10)
var z2:Number = randRange(1, 15)
var z3:Number = randRange(1, 5)
p5_mc.saattiba_p5.text=z1;
p5_mc.lamaproses_p5.text=z2;
p5_mc.prioritas_p5.text=z3;
}
Setelah data selesai dimasukkan, simulasi sudah dapat
berupa movie clip untuk proses ke-5. Berikut salah satu contoh
onClipEvent (load) {
var id1:Number = 0;
var id2:Number = 1;
var count:Number = 0;
var x1:Number;
var x2:Number;
var y1:Number;
var y2:Number;
var dy:Number;
var dx:Number;
var dy1:Number;
var dx1:Number;
if (_root.speed == 1) {
var speed = 9;
} else if (_root.speed == 10) {
var speed = 29;
}
var dist:Number = speed+1;}
onClipEvent (enterFrame) {
if (id1<_root.jalur.length-1 &&
id2<_root.jalur.length && _root.jalur.length != 0)
{
58
if (dist>speed) {
x1 = (_root[_root.jalur[id1]]._x-20);
y1 = (_root[_root.jalur[id1]]._y);
x2 = (_root[_root.jalur[id2]]._x-20);
y2 = (_root[_root.jalur[id2]]._y);
dy = y2-y1;
dx = x2-x1;
dy1 = Math.abs(y2-this._y);
dx1 = Math.abs(x2-this._x);
var sudut = Math.atan2(dy, dx);
var speedx = speed*Math.cos(sudut);
var speedy = speed*Math.sin(sudut);
if (x1 == x2 && y1 == y2) {
this._x = x1;
this._y = y1;
} else {
this._x = x1+speedx*count;
this._y = y1+speedy*count;
}
dist = Math.sqrt(dy1*dy1+dx1*dx1);
count++;
} else {
count = 1;
if (_root.speed == 1) {
dist = 10;
} else if (_root.speed == 10) {
this._x = (_root[_root.jalur[_root.jalur.length-
1]]._x-20);
this._y = (_root[_root.jalur[_root.jalur.length-
1]]._y);
dist = 30;}
id1++;
id2++;
}
}
}
function diagram_waktu_kedatangan() {
for (var i = 0; i<_root.input_proses.text; i++)
{
_root['name'+(i+1)+'_diagram'].text = "P"+(i+1);
_root['p'+(i+1)+'_diagram']._x=(_root.proses[i].sa
attiba*10)+31;
_root['p'+(i+1)+'_diagram']._width=
_root.proses[i].lamaproses*10;
}
}
// Tombol next
on (release) {
_parent.nextFrame();
}
// Tombol back
on (release) {
_parent.prevFrame();
}
61
yang digunakan:
on (press) {
_parent.removeMovieClip(this);
}
Script ini akan memindahkan movie clip parent yang
berarti menu ini berupa movie clip dan dapat dilihat tanpa
on (press) {
dept = _root.getNextHighestDepth();
_parent.swapDepths(_root.getInstanceAtDepth(dept
-1));
startDrag(_parent);
}
on (release) {
stopDrag();
}
on (releaseOutside) {
stopDrag();
}
62
4.2 Kuisioner
kuisioner kepada calon pengguna. Hal ini dilakukan agar penulis dapat melihat
kelayakan berbagai aspek dari aplikasi yang telah dibuatnya dimata calon
penggunanya. Selain itu penyebaran kuisioner ini ditujukan agar penulis dapat
menerima masukan berupa saran dan kritik untuk kemajuan dari aplikasi yang
berupa orang atau disebut dengan istilah responden. Pada metode ini,
mengumpulkan data :
1. Pembuatan kuisioner
3. Penarikan kuisioner
kuisioner tersebut.
operasi.
Operasi?”
YA
TIDAK
sistem operasi.
YA
TIDAK
Penjadwalan?”
YA
TIDAK
Algoritma Penjadwalan?”
YA
TIDAK
dalam pemahaman?”
YA
TIDAK
tidak.
YA
TIDAK
YA
TIDAK
program?”
YA
TIDAK
bermanfaat?”
YA
TIDAK
4.3 Pembahasan
penjadawalan CPU yang ada dalam mata kuliah Sistem Operasi. Penggunaan
enam algoritma penjadwalan dalam tugas akhir ini diharapkan bisa membantu
algoritma.
urutan kedatangannya. Hal ini tidak adil karena proses yang memiliki lama
proses dengan waktu yang pendek menunggu terlalu lama sehingga akan
algoritma FCFS ini efisien karena algoritma ini membuat CPU selalu dalam
disebut dengan kuantum waktu. Algoritma RR sangat adil jika dipandang dari
jatah waktu pelayanan yang diberikan oleh CPU karena adanya kuantum
waktu. Jika kuantum waktu terlalu kecil akan menyebabkan terlalu banyak
switch antar proses dan efisiensi CPU akan rendah. Sebaliknya, jika kuantum
waktu terlalu besar akan menyebabkan respon CPU akan lambat sehingga
proses yang pendek akan menunggu lama. Sedangkan pada algoritma Priority,
tiap proses akan diberi nilai prioritas dan proses berprioritas rendah akan
yang dilakukan oleh sistem sama dengan hasil penghitungan secara manual.
70
Sampel data yang digunakan 5 macam agar memperjelas cara kerja dari
FCFS, SJF Preemtive, SJF Nonpreemtive, RR, Priority Preemtive dan Priority
Nonpreemtive.
P1 0 1 1
P2 0 2 2
P3 0 3 3
P4 0 4 4
P5 0 5 5
berikut:
71
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
data I adalah 4.
72
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
= 7 (slot time)
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
= 7 (slot time)
I adalah 7.
75
sebagai berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
= 7 (slot time)
adalah 7.
77
berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
data I adalah 6.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
5 = 9 (slot time)
Nonpreemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
80
jumlah proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
= 7 (slot time)
data I adalah 9.
81
Preemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
82
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
= 7 (slot time)
I adalah 7.
83
P1 0 5 1
P2 0 4 2
P3 0 3 3
P4 0 2 4
P5 0 1 5
berikut:
84
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
data II adalah 8.
85
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
5 = 11 (slot time)
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
= 7 (slot time)
II adalah 7.
88
sebagai berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
89
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
proses.
= 7 (slot time)
adalah 7.
90
berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
data II adalah 8.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
5 = 11 (slot time)
Nonpreemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
jumlah proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
5 = 11 (slot time)
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
5 = 11 (slot time)
II adalah 11.
P1 0 15 4
P2 0 10 3
P3 0 5 2
P4 0 8 1
P5 0 15 5
berikut:
97
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat
𝑛
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
proses.
32.2.
99
Nonpreemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
100
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
sebagai berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
102
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
proses.
adalah 27.8.
103
berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
104
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
Nonpreemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
106
jumlah proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
/ 5 = 27 (slot time)
Preemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
108
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
/ 5 = 27 (slot time)
P1 1 15 5
P2 2 10 4
P3 3 5 3
P4 4 8 2
P5 5 15 1
berikut:
110
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat
𝑛
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
proses.
33.2.
112
Nonpreemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat
𝑛
113
jumlah proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
sebagai berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
proses.
adalah 28.4.
116
berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
Nonpreemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
119
jumlah proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
Preemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
121
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
IV adalah 34.4.
122
P1 5 15 1
P2 4 10 2
P3 3 5 3
P4 2 8 4
P5 1 15 5
berikut:
123
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
32.4.
125
Nonpreemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
126
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
V adalah 31.8.
127
sebagai berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
proses.
adalah 28.2.
129
berikut:
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
130
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
Nonpreemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
132
jumlah proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
Preemtive
∑𝑛
𝑖=1 A𝑖
Dengan menggunakan rumus AWT = dapat dihitung
𝑛
134
proses.
∑𝑛
𝑖=1 X𝑖
proses = dapat dihitung waktu rata-rata selesai
𝑛
jumlah proses.
V adalah 35.2.
135
Time (AWT) yang dihasilkan dari keenam algoritma tersebut jika data yang
digunakna sama.
AWT
4 8 21.6 19.6 18.8
FCFS
AWT
4 4 15.8 18.2 18.2
SJF Nonpreemtive
AWT
4 4 15.8 14.8 14.6
SJF Preemtive
AWT
6 8 30.6 28.6 28.2
RR
AWT
4 8 16.4 23.2 24
Priority Nonpreemtive
AWT
4 8 16.4 20.8 21.6
Priority Preemtive
Preemtive menghasilkan solusi yang optimal, yaitu nilai AWT yang minimum
selesai semua proses yang dihasilkan dari keenam algoritma tersebut jika data
AWT
7 11 32.2 33.2 32.4
FCFS
AWT
7 7 27.8 33.8 31.8
SJF Nonpreemtive
AWT
7 7 27.8 28.4 28.2
SJF Preemtive
AWT
9 11 41.2 42.2 41.8
RR
AWT
7 11 27 36.8 37.6
Priority Nonpreemtive
AWT
7 11 27 34.4 35.2
Priority Preemtive
Preemtive menghasilkan solusi yang optimal, yaitu nilai waktu rata-rata selesai
1. Efisinesi : yaitu menjaga agar CPU tetap dalam keadaan sibuk sehingga
2. Waktu penyelesaian (turn around time) : yaitu waktu yang dihabiskan dari
saat proses mulai masuk ke sistem sampai proses diselesaikan sistem. Pada
algoritma SJF Preemtive nilai waktu rata-rata selesai semua proses yang
mampu diselesaikan oleh proses pada suatu unit waktu maka nilainya akan
semakin baik pula. Pada algoritma SJF Preemtive throughput bagus karena
proses dengan lama proses yang kecil akan dieksekusi terlebih dahulu,
4. Waktu tunggu (waiting time) : adalah waktu yang dihabiskan oleh suatu
proses untuk dapat menggunakan alokasi CPU agar proses dapat dijalankan
atau dieksekusi. Pada SJF Preemtive nilai AWT yang dihasilkan paling
minim0um.
BAB V
PENUTUP
5.1 Kesimpulan
Dari hasil analisa, desain, dan implementasi yang telah dilakukan maka
shortest job first non-preemtive, shortest job first preemtive, round robin,
5.2 Saran
Saran yang dapat diberikan agar aplikasi ini dapat dibuat lebih baik lagi
138
139
Herlambang, Ferry. 2007. Membuat Efek Khusus dengan Action Script 2.0 Flash
(http://herysetiawanugroho.blogspot.com/2009/03/metode-prototipe.html,
Philipus, Erwin. 2007. 20 Teknik Flash Master untuk Macromedia Flash MX dan
140
LAMPIRAN
Listing Program
stop ();
var days = new Array("Minggu", "Senin", "Selasa", "Rabu", "Kamis",
"Jum'at", "Sabtu");
var months = new Array("Januari", "Februari", "Maret", "April",
"Mei", "Juni", "Juli", "Agustus", "September", "Oktober",
"November", "Desember");
watch.onEnterFrame = function ()
{
var _loc2 = new Date();
this.date = days[_loc2.getDay()] + ", " + _loc2.getDate() + "
" + months[_loc2.getMonth()] + " " + _loc2.getFullYear();
this.hour = _loc2.getHours();
this.minute = _loc2.getMinutes();
this.second = _loc2.getSeconds();
if (this.second < 10)
{
this.second = "0" + this.second;
} // end if
if (this.minute < 10)
{
this.minute = "0" + this.minute;
} // end if
if (this.hour < 10)
{
this.hour = "0" + this.hour;
} // end if
};
141
};
menu_bar_materi.fcfs_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.fcfs_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
menu_bar_materi.sjf_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.sjf_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
menu_bar_materi.rr_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.rr_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
menu_bar_materi.prio_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.prio_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
menu_bar_materi.duatingkat_btn.onRollOver = function() {
menu_bar_materi._visible = true;
};
menu_bar_materi.duatingkat_btn.onRollOut = function() {
menu_bar_materi._visible = false;
};
menu_bar_simulasi._visible = false;
menu_bar_simulasi.simulasi_1.onRollOver = function() {
menu_bar_simulasi._visible = true;
};
menu_bar_simulasi.simulasi_1.onRollOut = function() {
menu_bar_simulasi._visible = false;
};
menu_bar_simulasi.simulasi_2.onRollOver = function() {
menu_bar_simulasi._visible = true;
};
menu_bar_simulasi.simulasi_2.onRollOut = function() {
menu_bar_simulasi._visible = false;
};
Listing Pada File Final Menu Layer fungsi menu Tombol Menu Utama
on (press) {
gotoAndStop(2);
}
Listing Pada File Final Menu Layer fungsi menu Tombol Keluar
on (press) {
fscommand('quit', "");
}
142
Listing Pada File Final Menu Layer fungsi menu Tombol Materi
on (release) {
menu_bar_materi._visible = true;
menu_bar_simulasi._visible = false;
}
Listing Pada File Final Menu Layer fungsi menu Tombol Simulasi
on (release) {
gotoAndStop(8);
}
Listing Pada File Final Menu Layer fungsi menu Tombol Bantuan
on (press) {
if (_root.about == undefined) {
dep = _root.getNextHighestDepth();
duplicateMovieClip(_root.bantuan, 'about', dep+1);
_root.about._x = 160;
_root.about._y = 120;
} else {
dep = _root.getNextHighestDepth();
_root.about.swapDepths(_root.getInstanceAtDepth(dep-
1));
}
}
143
WT[i] = 0;
} else {
if (FT[i-1]<AT[i]) {
FT[i] = AT[i]+ST[i];
WT[i] = 0;
StartWait[i] = 0;
FinishWait[i] = 0;
StartProc[i] = AT[i];
FinishProc[i] = AT[i]+ST[i];
} else {
FT[i] = FT[i-1]+ST[i];
WT[i] = FT[i-1]-AT[i];
StartWait[i] = AT[i];
FinishWait[i] = FT[i-1];
if (StartWait[i] == StartWait[i]) {
}
StartProc[i] = FT[i-1];
FinishProc[i] = FT[i-1]+ST[i];
}
}
sum = sum+WT[i];
}
return sum/k;
}
function diagram_waktu_kedatangan() {
for (var i = 0; i<_root.input_proses.text; i++) {
_root['name'+(i+1)+'_diagram'].text = "P"+(i+1);
_root['p'+(i+1)+'_diagram']._x =
(_root.proses[i].saattiba*10)+31;
_root['p'+(i+1)+'_diagram']._width =
_root.proses[i].lamaproses*10;
}
}
function reset_diagram_waktu_kedatangan() {
for (var i = 0; i<5; i++) {
_root['name'+(i+1)+'_diagram'].text = "";
_root['p'+(i+1)+'_diagram']._x = 0.9;
_root['p'+(i+1)+'_diagram']._width = 0;
}
}
function bubblesort_tiba() {
var temp:Number;
for (var i = 0; i<rec_array.length; i++) {
for (var j = 0; j<rec_array.length-1; j++) {
if
(Number(rec_array[j].tiba)>Number(rec_array[j+1].tiba)) {
temp = rec_array[j];
rec_array[j] = rec_array[j+1];
rec_array[j+1] = temp;
}
}
}
}
function bubblesort_temp_tiba() {
for (var i = 0; i<rec_array_temp.length; i++) {
for (var j = 0; j<rec_array_temp.length-1; j++) {
144
if
(Number(rec_array_temp[j].tiba)<Number(rec_array_temp[j+1].tiba))
{
temp = rec_array_temp[j];
rec_array_temp[j] = rec_array_temp[j+1];
rec_array_temp[j+1] = temp;
}
}
}
}
function bubblesort_temp_eksekusi() {
for (var i = 0; i<rec_array_temp.length; i++) {
for (var j = 0; j<rec_array_temp.length-1; j++) {
if
(Number(rec_array_temp[j].eksekusi)<Number(rec_array_temp[j+1].eks
ekusi)) {
temp = rec_array_temp[j];
rec_array_temp[j] = rec_array_temp[j+1];
rec_array_temp[j+1] = temp;
}
}
}
}
function bubblesort_temp_sisa_tiba() {
var temp:Number;
for (var i = 0; i<rec_array_temp_sisa.length; i++) {
for (var j = 0; j<rec_array_temp_sisa.length-1; j++) {
if
(Number(rec_array_temp_sisa[j].tiba)>Number(rec_array_temp_sisa[j+
1].tiba)) {
temp = rec_array_temp_sisa[j];
rec_array_temp_sisa[j] =
rec_array_temp_sisa[j+1];
rec_array_temp_sisa[j+1] = temp;
}
}
}
}
function bubblesort_temp_sisa_eksekusi() {
var temp:Number;
for (var i = 0; i<rec_array_temp_sisa.length; i++) {
for (var j = 0; j<rec_array_temp_sisa.length-1; j++) {
if
(Number(rec_array_temp_sisa[j].eksekusi)<Number(rec_array_temp_sis
a[j+1].eksekusi)) {
temp = rec_array_temp_sisa[j];
rec_array_temp_sisa[j] =
rec_array_temp_sisa[j+1];
rec_array_temp_sisa[j+1] = temp;
}
}
}
}
function cek_tiba_sama() {
for (var i = 0; i<rec_array.length; i++) {
for (var j = 0; j<rec_array.length; j++) {
145
if (rec_array[i].tiba != rec_array[j].tiba && i
!= j) {
return "Tiba --> ada BEDA";
}
}
}
return "Tiba --> semuanya SAMA";
}
function bubblesort_tiba() {
var temp:Number;
for (var i = 0; i<rec_array.length; i++) {
for (var j = 0; j<rec_array.length-1; j++) {
if
(Number(rec_array[j].tiba)>Number(rec_array[j+1].tiba)) {
temp = rec_array[j];
rec_array[j] = rec_array[j+1];
rec_array[j+1] = temp;
}
}
}
}
function bubblesort_prioritas() {
var temp:Number;
for (var i = 0; i<rec_array.length; i++) {
for (var j = 0; j<rec_array.length-1; j++) {
if
(Number(rec_array[j].prioritas)>Number(rec_array[j+1].prioritas))
{
temp = rec_array[j];
rec_array[j] = rec_array[j+1];
rec_array[j+1] = temp;
}
}
}
}
function bubblesort_temp_prioritas() {
var temp:Number;
for (var i = 0; i<rec_array_temp.length; i++) {
for (var j = 0; j<rec_array_temp.length-1; j++) {
if
(Number(rec_array_temp[j].prioritas)<Number(rec_array_temp[j+1].pr
ioritas)) {
temp = rec_array_temp[j];
rec_array_temp[j] = rec_array_temp[j+1];
rec_array_temp[j+1] = temp;
}
}
}
}
function bubblesort_temp_prioritas2() {
var temp:Number;
for (var i = 0; i<rec_array.length; i++) {
for (var j = 0; j<rec_array.length-1; j++) {
if
(Number(rec_array[j].prioritas)<Number(rec_array[j+1].prioritas))
{
146
temp = rec_array[j];
rec_array[j] = rec_array[j+1];
rec_array[j+1] = temp;
}
}
}
}
147
if (cari1(3) == true) {
array_proses2.push({nama:rec_array_hasil[2].nama,
mulai:StartProc[2], selesai:FinishProc[2]});
if (FinishWait[2] != 0) {
array_tunggu2.push({mulai:StartWait[2],
selesai:FinishWait[2]});
}
if (array_proses2[0].mulai<proses[2].saattiba) {
array_proses2[0].mulai = proses[2].saattiba;
}
duplicateMovieClip(p2, 'p2_'+2,
this.getNextHighestDepth());
var my_color3_FCFS:Color = new Color(this['p2_'+2]);
my_color3_FCFS.setRGB(proses[2].warna);
this['p2_'+2]._x = ((array_proses2[0].mulai)*10)+31;
this['p2_'+2]._width = (array_proses2[0].selesai-
array_proses2[0].mulai)*10;
duplicateMovieClip(wait2, 'wait2_'+2,
this.getNextHighestDepth());
this['wait2_'+2]._x =
((array_tunggu2[0].mulai)*10)+31;
this['wait2_'+2]._width = (array_tunggu2[0].selesai-
array_tunggu2[0].mulai)*10;
}
if (cari1(4) == true) {
array_proses3.push({nama:rec_array_hasil[3].nama,
mulai:StartProc[3], selesai:FinishProc[3]});
if (FinishWait[3] != 0) {
array_tunggu3.push({mulai:StartWait[3],
selesai:FinishWait[3]});
}
if (array_proses3[0].mulai<proses[3].saattiba) {
array_proses3[0].mulai = proses[3].saattiba;
}
duplicateMovieClip(p3, 'p3_'+3,
this.getNextHighestDepth());
var my_color4_FCFS:Color = new Color(this['p3_'+3]);
my_color4_FCFS.setRGB(proses[3].warna);
this['p3_'+3]._x = ((array_proses3[0].mulai)*10)+31;
this['p3_'+3]._width = (array_proses3[0].selesai-
array_proses3[0].mulai)*10;
duplicateMovieClip(wait3, 'wait3_'+3,
this.getNextHighestDepth());
this['wait3_'+3]._x =
((array_tunggu3[0].mulai)*10)+31;
this['wait3_'+3]._width = (array_tunggu3[0].selesai-
array_tunggu3[0].mulai)*10;
}
if (cari1(5) == true) {
array_proses4.push({nama:rec_array_hasil[4].nama,
mulai:StartProc[4], selesai:FinishProc[4]});
if (FinishWait[4] != 0) {
array_tunggu4.push({mulai:StartWait[4],
selesai:FinishWait[4]});
}
if (array_proses4[0].mulai<proses[4].saattiba) {
148
array_proses4[0].mulai = proses[4].saattiba;
}
duplicateMovieClip(p4, 'p4_'+4,
this.getNextHighestDepth());
var my_color5_FCFS:Color = new Color(this['p4_'+4]);
my_color5_FCFS.setRGB(proses[4].warna);
this['p4_'+4]._x = ((array_proses4[0].mulai)*10)+31;
this['p4_'+4]._width = (array_proses4[0].selesai-
array_proses4[0].mulai)*10;
duplicateMovieClip(wait4, 'wait4_'+4,
this.getNextHighestDepth());
this['wait4_'+4]._x =
((array_tunggu4[0].mulai)*10)+31;
this['wait4_'+4]._width = (array_tunggu4[0].selesai-
array_tunggu4[0].mulai)*10;
}
for (var i = 0; i<input_proses.text; i++) {
_root['name'+(i+1)].text = proses[i].name;
}
for (var i = 0; i<input_proses.text; i++) {
_root['name_p'+(i+1)].text = proses[i].name;
}
for (var i = 0; i<array_proses0.length; i++) {
if (array_proses0[i].selesai>panjang_proses) {
panjang_proses = array_proses0[i].selesai;
}
}
for (var i = 0; i<array_proses1.length; i++) {
if (array_proses1[i].selesai>panjang_proses) {
panjang_proses = array_proses1[i].selesai;
}
}
for (var i = 0; i<array_proses2.length; i++) {
if (array_proses2[i].selesai>panjang_proses) {
panjang_proses = array_proses2[i].selesai;
}
}
for (var i = 0; i<array_proses3.length; i++) {
if (array_proses3[i].selesai>panjang_proses) {
panjang_proses = array_proses3[i].selesai;
}
}
for (var i = 0; i<array_proses4.length; i++) {
if (array_proses4[i].selesai>panjang_proses) {
panjang_proses = array_proses4[i].selesai;
}
}
start_1 = true;
duplicateMovieClip(kotak, 'kotak_i',
this.getNextHighestDepth());
this['kotak_i']._y = 374;
duplicateMovieClip(garis, 'garis_i',
this.getNextHighestDepth());
this['garis_i']._y = 374;
_root.createEmptyMovieClip('animasi',
this.getNextHighestDepth());
149
_root.animasi.attachMovie('ball_ani', 'animasi',
this.getNextHighestDepth());
}
rec_array_temp.push({name:rec_array[i].name,
tiba:rec_array[i].tiba, eksekusi:rec_array[i].eksekusi,
mulai:rec_array[i].mulai, selesai:rec_array[i].selesai,
selesai:rec_array[i].tunggu});
} else {
rec_array_temp_sisa.push({name:rec_array[i].name,
tiba:rec_array[i].tiba, eksekusi:rec_array[i].eksekusi,
mulai:rec_array[i].mulai, selesai:rec_array[i].selesai,
selesai:rec_array[i].tunggu});
}
}
while (rec_array.length>0) {
rec_array.pop();
}
bubblesort_temp_sisa_tiba();
bubblesort_temp_tiba();
while (rec_array_temp.length>0) {
rec_array.push(rec_array_temp.pop());
}
bubblesort_temp_sisa_eksekusi();
while (rec_array_temp_sisa.length>0) {
rec_array.push(rec_array_temp_sisa.pop());
}
150
}
rec_array[0].mulai = rec_array[0].tiba;
rec_array[0].selesai =
rec_array[0].mulai+rec_array[0].eksekusi;
var reco:Array = new Array();
for (i=0; i<rec_array.length; i++) {
reco.push({name:rec_array[i].name,
tiba:rec_array[i].tiba, eksekusi:rec_array[i].eksekusi,
mulai:rec_array[i].mulai, selesai:rec_array[i].selesai,
tunggu:rec_array[i].tunggu});
}
for (i=1; i<rec_array.length; i++) {
if (rec_array[i].tiba<=rec_array[i-1].selesai) {
rec_array_temp.push({name:rec_array[i].name,
tiba:rec_array[i].tiba, eksekusi:rec_array[i].eksekusi,
mulai:rec_array[i].mulai, selesai:rec_array[i].selesai,
tunggu:rec_array[i].tunggu});
} else {
rec_array_temp_sisa.push({name:rec_array[i].name,
tiba:rec_array[i].tiba, eksekusi:rec_array[i].eksekusi,
mulai:rec_array[i].mulai, selesai:rec_array[i].selesai,
tunggu:rec_array[i].tunggu});
}
}
while (rec_array.length>0) {
rec_array.pop();
}
bubblesort_temp_sisa_tiba();
bubblesort_temp_tiba();
bubblesort_temp_eksekusi();
while (rec_array_temp.length>0) {
rec_array.push(rec_array_temp.pop());
}
if (rec_array_temp.length=0) {
bubblesort_temp_sisa_eksekusi();
} else {
bubblesort_temp_sisa_tiba();
}
bubblesort_temp_sisa_eksekusi();
while (rec_array_temp_sisa.length>0) {
rec_array.push(rec_array_temp_sisa.pop());
}
var rec_1:Array = new Array();
for (i=0; i<rec_array.length; i++) {
rec_1.push({name:rec_array[i].name,
tiba:rec_array[i].tiba, eksekusi:rec_array[i].eksekusi,
mulai:rec_array[i].mulai, selesai:rec_array[i].selesai,
selesai:rec_array[i].tunggu});
trace("name: "+rec_array[i].name);
}
rec_array.splice(0, rec_array.length);
rec_array.push({name:rec_0[0].name, tiba:rec_0[0].tiba,
eksekusi:rec_0[0].eksekusi, mulai:rec_0[0].mulai,
selesai:rec_0[0].selesai, tunggu:rec_0[0].tunggu});
for (i=0; i<rec_1.length; i++) {
151
rec_array.push({name:rec_1[i].name,
tiba:rec_1[i].tiba, eksekusi:rec_1[i].eksekusi,
mulai:rec_1[i].mulai, selesai:rec_1[i].selesai,
tunggu:rec_1[i].tunggu});
trace("name: "+rec_array[i].name);
}
rec_array[0].mulai = rec_array[0].tiba;
rec_array[0].selesai =
rec_array[0].mulai+rec_array[0].eksekusi;
for (i=0; i<rec_array.length; i++) {
if (rec_array[i].tiba>rec_array[i-1].selesai) {
rec_array[i].mulai = rec_array[i].tiba;
rec_array[i].selesai =
rec_array[i].mulai+rec_array[i].eksekusi;
} else if ((rec_array[i].tiba<rec_array[i-1].selesai
|| rec_array[i].tiba == rec_array[i-1].selesai)) {
rec_array[i].mulai = rec_array[i-1].selesai;
rec_array[i].selesai =
rec_array[i].mulai+rec_array[i].eksekusi;
}
}
for (var i = 0; i<input_proses.text; i++) {
proses[i].name = rec_array[i].name;
proses[i].saattiba = rec_array[i].tiba;
proses[i].lamaproses = rec_array[i].eksekusi;
proses[i].warna =
_root['warna'+(rec_array[i].name.substr(1, 1))];
}
for (var i = 0; i<input_proses.text; i++) {
AT[i] = (proses[i].saattiba);
ST[i] = (proses[i].lamaproses);
}
awt = FCFS(AT, ST, input_proses.text);
for (var i = 0; i<input_proses.text; i++) {
rec_array_hasil.push({nama:proses[i].name,
tiba:proses[i].saattiba, StartWait:StartWait[i],
FinishWait:FinishWait[i], StartProc:StartProc[i],
FinishProc:FinishProc[i], warna:proses[i].warna});
}
rec_array_hasil.sortOn(["tiba"], Array.NUMERIC);
if (cari1(1) == true) {
array_proses0.push({nama:rec_array_hasil[0].nama,
mulai:rec_array_hasil[0].StartProc,
selesai:rec_array_hasil[0].FinishProc});
trace('prosess0 mulai '+array_proses0[0].selesai);
duplicateMovieClip(p0, 'p0_'+0,
this.getNextHighestDepth());
var my_color1_SJFNP:Color = new Color(this['p0_'+0]);
my_color1_SJFNP.setRGB(rec_array_hasil[0].warna);
this['p0_'+0]._x = ((array_proses0[0].mulai)*10)+31;
this['p0_'+0]._width = (array_proses0[0].selesai-
array_proses0[0].mulai)*10;
duplicateMovieClip(wait0, 'wait0_'+0,
this.getNextHighestDepth());
this['wait0_'+0]._x =
((array_tunggu0[0].selesai)*10)+31;
152
this['wait0_'+0]._width = (array_tunggu0[0].selesai-
array_tunggu0[0].mulai)*10;
}
if (cari1(2) == true) {
array_proses1.push({nama:rec_array_hasil[1].nama,
mulai:rec_array_hasil[1].StartProc,
selesai:rec_array_hasil[1].FinishProc});
if (rec_array_hasil[1].FinishWait != 0) {
array_tunggu1.push({mulai:rec_array_hasil[1].StartWait,
selesai:rec_array_hasil[1].FinishWait});
}
if (array_proses1[0].mulai<rec_array_hasil[1].tiba) {
array_proses1[0].mulai =
rec_array_hasil[1].tiba;
}
duplicateMovieClip(p1, 'p1_0',
this.getNextHighestDepth());
var my_color2_SJFNP:Color = new Color(this['p1_0']);
my_color2_SJFNP.setRGB(rec_array_hasil[1].warna);
this['p1_0']._x = ((array_proses1[0].mulai)*10)+31;
this['p1_0']._width = (array_proses1[0].selesai-
array_proses1[0].mulai)*10;
duplicateMovieClip(wait1, 'wait1_1',
this.getNextHighestDepth());
this['wait1_1']._x = ((array_tunggu1[0].mulai)*10)+31;
this['wait1_1']._width = (array_tunggu1[0].selesai-
array_tunggu1[0].mulai)*10;
}
if (cari1(3) == true) {
array_proses2.push({nama:rec_array_hasil[2].nama,
mulai:rec_array_hasil[2].StartProc,
selesai:rec_array_hasil[2].FinishProc});
if (rec_array_hasil[2].FinishWait != 0) {
array_tunggu2.push({mulai:rec_array_hasil[2].StartWait,
selesai:rec_array_hasil[2].FinishWait});
}
if (array_proses2[0].mulai<prec_array_hasil[2].tiba) {
array_proses2[0].mulai =
rec_array_hasil[2].tiba;
}
duplicateMovieClip(p2, 'p2_'+2,
this.getNextHighestDepth());
var my_color3_SJFNP:Color = new Color(this['p2_'+2]);
my_color3_SJFNP.setRGB(rec_array_hasil[2].warna);
this['p2_'+2]._x = ((array_proses2[0].mulai)*10)+31;
this['p2_'+2]._width = (array_proses2[0].selesai-
array_proses2[0].mulai)*10;
duplicateMovieClip(wait2, 'wait2_'+2,
this.getNextHighestDepth());
this['wait2_'+2]._x =
((array_tunggu2[0].mulai)*10)+31;
this['wait2_'+2]._width = (array_tunggu2[0].selesai-
array_tunggu2[0].mulai)*10;
}
153
if (cari1(4) == true) {
array_proses3.push({nama:rec_array_hasil[3].nama,
mulai:rec_array_hasil[3].StartProc,
selesai:rec_array_hasil[3].FinishProc});
if (rec_array_hasil[3].FinishWait != 0) {
array_tunggu3.push({mulai:rec_array_hasil[3].StartWait,
selesai:rec_array_hasil[3].FinishWait});
}
if (array_proses3[0].mulai<prec_array_hasil[3].tiba) {
array_proses3[0].mulai =
rec_array_hasil[3].tiba;
}
duplicateMovieClip(p3, 'p3_'+3,
this.getNextHighestDepth());
var my_color4_SJFNP:Color = new Color(this['p3_'+3]);
my_color4_SJFNP.setRGB(rec_array_hasil[3].warna);
this['p3_'+3]._x = ((array_proses3[0].mulai)*10)+31;
this['p3_'+3]._width = (array_proses3[0].selesai-
array_proses3[0].mulai)*10;
duplicateMovieClip(wait3, 'wait3_'+3,
this.getNextHighestDepth());
this['wait3_'+3]._x =
((array_tunggu3[0].mulai)*10)+31;
this['wait3_'+3]._width = (array_tunggu3[0].selesai-
array_tunggu3[0].mulai)*10;
}
if (cari1(5) == true) {
array_proses4.push({nama:rec_array_hasil[4].nama,
mulai:rec_array_hasil[4].StartProc,
selesai:rec_array_hasil[4].FinishProc});
if (rec_array_hasil[4].FinishWait != 0) {
array_tunggu4.push({mulai:rec_array_hasil[4].StartWait,
selesai:rec_array_hasil[4].FinishWait});
}
if (array_proses4[0].mulai<rec_array_hasil[4].tiba) {
array_proses4[0].mulai =
rec_array_hasil[4].tiba;
}
duplicateMovieClip(p4, 'p4_'+4,
this.getNextHighestDepth());
var my_color5_SJFNP:Color = new Color(this['p4_'+4]);
my_color5_SJFNP.setRGB(rec_array_hasil[4].warna);
this['p4_'+4]._x = ((array_proses4[0].mulai)*10)+31;
this['p4_'+4]._width = (array_proses4[0].selesai-
array_proses4[0].mulai)*10;
duplicateMovieClip(wait4, 'wait4_'+4,
this.getNextHighestDepth());
this['wait4_'+4]._x =
((array_tunggu4[0].mulai)*10)+31;
this['wait4_'+4]._width = (array_tunggu4[0].selesai-
array_tunggu4[0].mulai)*10;
}
for (var i = 0; i<input_proses.text; i++) {
_root['name'+(i+1)].text = rec_array_hasil[i].nama;
154
}
for (var i = 0; i<input_proses.text; i++) {
_root['name_p'+(i+1)].text = rec_array_hasil[i].nama;
}
for (var i = 0; i<array_proses0.length; i++) {
if (array_proses0[i].selesai>panjang_proses) {
panjang_proses = array_proses0[i].selesai;
}
}
for (var i = 0; i<array_proses1.length; i++) {
if (array_proses1[i].selesai>panjang_proses) {
panjang_proses = array_proses1[i].selesai;
}
}
for (var i = 0; i<array_proses2.length; i++) {
if (array_proses2[i].selesai>panjang_proses) {
panjang_proses = array_proses2[i].selesai;
}
}
for (var i = 0; i<array_proses3.length; i++) {
if (array_proses3[i].selesai>panjang_proses) {
panjang_proses = array_proses3[i].selesai;
}
}
for (var i = 0; i<array_proses4.length; i++) {
if (array_proses4[i].selesai>panjang_proses) {
panjang_proses = array_proses4[i].selesai;
}
}
start_1 = true;
duplicateMovieClip(kotak, 'kotak_i',
this.getNextHighestDepth());
this['kotak_i']._y = 374;
duplicateMovieClip(garis, 'garis_i',
this.getNextHighestDepth());
this['garis_i']._y = 374;
_root.createEmptyMovieClip('animasi',
this.getNextHighestDepth());
_root.animasi.attachMovie('ball_ani', 'animasi',
this.getNextHighestDepth());
}
155
return 'ada';
}
}
return 'tdk';
}
function cari_id(inp:String) {
for (var i = 0; i<array_id.length; i++) {
if (array_id[i].id == inp) {
return 'ada';
}
}
return 'tdk';
}
function cari1(k:Number) {
for (var i = 1; i<=_root.proses_jumlah; i++) {
if (i == k) {
return true;
}
}
}
function SJFPrem() {
for (var i = 0; i<input_proses.text; i++) {
array.push({name:rec_array[i].name,
id:rec_array[i].id, AT:rec_array[i].tiba,
ET:rec_array[i].eksekusi, ST:'', FT:'', WT:'', RT:''});
}
rec_array.sortOn(["tiba"], Array.NUMERIC);
for (i=0; i<array.length; i++) {
//trace("nama: "+array[i].name+" tiba: "+array[i].AT+"
eksekusi: "+array[i].ET+" prioritas: "+array[i].Prio);
}
trace("=====================================================
=============");
array.sortOn(["AT"], Array.NUMERIC);
start_time = array[0].AT;
max_time = start_time;
for (i=0; i<array.length; i++) {
array2.push({name:array[i].name, id:array[i].id,
AT:array[i].AT, ET:array[i].ET, Prio:array[i].Prio,
ST:array[i].ST, FT:array[i].FT, WT:array[i].WT, RT:array[i].ET});
if ((array[i].AT-max_time)<=0) {
max_time += array[i].ET;
} else {
max_time += (array[i].AT-max_time)+array[i].ET;
}
}
for (i=0; i<(max_time-1); i++) {
if (i<(start_time-1)) {
trace("detik ke: "+(i+1)+" ....");
trace("menunggu di awal............");
continue;
}
array2.sortOn(["AT", "RT"], Array.NUMERIC);
n = 0;
for (k=0; k<array2.length; k++) {
if (array2[k].RT>0) {
156
n = k;
break;
}
}
if (array2[n].AT>(i+1)) {
trace("detik ke: "+(i+1)+" ....");
trace("menunggu ditengah ............");
continue;
}
array2[n].RT -= 1;
array2[n].AT += 1;
for (j=(n+1); j<array2.length; j++) {
if (array2[j].AT<array2[n].AT) {
array2[j].AT += 1;
}
}
array_hasil.push({nama:array2[n].name, tempat:(i+1),
id:array2[n].id, mulai:(array2[n].AT)-1, selesai:array2[n].AT});
trace("detik ke: "+(i+1)+" ....");
trace("nama proses: "+array2[n].name+", dengan AT:
"+array2[n].AT+" dan ET: "+array2[n].ET+", RT: "+array2[n].RT+",
ID : "+array2[n].id);
}
if (cari_tiba0() == 'ada') {
trace('ada saattiba yg 0');
array_hasil.push({nama:array2[n].name,
tempat:array_hasil[array_hasil.length-1].tempat+1,
id:array_hasil[array_hasil.length-1].id,
mulai:(array_hasil[array_hasil.length-1].selesai),
selesai:(array_hasil[array_hasil.length-1].selesai)+1});
}
for (var i = 0; i<array_hasil.length; i++) {
trace("rec_array --> nama : "+array_hasil[i].nama+"
nilai : "+array_hasil[i].tempat+' ID '+array_hasil[i].id+' mulai
'+array_hasil[i].mulai+' selesai '+array_hasil[i].selesai);
}
for (var i = 0; i<array_hasil.length; i++) {
if (array_hasil[i].nama != array_hasil[i+1].nama) {
if (cari_tiba0() == 'ada') {
trace('ada yang tibanya NOL');
rec_array_hasil.push({nama:array_hasil[i].nama,
id:array_hasil[i].id, nilai:array_hasil[i].tempat, mulai:'',
selesai:array_hasil[i].tempat});
} else {
rec_array_hasil.push({nama:array_hasil[i].nama,
id:array_hasil[i].id, nilai:array_hasil[i].tempat, mulai:'',
selesai:array_hasil[i].tempat+1});
}
}
}
for (var i = 0; i<rec_array_hasil.length; i++) {
trace("rec_array hasil--> proses:
"+rec_array_hasil[i].nama+" nilai : "+rec_array_hasil[i].nilai+'
157
mulai '+rec_array_hasil[i].mulai+' selesai
'+rec_array_hasil[i].selesai);
}
trace('===================');
rec_array_hasil[0].mulai = array_hasil[0].mulai;
for (var i = 1; i<rec_array_hasil.length; i++) {
rec_array_hasil[i].mulai = rec_array_hasil[i-
1].selesai;
}
for (var i = 0; i<rec_array_hasil.length; i++) {
trace("hasil disederhanakan - > nama proses:
"+rec_array_hasil[i].nama+' id '+rec_array_hasil[i].id+' mulai
'+rec_array_hasil[i].mulai+' selesai
'+rec_array_hasil[i].selesai);
}
array_id.push({id:rec_array_hasil[0].id});
for (var i = 1; i<rec_array_hasil.length; i++) {
if (cari_id(rec_array_hasil[i].id) == 'tdk') {
array_id.push({id:rec_array_hasil[i].id});
}
}
for (var i = 0; i<array_id.length; i++) {
trace('array_id ID : '+array_id[i].id);
}
for (i=0; i<array.length; i++) {
array_temp.push({name:array[i].name, AT:array[i].AT,
ET:array[i].ET, id:array[i].id});
trace("array_temp -- nama: "+array_temp[i].name+"
tiba: "+array_temp[i].AT+" eksekusi: "+array_temp[i].ET);
}
trace('panjang array_temp '+array_temp.length);
for (var i = 0; i<rec_array_hasil.length; i++) {
trace("hasil -- nama proses:
"+rec_array_hasil[i].nama+' mulai '+rec_array_hasil[i].mulai+'
selesai '+rec_array_hasil[i].selesai);
}
for (var i = 0; i<rec_array.length; i++) {
rec_array[i].name =
array_temp[cari_index(array_id[i].id)].name;
rec_array[i].tiba =
array_temp[cari_index(array_id[i].id)].AT;
rec_array[i].eksekusi =
array_temp[cari_index(array_id[i].id)].ET;
rec_array[i].id =
array_temp[cari_index(array_id[i].id)].id;
}
var jml_proses0 = 0;
var jml_proses1 = 0;
var jml_proses2 = 0;
var jml_proses3 = 0;
var jml_proses4 = 0;
for (var i = 0; i<rec_array_hasil.length; i++) {
if (rec_array_hasil[i].nama == rec_array[0].name) {
jml_proses0++;
}
if (rec_array_hasil[i].nama == rec_array[1].name) {
158
jml_proses1++;
}
if (rec_array_hasil[i].nama == rec_array[2].name) {
jml_proses2++;
}
if (rec_array_hasil[i].nama == rec_array[3].name) {
jml_proses3++;
}
if (rec_array_hasil[i].nama == rec_array[4].name) {
jml_proses4++;
}
}
var jml_tunggu0 = jml_proses0-1;
var jml_tunggu1 = jml_proses1-1;
var jml_tunggu2 = jml_proses2-1;
var jml_tunggu3 = jml_proses3-1;
var jml_tunggu4 = jml_proses4-1;
for (var i = 0; i<rec_array_hasil.length; i++) {
if (rec_array_hasil[i].nama == rec_array[0].name) {
array_proses0.push({nama:rec_array_hasil[i].nama,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
if (rec_array_hasil[i].nama == rec_array[1].name) {
array_proses1.push({nama:rec_array_hasil[i].nama,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
if (rec_array_hasil[i].nama == rec_array[2].name) {
array_proses2.push({nama:rec_array_hasil[i].nama,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
if (rec_array_hasil[i].nama == rec_array[3].name) {
array_proses3.push({nama:rec_array_hasil[i].nama,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
if (rec_array_hasil[i].nama == rec_array[4].name) {
array_proses4.push({nama:rec_array_hasil[i].nama,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
}
for (var i = 0; i<array_proses0.length; i++) {
trace("NAMA: "+array_proses0[i].nama+" MULAI:
"+array_proses0[i].mulai+" "+"SELESAI:
"+array_proses0[i].selesai);
}
for (var i = 0; i<jml_tunggu0; i++) {
159
array_tunggu0.push({mulai:array_proses0[i].selesai,
selesai:array_proses0[i+1].mulai});
trace("mulai tunggu "+(i+1)+"
"+array_proses0[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses0[i+1].mulai);
}
for (var i = 0; i<array_proses1.length; i++) {
trace("NAMA: "+array_proses1[i].nama+" MULAI:
"+array_proses1[i].mulai+" "+"SELESAI:
"+array_proses1[i].selesai);
}
if (array_proses1[0].mulai>rec_array[1].tiba) {
array_tunggu1.push({mulai:rec_array[1].tiba,
selesai:array_proses1[0].mulai});
}
for (var i = 0; i<jml_tunggu1; i++) {
array_tunggu1.push({mulai:array_proses1[i].selesai,
selesai:array_proses1[i+1].mulai});
trace("mulai tunggu ke "+(i+1)+"
"+array_proses1[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses1[i+1].mulai);
}
for (var i = 0; i<array_proses2.length; i++) {
trace("NAMA: "+array_proses2[i].nama+" MULAI:
"+array_proses2[i].mulai+" "+"SELESAI:
"+array_proses2[i].selesai);
}
if (array_proses2[0].mulai>rec_array[2].tiba) {
array_tunggu2.push({mulai:rec_array[2].tiba,
selesai:array_proses2[0].mulai});
}
for (var i = 0; i<jml_tunggu2; i++) {
array_tunggu2.push({mulai:array_proses2[i].selesai,
selesai:array_proses2[i+1].mulai});
trace("mulai tunggu ke "+(i+1)+"
"+array_proses2[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses2[i+1].mulai);
}
for (var i = 0; i<array_proses3.length; i++) {
trace("NAMA: "+array_proses3[i].nama+" MULAI:
"+array_proses3[i].mulai+" "+"SELESAI:
"+array_proses3[i].selesai);
}
if (array_proses3[0].mulai>rec_array[3].tiba) {
array_tunggu3.push({mulai:rec_array[3].tiba,
selesai:array_proses3[0].mulai});
}
for (var i = 0; i<jml_tunggu3; i++) {
array_tunggu3.push({mulai:array_proses3[i].selesai,
selesai:array_proses3[i+1].mulai});
trace("mulai tunggu ke "+(i+1)+"
"+array_proses3[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses3[i+1].mulai);
}
for (var i = 0; i<array_proses4.length; i++) {
160
trace("NAMA: "+array_proses4[i].nama+" MULAI:
"+array_proses4[i].mulai+" "+"SELESAI:
"+array_proses4[i].selesai);
}
if (array_proses4[0].mulai>rec_array[4].tiba) {
array_tunggu4.push({mulai:rec_array[4].tiba,
selesai:array_proses4[0].mulai});
}
for (var i = 0; i<jml_tunggu4; i++) {
array_tunggu4.push({mulai:array_proses4[i].selesai,
selesai:array_proses4[i+1].mulai});
trace("mulai tunggu ke "+(i+1)+"
"+array_proses4[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses4[i+1].mulai);
}
for (var i = 0; i<array_proses0.length; i++) {
if (array_proses0[i].selesai>panjang_proses) {
panjang_proses = array_proses0[i].selesai;
}
}
for (var i = 0; i<array_proses1.length; i++) {
if (array_proses1[i].selesai>panjang_proses) {
panjang_proses = array_proses1[i].selesai;
}
}
for (var i = 0; i<array_proses2.length; i++) {
if (array_proses2[i].selesai>panjang_proses) {
panjang_proses = array_proses2[i].selesai;
}
}
for (var i = 0; i<array_proses3.length; i++) {
if (array_proses3[i].selesai>panjang_proses) {
panjang_proses = array_proses3[i].selesai;
}
}
for (var i = 0; i<array_proses4.length; i++) {
if (array_proses4[i].selesai>panjang_proses) {
panjang_proses = array_proses4[i].selesai;
}
}
for (var i = 0; i<input_proses.text; i++) {
proses[i].name = rec_array[i].name;
proses[i].saattiba = rec_array[i].tiba;
proses[i].lamaproses = rec_array[i].eksekusi;
proses[i].warna =
_root['warna'+(rec_array[i].name.substr(1, 1))];
}
for (var i = 0; i<proses.length; i++) {
trace('urutan id '+cari_index(array_id[i].id));
proses[i].name =
array_temp[cari_index(array_id[i].id)].name;
proses[i].saattiba =
array_temp[cari_index(array_id[i].id)].AT;
proses[i].lamaproses =
array_temp[cari_index(array_id[i].id)].ET;
161
proses[i].id[i].id =
array_temp[cari_index(array_id[i].id)].id;
}
for (i=0; i<input_proses.text; i++) {
trace("nama proses: "+proses[i].name+" ID :
"+proses[i].id+" tiba: "+proses[i].saattiba+" eksekusi:
"+proses[i].lamaproses+"warna : "+proses[i].warna);
}
if (array_proses1[0].mulai<proses[1].saattiba) {
array_proses1[0].mulai = proses[1].saattiba;
}
if (array_proses2[0].mulai<proses[2].saattiba) {
array_proses2[0].mulai = proses[2].saattiba;
}
if (array_proses3[0].mulai<proses[3].saattiba) {
array_proses3[0].mulai = proses[3].saattiba;
}
if (array_proses4[0].mulai<proses[4].saattiba) {
array_proses4[0].mulai = proses[4].saattiba;
}
var my_color1:Color = new Color(p0);
my_color1.setRGB(proses[0].warna);
var my_color2:Color = new Color(p1);
my_color2.setRGB(proses[1].warna);
var my_color3:Color = new Color(p2);
my_color3.setRGB(proses[2].warna);
var my_color4:Color = new Color(p3);
my_color4.setRGB(proses[3].warna);
var my_color5:Color = new Color(p4);
my_color5.setRGB(proses[4].warna);
for (i=0; i<input_proses.text; i++) {
//trace("hasil proses nama: "+proses[i].name+" tiba:
"+proses[i].saattiba+" lama: "+proses[i].lamaproses+"warna :
"+proses[i].warna);
}
for (var i = 0; i<input_proses.text; i++) {
_root['name'+(i+1)].text = proses[i].name;
}
for (var i = 0; i<input_proses.text; i++) {
_root['name_p'+(i+1)].text = proses[i].name;
}
for (var j = 0; j<array_proses0.length; j++) {
duplicateMovieClip(p0, 'p0_'+j,
this.getNextHighestDepth());
var my_color1_RR:Color = new Color(this['p0_'+j]);
my_color1_RR.setRGB(proses[0].warna);
this['p0_'+j]._x = ((array_proses0[j].mulai)*10)+31;
this['p0_'+j]._width = (array_proses0[j].selesai-
array_proses0[j].mulai)*10;
}
for (var j = 0; j<jml_tunggu0; j++) {
duplicateMovieClip(wait0, 'wait0_'+j,
this.getNextHighestDepth());
this['wait0_'+j]._x =
((array_proses0[j].selesai)*10)+31;
162
this['wait0_'+j]._width = (array_proses0[j+1].mulai-
array_proses0[j].selesai)*10;
}
for (var j = 0; j<array_proses1.length; j++) {
trace("menggambar prosess "+j);
duplicateMovieClip(p1, 'p1_'+j,
this.getNextHighestDepth());
var my_color2_RR:Color = new Color(this['p1_'+j]);
my_color2_RR.setRGB(proses[1].warna);
this['p1_'+j]._x = ((array_proses1[j].mulai)*10)+31;
this['p1_'+j]._width = (array_proses1[j].selesai-
array_proses1[j].mulai)*10;
}
if (array_tunggu1.length != 0) {
duplicateMovieClip(wait1, 'wait1_pertama',
this.getNextHighestDepth());
this['wait1_pertama']._x =
((rec_array[1].tiba)*10)+31;
this['wait1_pertama']._width =
(array_proses1[0].mulai-rec_array[1].tiba)*10;
}
for (var j = 0; j<jml_tunggu1; j++) {
duplicateMovieClip(wait1, 'wait1_'+j,
this.getNextHighestDepth());
this['wait1_'+j]._x =
((array_proses1[j].selesai)*10)+31;
this['wait1_'+j]._width = (array_proses1[j+1].mulai-
array_proses1[j].selesai)*10;
}
for (var j = 0; j<array_proses2.length; j++) {
duplicateMovieClip(p2, 'p2_'+j,
this.getNextHighestDepth());
var my_color3_RR:Color = new Color(this['p2_'+j]);
my_color3_RR.setRGB(proses[2].warna);
this['p2_'+j]._x = ((array_proses2[j].mulai)*10)+31;
this['p2_'+j]._width = (array_proses2[j].selesai-
array_proses2[j].mulai)*10;
}
duplicateMovieClip(wait2, 'wait2_pertama',
this.getNextHighestDepth());
this['wait2_pertama']._x = ((rec_array[2].tiba)*10)+31;
this['wait2_pertama']._width = (array_proses2[0].mulai-
rec_array[2].tiba)*10;
for (var j = 0; j<jml_tunggu2; j++) {
duplicateMovieClip(wait2, 'wait2_'+j,
this.getNextHighestDepth());
this['wait2_'+j]._x =
((array_proses2[j].selesai)*10)+31;
this['wait2_'+j]._width = (array_proses2[j+1].mulai-
array_proses2[j].selesai)*10;
}
for (var j = 0; j<array_proses3.length; j++) {
duplicateMovieClip(p3, 'p3_'+j,
this.getNextHighestDepth());
var my_color4_RR:Color = new Color(this['p3_'+j]);
my_color4_RR.setRGB(proses[3].warna);
163
this['p3_'+j]._x = ((array_proses3[j].mulai)*10)+31;
this['p3_'+j]._width = (array_proses3[j].selesai-
array_proses3[j].mulai)*10;
}
duplicateMovieClip(wait3, 'wait3_pertama',
this.getNextHighestDepth());
this['wait3_pertama']._x = ((rec_array[3].tiba)*10)+31;
this['wait3_pertama']._width = (array_proses3[0].mulai-
rec_array[3].tiba)*10;
for (var j = 0; j<jml_tunggu3; j++) {
duplicateMovieClip(wait3, 'wait3_'+j,
this.getNextHighestDepth());
this['wait3_'+j]._x =
((array_proses3[j].selesai)*10)+31;
this['wait3_'+j]._width = (array_proses3[j+1].mulai-
array_proses3[j].selesai)*10;
}
for (var j = 0; j<array_proses4.length; j++) {
duplicateMovieClip(p4, 'p4_'+j,
this.getNextHighestDepth());
var my_color5_RR:Color = new Color(this['p4_'+j]);
my_color5_RR.setRGB(proses[4].warna);
this['p4_'+j]._x = ((array_proses4[j].mulai)*10)+31;
this['p4_'+j]._width = (array_proses4[j].selesai-
array_proses4[j].mulai)*10;
}
duplicateMovieClip(wait4, 'wait4_pertama',
this.getNextHighestDepth());
this['wait4_pertama']._x = ((rec_array[4].tiba)*10)+31;
this['wait4_pertama']._width = (array_proses4[0].mulai-
rec_array[4].tiba)*10;
for (var j = 0; j<jml_tunggu4; j++) {
duplicateMovieClip(wait4, 'wait4_'+j,
this.getNextHighestDepth());
this['wait4_'+j]._x =
((array_proses4[j].selesai)*10)+31;
this['wait4_'+j]._width = (array_proses4[j+1].mulai-
array_proses4[j].selesai)*10;
}
duplicateMovieClip(kotak, 'kotak_i',
this.getNextHighestDepth());
this['kotak_i']._y = 374;
duplicateMovieClip(garis, 'garis_i',
this.getNextHighestDepth());
this['garis_i']._y = 374;
start_1 = true;
_root.createEmptyMovieClip('animasi',
this.getNextHighestDepth());
_root.animasi.attachMovie('ball_ani', 'animasi',
this.getNextHighestDepth());
}
164
Listing Pada File Final SO Layer Round R
function roundRobin() {
var panjang = 80;
var proses_a = 0;
rec_array.sortOn(["tiba"]);
while (proses_a<80) {
for (i=0; i<rec_array.length; i++) {
if ((rec_array[i].eksekusi>=quantum) &&
(rec_array[i].tiba<proses_a)) {
rec_array_hasil.push({nama:rec_array[i].name, tempat:i,
nilai:quantum, mulai:"", selesai:""});
proses_a = proses_a+quantum;
rec_array[i].eksekusi =
rec_array[i].eksekusi-quantum;
} else if ((rec_array[i].eksekusi>0) &&
(rec_array[i].eksekusi<quantum) && (rec_array[i].tiba<proses_a)) {
rec_array_hasil.push({nama:rec_array[i].name, tempat:i,
nilai:rec_array[i].eksekusi, mulai:"", selesai:""});
proses_a = proses_a+rec_array[i].eksekusi;
rec_array[i].eksekusi = 0;
}
}
proses_a = proses_a+quantum;
}
rec_array_hasil[0].mulai = rec_array[0].tiba;
rec_array_hasil[0].selesai =
rec_array_hasil[0].mulai+rec_array_hasil[0].nilai;
for (i=1; i<rec_array_hasil.length; i++) {
rec_array_hasil[i].mulai = rec_array_hasil[i-
1].mulai+rec_array_hasil[i-1].nilai;
rec_array_hasil[i].selesai =
rec_array_hasil[i].mulai+rec_array_hasil[i].nilai;
}
rec_array_hasil.sortOn(["tiba"]);
for (var i = 0; i<rec_array_hasil.length; i++) {
trace("NAMA: "+rec_array_hasil[i].nama+" "+"PROSES:
"+rec_array_hasil[i].tempat+" "+"JALAN:
"+rec_array_hasil[i].nilai+" "+"MULAI:
"+rec_array_hasil[i].mulai+" "+"SELESAI:
"+rec_array_hasil[i].selesai);
}
var jml_proses0 = 0;
var jml_proses1 = 0;
var jml_proses2 = 0;
var jml_proses3 = 0;
var jml_proses4 = 0;
for (var i = 0; i<rec_array_hasil.length; i++) {
if (rec_array_hasil[i].nama == rec_array[0].name) {
jml_proses0++;
}
if (rec_array_hasil[i].nama == rec_array[1].name) {
jml_proses1++;
}
if (rec_array_hasil[i].nama == rec_array[2].name) {
165
jml_proses2++;
}
if (rec_array_hasil[i].nama == rec_array[3].name) {
jml_proses3++;
}
if (rec_array_hasil[i].nama == rec_array[4].name) {
jml_proses4++;
}
}
var jml_tunggu0 = jml_proses0-1;
var jml_tunggu1 = jml_proses1-1;
var jml_tunggu2 = jml_proses2-1;
var jml_tunggu3 = jml_proses3-1;
var jml_tunggu4 = jml_proses4-1;
for (var i = 0; i<rec_array_hasil.length; i++) {
if (rec_array_hasil[i].nama == rec_array[0].name) {
array_proses0.push({nama:rec_array_hasil[i].nama,
tempat:rec_array_hasil[i].tempat, nilai:rec_array_hasil[i].nilai,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
if (rec_array_hasil[i].nama == rec_array[1].name) {
array_proses1.push({nama:rec_array_hasil[i].nama,
tempat:rec_array_hasil[i].tempat, nilai:rec_array_hasil[i].nilai,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
if (rec_array_hasil[i].nama == rec_array[2].name) {
array_proses2.push({nama:rec_array_hasil[i].nama,
tempat:rec_array_hasil[i].tempat, nilai:rec_array_hasil[i].nilai,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
if (rec_array_hasil[i].nama == rec_array[3].name) {
array_proses3.push({nama:rec_array_hasil[i].nama,
tempat:rec_array_hasil[i].tempat, nilai:rec_array_hasil[i].nilai,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
if (rec_array_hasil[i].nama == rec_array[4].name) {
array_proses4.push({nama:rec_array_hasil[i].nama,
tempat:rec_array_hasil[i].tempat, nilai:rec_array_hasil[i].nilai,
mulai:rec_array_hasil[i].mulai,
selesai:rec_array_hasil[i].selesai});
}
}
for (var i = 0; i<array_proses0.length; i++) {
trace("NAMA: "+array_proses0[i].nama+" "+"PROSES:
"+array_proses0[i].tempat+" "+"JALAN:
"+array_proses0[i].nilai+" "+"MULAI: "+array_proses0[i].mulai+"
"+"SELESAI: "+array_proses0[i].selesai);
166
}
for (var i = 0; i<jml_tunggu0; i++) {
array_tunggu0.push({mulai:array_proses0[i].selesai,
selesai:array_proses0[i+1].mulai});
trace("mulai tunggu "+(i+1)+"
"+array_proses0[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses0[i+1].mulai);
}
for (var i = 0; i<array_proses1.length; i++) {
trace("NAMA: "+array_proses1[i].nama+" MULAI:
"+array_proses1[i].mulai+" "+"SELESAI:
"+array_proses1[i].selesai);
}
if (array_proses1[0].mulai>rec_array[1].tiba) {
array_tunggu1.push({mulai:rec_array[1].tiba,
selesai:array_proses1[0].mulai});
}
for (var i = 0; i<jml_tunggu1; i++) {
array_tunggu1.push({mulai:array_proses1[i].selesai,
selesai:array_proses1[i+1].mulai});
trace("mulai tunggu ke "+(i+1)+"
"+array_proses1[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses1[i+1].mulai);
}
for (var i = 0; i<array_proses2.length; i++) {
trace("NAMA: "+array_proses2[i].nama+" MULAI:
"+array_proses2[i].mulai+" "+"SELESAI:
"+array_proses2[i].selesai);
}
if (array_proses2[0].mulai>rec_array[2].tiba) {
array_tunggu2.push({mulai:rec_array[2].tiba,
selesai:array_proses2[0].mulai});
}
for (var i = 0; i<jml_tunggu2; i++) {
array_tunggu2.push({mulai:array_proses2[i].selesai,
selesai:array_proses2[i+1].mulai});
trace("mulai tunggu ke "+(i+1)+"
"+array_proses2[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses2[i+1].mulai);
}
for (var i = 0; i<array_proses3.length; i++) {
trace("NAMA: "+array_proses3[i].nama+" MULAI:
"+array_proses3[i].mulai+" "+"SELESAI:
"+array_proses3[i].selesai);
}
if (array_proses3[0].mulai>rec_array[3].tiba) {
array_tunggu3.push({mulai:rec_array[3].tiba,
selesai:array_proses3[0].mulai});
}
for (var i = 0; i<jml_tunggu3; i++) {
array_tunggu3.push({mulai:array_proses3[i].selesai,
selesai:array_proses3[i+1].mulai});
trace("mulai tunggu ke "+(i+1)+"
"+array_proses3[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses3[i+1].mulai);
}
167
for (var i = 0; i<array_proses4.length; i++) {
trace("NAMA: "+array_proses4[i].nama+" MULAI:
"+array_proses4[i].mulai+" "+"SELESAI:
"+array_proses4[i].selesai);
}
if (array_proses4[0].mulai>rec_array[4].tiba) {
array_tunggu4.push({mulai:rec_array[4].tiba,
selesai:array_proses4[0].mulai});
}
for (var i = 0; i<jml_tunggu4; i++) {
array_tunggu4.push({mulai:array_proses4[i].selesai,
selesai:array_proses4[i+1].mulai});
trace("mulai tunggu ke "+(i+1)+"
"+array_proses4[i].selesai+" selesai tunggu "+(i+1)+"
"+array_proses4[i+1].mulai);
}
for (var i = 0; i<input_proses.text; i++) {
//proses.push({name: "P"+i, saattiba:
_root['p'+i+'_saattiba'], lamaproses:
_root['p'+i+'_lamaproses'],warna:_root['warna'+i]});
proses[i].name = rec_array[i].name;
proses[i].saattiba = rec_array[i].tiba;
proses[i].lamaproses = rec_array[i].eksekusi;
proses[i].warna =
_root['warna'+(rec_array[i].name.substr(1, 1))];
}
}
168
eksekusi: "+rec_array_temp[i].eksekusi+" prioritas:
"+rec_array_temp[i].prioritas);
}
rec_array.push(rec_array_temp_sisa.pop());
while (rec_array_temp.length>0) {
rec_array.push(rec_array_temp.pop());
}
}
trace(rec_array.length);
rec_array[0].mulai = rec_array[0].tiba;
rec_array[0].selesai =
rec_array[0].mulai+rec_array[0].eksekusi;
if (rec_array[1].tiba>rec_array[0].selesai) {
rec_array[1].mulai = rec_array[1].tiba;
rec_array[1].selesai =
rec_array[1].mulai+rec_array[1].eksekusi;
} else if ((rec_array[1].tiba<rec_array[0].selesai) ||
(rec_array[1].tiba == rec_array[0].selesai)) {
rec_array[1].mulai = rec_array[0].selesai;
rec_array[1].selesai =
rec_array[1].mulai+rec_array[1].eksekusi;
}
if (rec_array[2].tiba>rec_array[1].selesai) {
rec_array[2].mulai = rec_array[2].tiba;
rec_array[2].selesai =
rec_array[2].mulai+rec_array[2].eksekusi;
} else if ((rec_array[2].tiba<rec_array[1].selesai ||
rec_array[2].tiba == rec_array[1].selesai)) {
rec_array[2].mulai = rec_array[1].selesai;
rec_array[2].selesai =
rec_array[2].mulai+rec_array[2].eksekusi;
}
if (rec_array[3].tiba>rec_array[2].selesai) {
rec_array[3].mulai = rec_array[3].tiba;
rec_array[3].selesai =
rec_array[3].mulai+rec_array[3].eksekusi;
} else if ((rec_array[3].tiba<rec_array[2].selesai ||
rec_array[3].tiba == rec_array[2].selesai)) {
rec_array[3].mulai = rec_array[2].selesai;
rec_array[3].selesai =
rec_array[3].mulai+rec_array[3].eksekusi;
}
if (rec_array[4].tiba>rec_array[3].selesai) {
rec_array[4].mulai = rec_array[4].tiba;
rec_array[4].selesai =
rec_array[4].mulai+rec_array[4].eksekusi;
} else if ((rec_array[4].tiba<rec_array[3].selesai ||
rec_array[4].tiba == rec_array[3].selesai)) {
rec_array[4].mulai = rec_array[3].selesai;
rec_array[4].selesai =
rec_array[4].mulai+rec_array[4].eksekusi;
}
}
169
for (var i = 0; i<input_proses.text; i++) {
array.push({name:rec_array[i].name,
id:rec_array[i].id, AT:rec_array[i].tiba,
ET:rec_array[i].eksekusi, Prio:rec_array[i].prioritas, ST:'',
FT:'', WT:'', RT:''});
}
rec_array.sortOn(["tiba"], Array.NUMERIC);
for (i=0; i<array.length; i++) {
//trace("nama: "+array[i].name+" tiba: "+array[i].AT+"
eksekusi: "+array[i].ET+" prioritas: "+array[i].Prio);
}
trace("=====================================================
=============");
array.sortOn(["AT"], Array.NUMERIC);
start_time = array[0].AT;
max_time = start_time;
for (i=0; i<array.length; i++) {
array2.push({name:array[i].name, id:array[i].id,
AT:array[i].AT, ET:array[i].ET, Prio:array[i].Prio,
ST:array[i].ST, FT:array[i].FT, WT:array[i].WT, RT:array[i].ET,
OAT:array[i].AT});
if ((array[i].AT-max_time)<=0) {
max_time += array[i].ET;
} else {
max_time += (array[i].AT-max_time)+array[i].ET;
}
}
array2.sortOn(["Prio"], Array.NUMERIC);
max_prio = array2[4].Prio;
for (i=0; i<(max_time-1); i++) {
if (i<(start_time-1)) {
trace("detik ke: "+(i+1)+" ....");
trace("menunggu di awal............");
continue;
}
array2.sortOn(["AT", "Prio", "OAT"], Array.NUMERIC);
n = 0;
for (k=0; k<array2.length; k++) {
if (array2[k].RT>0) {
n = k;
break;
}
}
if (array2[n].AT>(i+1)) {
trace("detik ke: "+(i+1)+" ....");
trace("menunggu ditengah ............");
continue;
}
array2[n].RT -= 1;
array2[n].AT += 1;
if (array2[0].RT<=0) {
array2[0].Prio = max_prio+1;
}
for (j=(n+1); j<array2.length; j++) {
if (array2[j].AT<array2[n].AT) {
array2[j].AT += 1;
170
}
}
array_hasil.push({nama:array2[n].name, tempat:(i+1),
id:array2[n].id, mulai:(array2[n].AT)-1, selesai:array2[n].AT});
trace("detik ke: "+(i+1)+" ....");
trace("nama proses: "+array2[n].name+", dengan AT:
"+array2[n].AT+" dan ET: "+array2[n].ET+", RT: "+array2[n].RT);
}
if (cari_tiba0() == 'ada') {
trace('ada saattiba yg 0');
array_hasil.push({nama:array2[n].name,
tempat:array_hasil[array_hasil.length-1].tempat+1,
id:array_hasil[array_hasil.length-1].id,
mulai:(array_hasil[array_hasil.length-1].selesai),
selesai:(array_hasil[array_hasil.length-1].selesai)+1});
}
for (var i = 0; i<array_hasil.length; i++) {
trace("rec_array --> nama : "+array_hasil[i].nama+"
nilai : "+array_hasil[i].tempat+' ID '+array_hasil[i].id+' mulai
'+array_hasil[i].mulai+' selesai '+array_hasil[i].selesai);
}
for (var i = 0; i<array_hasil.length; i++) {
if (array_hasil[i].nama != array_hasil[i+1].nama) {
if (cari_tiba0() == 'ada') {
trace('ada yang tibanya NOL');
rec_array_hasil.push({nama:array_hasil[i].nama,
id:array_hasil[i].id, nilai:array_hasil[i].tempat, mulai:'',
selesai:array_hasil[i].tempat});
} else {
rec_array_hasil.push({nama:array_hasil[i].nama,
id:array_hasil[i].id, nilai:array_hasil[i].tempat, mulai:'',
selesai:array_hasil[i].tempat+1});
}
}
}
for (var i = 0; i<rec_array_hasil.length; i++) {
trace("rec_array hasil--> proses:
"+rec_array_hasil[i].nama+" nilai : "+rec_array_hasil[i].nilai+'
mulai '+rec_array_hasil[i].mulai+' selesai
'+rec_array_hasil[i].selesai);
}
trace('===================');
rec_array_hasil[0].mulai = array_hasil[0].mulai;
for (var i = 1; i<rec_array_hasil.length; i++) {
rec_array_hasil[i].mulai = rec_array_hasil[i-
1].selesai;
}
for (var i = 0; i<rec_array_hasil.length; i++) {
trace("hasil disederhanakan - > nama proses:
"+rec_array_hasil[i].nama+' id '+rec_array_hasil[i].id+' mulai
'+rec_array_hasil[i].mulai+' selesai
'+rec_array_hasil[i].selesai);
}
array_id.push({id:rec_array_hasil[0].id});
171
for (var i = 1; i<rec_array_hasil.length; i++) {
if (cari_id(rec_array_hasil[i].id) == 'tdk') {
array_id.push({id:rec_array_hasil[i].id});
}
}
for (var i = 0; i<array_id.length; i++) {
trace('array_id ID : '+array_id[i].id);
}
for (i=0; i<array.length; i++) {
array_temp.push({name:array[i].name, AT:array[i].AT,
ET:array[i].ET, id:array[i].id});
trace("array_temp -- nama: "+array_temp[i].name+"
tiba: "+array_temp[i].AT+" eksekusi: "+array_temp[i].ET);
}
trace('panjang array_temp '+array_temp.length);
for (var i = 0; i<rec_array_hasil.length; i++) {
trace("hasil -- nama proses:
"+rec_array_hasil[i].nama+' mulai '+rec_array_hasil[i].mulai+'
selesai '+rec_array_hasil[i].selesai);
}
}
172