Skip to content

Add Earliest Deadline First scheduling code #11384

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed

Conversation

KelvinPuyam
Copy link
Contributor

Describe your change:

  • Add an algorithm?
  • Fix a bug or typo in an existing algorithm?
  • Add or change doctests? -- Note: Please avoid changing both code and tests in a single pull request.
  • Documentation change?

Checklist:

  • I have read CONTRIBUTING.md.
  • This pull request is all my own work -- I have not plagiarized.
  • I know that pull requests will not be merged if they fail the automated tests.
  • This PR only changes one algorithm file. To ease review, please open separate PRs for separate algorithms.
  • All new Python files are placed inside an existing directory.
  • All filenames are in all lowercase characters with no spaces or dashes.
  • All functions and variable names follow Python naming conventions.
  • All function parameters and return values are annotated with Python type hints.
  • All functions have doctests that pass the automated testing.
  • All new algorithms include at least one URL that points to Wikipedia or another similar explanation.
  • If this pull request resolves one or more open issues then the description above includes the issue number(s) with a closing keyword: "Fixes #ISSUE-NUMBER".

@KelvinPuyam
Copy link
Contributor Author

Requesting review: @cclauss

Comment on lines +75 to +77
arrival_times = [0, 1, 2]
burst_times = [3, 5, 2]
deadlines = [5, 7, 6]
Copy link
Member

@cclauss cclauss Apr 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
arrival_times = [0, 1, 2]
burst_times = [3, 5, 2]
deadlines = [5, 7, 6]
jobs = (Job(0, 3, 5), Job(1, 5, 7), Job(2, 2, 6))

from __future__ import annotations


def calculate_waiting_times(
Copy link
Member

@cclauss cclauss Apr 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please correct the docstrings or comments if they are incorrect. Is ticks correct or is it seconds, hours, months? The name burst_time is not obvious so please use the docstrings or comments to explain. Is the overall process time-boxed (e.g. all jobs must be completed in 60 ticks)?

Suggested change
def calculate_waiting_times(
from typing import NamedTuple
class Job(NamedTuple):
arrival_time: int # Time in ticks when this job first becomes available to be processed.
burst_time: int # Number of ticks that this job takes to complete.
deadline: int # Time in ticks when this job must be complete or it is not worth running.
__slots__ = ()
def calculate_waiting_times(

@cclauss
Copy link
Member

cclauss commented Apr 23, 2024

The best way to prove that you are doing this right would be to take one or both of the diagrams in the Wikipedia article and ensure that your results exactly match their results. For instance...

Use the same Job field names. Perhaps you could use DataClass instead of a NamedTuple so you can add wait_time to each job, etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants