Berikut merupakan konsep dasar membuat simulasi algoritma penjadwalan
- FCFS (First Come First Served) => diproses berdasarkan waktu kedatangan / arrive time
- SJF (Shortest Job First) => diproses berdasarkan waktu pemrosesan / burst time
- SRT (Shortest Remaining Time) => diproses berdasarkan sisa waktu pemrosesan / burst time remaining
- Priority Non-Preemptive => diproses berdasarkan priority
- Priority Preemptive => diproses berdasarkan priority
- RR (Round Robin) => waktu pemrosesan berdasarkan quantum
- Process name:
string - arrive time:
int - Burst time:
int - priority:
int(Priority Scheduling) - quantum:
int(RR)
input test case dengan data file .txt, contoh format data:
#Name #ArriveT #BurstT #Priority P0 0 12 3 P1 19 6 4 P2 13 9 4 P3 4 1 5 P4 8 6 2 P5 8 2 6 P6 10 10 1 2 #quantumin the table:
- start time => waktu mulai ketika dieksekusi oleh CPU
- finish time => waktu selesai dieksekusi
- turnaround time => waktu dari datang sampai selesai dieksekusi
turnaround time = finish time - arrive time - waiting time => waktu tunggu saat sedang tidak dieksekusi
waiting time = turnaround time - burst time - response time => waktu dari datang sampai dieksekusi
response time = start time - Arrival time
off table:
- throughput =>
throughput = total time / n process - average start time =>
average start time = sum start time / n process - average turnaround time =>
average turnaround time = sum turnaround time / n process - average waiting time =>
average waiting time = sum waiting time / n process - average response time =>
average response time = sum response time / n process
note: total time => total waktu eksekusi semua proses, n proses => jumlah proses yang dieksekusi
- gantt chart, ex:
________ __ __________ ______________ ______ ____ |___P1___|P2|____P0____|______P4______|__P3__|_P5_| 0 4 5 10 17 20 22- input data
- process algorithm, choice (5 scheduling algorithm)
- output fitur, tiap algoritma menampilkan informasi output berupa fitur in table, fitur off table, dan gantt chart note: bahasa python
Desain program dibuat dalam bentuk OOP (Object Oriented Programing) menggunakan bahasa python. Model ini terdiri dari beberapa kelas:
- Process => Kelas ini digunakan untuk menampung atibut input proses dan fitur-fitur yang sudah dihitung
- ProcessState =>
- SchedulingAlgorithms => kelas ini digunakan untuk menampung proses dengan perhitungannya yang dibuat dalam method
- FCFS =>
- SJF =>
- SRT =>
- Priority =>
- PriorityPreemptive =>
- RR =>
- Table =>
selain itu juga dibuat fungsi untuk print fitur in table dan off table juga gantt chartnya disimpan dalam file fitur.py
Class Diagram
Inheritance
- FCFS
is aSchedulingAlgorithms - SJF
is aSchedulingAlgorithms - SRT
is aSchedulingAlgorithms - Priority
is aSchedulingAlgorithms - PriorityPreemptive
is aSchedulingAlgorithms - RR
is aSchedulingAlgorithms
Composite
- SchedulingAlgorithms
has aProcess
program di running dalam command promt atau powershell dengan meng-execute main.py
py main.py----------------------------------- Simulation Scheduling Algorithm ----------------------------------- Select input proses: 1. Manual 2. Import test case 0. Exit ============================== Enter number: -> ----------jika memilih 1
Enter how many process: 1 Enter Arrive Time: 0 Enter Burst Time : 1jika memilih 2
Select file .txt: 1. test-case\data.txt 2. test-case\data2.txt 3. test-case\data3.txt 4. test-case\data4.txt 5. test-case\dontUse.txt ============================== Warning! Pastikan data sesuai dengan format Enter number: -> ----------Input Process: +------+----------+---------+----------+ | Name | Arrive_T | Burst_T | Priority | +------+----------+---------+----------+ | P0 | 4 | 7 | 3 | | P1 | 0 | 7 | 4 | | P2 | 2 | 2 | 2 | | P3 | 7 | 4 | 1 | | P4 | 4 | 1 | 5 | | P5 | 8 | 3 | 2 | | P6 | 1 | 5 | 8 | +------+----------+---------+----------+Scheduling Algorithms: 1. FCFS (First Come First Served) 2. SJF (Shortest Job First) 3. SRT (Shortest Remaining Time) 4. Priority Scheduling (Non-Preemptive) 5. Priority Scheduling (Preemptive) 6. RR (Round Robin) 0. Exit ============================== Enter number: -> --------------------------------------------- FCFS (First Come First Served) ----------------------------------- +------+----------+---------+----------+---------+----------+--------------+-----------+------------+ | Name | Arrive_T | Burst_T | Priority | Start_T | Finish_T | Turnaround_T | Waiting_T | Response_T | +------+----------+---------+----------+---------+----------+--------------+-----------+------------+ | P1 | 0 | 7 | 4 | 0 | 7 | 7 | 0 | 0 | | P6 | 1 | 5 | 8 | 7 | 12 | 11 | 6 | 6 | | P2 | 2 | 2 | 2 | 12 | 14 | 12 | 10 | 10 | | P0 | 4 | 7 | 3 | 14 | 21 | 17 | 10 | 10 | | P4 | 4 | 1 | 5 | 21 | 22 | 18 | 17 | 17 | | P3 | 7 | 4 | 1 | 22 | 26 | 19 | 15 | 15 | | P5 | 8 | 3 | 2 | 26 | 29 | 21 | 18 | 18 | +------+----------+---------+----------+---------+----------+--------------+-----------+------------+ Average Start Time : 14.57 Average Turnaround Time : 15.00 Average Waiting Time : 10.86 Average Response Time : 10.86 Throughput : 4.14 second Gantt Chart: ______________ __________ ____ ______________ __ ________ ______ |______P1______|____P6____|_P2_|______P0______|P4|___P3___|__P5__| 0 7 12 14 21 22 26 29 ----------------------------------------------------------------------------------------------------





