Skip to content

Commit

Permalink
Merge pull request #8 from davilaerte/fix_exit_event
Browse files Browse the repository at this point in the history
Fixed issues in process scheduler event
  • Loading branch information
SilvaMatteus authored Jul 19, 2018
2 parents 3865275 + 6f34747 commit 227e0b9
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions lab_scheduling_policies/sched_simulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def __init__(self):
def take_cpu(self):
taken = self.running_proc
if taken:
assert taken.get_state() == Process.RUNNING
assert taken.get_state() == Process.RUNNING
taken.set_state(Process.RUNNABLE)
self.running_proc = None
return taken
Expand Down Expand Up @@ -74,6 +74,7 @@ def process_is_done(proc):

previous_t = Clock.current_time
Clock.current_time = event.get_timestamp()
schedule_timestamp = Clock.now() + SLICE_DURATION

if (event.get_type() == event_types.SCHEDULE):

Expand All @@ -88,14 +89,21 @@ def process_is_done(proc):

#choose the next proc to enter cpu
in_proc = scheduler.schedule(out_pid, Clock.now() - previous_t)

#enter cpu and schedule an exit event, if necessary
if (in_proc):
cpu.enter_cpu(in_proc)
remaining_t = in_proc.get_service_t() - in_proc.get_usage_t()
if (remaining_t < SLICE_DURATION and remaining_t > 0):
exit_timestamp = Clock.now() + remaining_t
event_stream.add(Event(event_types.EXIT_PROC, exit_timestamp, in_proc))
if (remaining_t < SLICE_DURATION and remaining_t >= 0):
exit_timestamp = Clock.now() + remaining_t
if (remaining_t == 0):
exit_timestamp += 1
event_stream.add(Event(event_types.EXIT_PROC, exit_timestamp, in_proc))
else:
event_stream.add(Event(event_types.SCHEDULE, schedule_timestamp, None))
elif (p_table.size() > 0):
event_stream.add(Event(event_types.SCHEDULE, schedule_timestamp, None))


elif (event.get_type() == event_types.ALLOC_PROC):

Expand All @@ -107,6 +115,9 @@ def process_is_done(proc):
p_table.add(new_proc)
scheduler.alloc_proc(new_proc, Clock.now() - previous_t)
procs.append(new_proc)

if (p_table.size() == 1):
event_stream.add(Event(event_types.SCHEDULE, schedule_timestamp, None))

elif (event.get_type() == event_types.EXIT_PROC):

Expand All @@ -130,11 +141,6 @@ def process_is_done(proc):
#force a new proc to enter the cpu
event_stream.add(Event(event_types.SCHEDULE, Clock.now() + 1, None))

#we were not done yet, then add a new SCHEDULE event
if (p_table.size() > 0):
schedule_timestamp = Clock.now() + SLICE_DURATION
event_stream.add(Event(event_types.SCHEDULE, schedule_timestamp, None))

return procs

def enum(**enums):
Expand Down

0 comments on commit 227e0b9

Please sign in to comment.