Skip to content

Commit 2451b28

Browse files
committed
Initial commit
0 parents  commit 2451b28

18 files changed

+1054
-0
lines changed

.gitignore

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
### IntelliJ IDEA ###
2+
out/
3+
!**/src/main/**/out/
4+
!**/src/test/**/out/
5+
6+
### Eclipse ###
7+
.apt_generated
8+
.classpath
9+
.factorypath
10+
.project
11+
.settings
12+
.springBeans
13+
.sts4-cache
14+
bin/
15+
!**/src/main/**/bin/
16+
!**/src/test/**/bin/
17+
18+
### NetBeans ###
19+
/nbproject/private/
20+
/nbbuild/
21+
/dist/
22+
/nbdist/
23+
/.nb-gradle/
24+
25+
### VS Code ###
26+
.vscode/
27+
28+
### Mac OS ###
29+
.DS_Store

.idea/.gitignore

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/uiDesigner.xml

Lines changed: 124 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

SCHEDULER.iml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" inherit-compiler-output="true">
4+
<exclude-output />
5+
<content url="file://$MODULE_DIR$">
6+
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
7+
</content>
8+
<orderEntry type="inheritedJdk" />
9+
<orderEntry type="sourceFolder" forTests="false" />
10+
</component>
11+
</module>

src/CPUScheduler.java

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import java.util.List;
2+
import java.util.ArrayList;
3+
4+
public abstract class CPUScheduler {
5+
private final List<Row> rows;
6+
private final List<Event> timeline;
7+
private int timeQuantum;
8+
9+
public CPUScheduler(){
10+
rows = new ArrayList<>();
11+
timeline = new ArrayList<>();
12+
timeQuantum = 1;
13+
}
14+
15+
public boolean add(Row row){
16+
return rows.add(row);
17+
}
18+
19+
public void setTimeQuantum(int timeQuantum){
20+
this.timeQuantum = timeQuantum;
21+
}
22+
public int getTimeQuantum(){
23+
return timeQuantum;
24+
}
25+
26+
public double getAverageWaitingTime(){
27+
double avg = 0.0;
28+
for(Row r:rows){
29+
avg += r.getWaitingTime();
30+
}
31+
return avg/rows.size();
32+
}
33+
34+
public double getAverageTurnAroundTime(){
35+
double avg = 0.0;
36+
for(Row r:rows){
37+
avg += r.getTurnAroundTime();
38+
}
39+
return avg/rows.size();
40+
}
41+
42+
public Event getEvent(Row row){
43+
for(Event e:timeline){
44+
if(row.getProcessName().equals(e.getProcessName())){
45+
return e;
46+
}
47+
}
48+
return null;
49+
}
50+
51+
public Row getRow(String process){
52+
for(Row r:rows){
53+
if (r.getProcessName().equals(process)) {
54+
return r;
55+
}
56+
}
57+
return null;
58+
}
59+
60+
public List<Row> getRows(){
61+
return rows;
62+
}
63+
64+
public List<Event> getTimeline(){
65+
return timeline;
66+
}
67+
68+
public abstract void process();
69+
}

src/Event.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
public class Event {
2+
private String processName;
3+
private int startTime;
4+
private int finishTime;
5+
6+
public Event(String processName, int startTime, int finishTime){
7+
this.startTime = startTime;
8+
this.finishTime = finishTime;
9+
this.processName = processName;
10+
}
11+
12+
13+
public String getProcessName(){
14+
return processName;
15+
}
16+
public int getStartTime(){
17+
return startTime;
18+
}
19+
public int getFinishTime(){
20+
return finishTime;
21+
}
22+
public void setFinishTime(int finishTime){
23+
this.finishTime = finishTime;
24+
}
25+
}

src/FirstComeFirstServe.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import java.util.*;
2+
3+
public class FirstComeFirstServe extends CPUScheduler {
4+
@Override
5+
public void process() {
6+
// First Sorting is done on the basic of the Arrival Time
7+
Collections.sort(this.getRows(), (Object a,Object b)->{
8+
if(((Row) a).getArrivalTime() == ((Row) b).getArrivalTime()){
9+
return 0;
10+
} else if(((Row) a).getArrivalTime() < ((Row) b).getArrivalTime()){
11+
return -1;
12+
} else{
13+
return 1;
14+
}
15+
});
16+
17+
List<Event> timeline = this.getTimeline();
18+
for(Row row:this.getRows()){
19+
if(timeline.isEmpty()){
20+
timeline.add(new Event(row.getProcessName(), row.getArrivalTime(), row.getArrivalTime()+row.getBurstTime()));
21+
} else{
22+
Event e = timeline.get(timeline.size()-1);
23+
timeline.add(new Event(row.getProcessName(), e.getFinishTime(), e.getFinishTime()+row.getBurstTime()));
24+
}
25+
}
26+
27+
for(Row row:this.getRows()){
28+
row.setWaitingTime(this.getEvent(row).getStartTime() - row.getArrivalTime());
29+
row.setTurnAroundTime(row.getWaitingTime() + row.getBurstTime());
30+
}
31+
}
32+
}

0 commit comments

Comments
 (0)