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
----------------------------------------------------------------------------------------------------





