# README
Project 1: Process Scheduler
Description
For this project we'll be building a simple process scheduler that takes in a file containing example processes, and outputs a schedule based on the three different schedule types:
- First Come First Serve (FCFS) [already done]
- Shortest Job First (SJF) preemptive
- SJF Priority
- Round-robin (RR)
Assume that all processes are CPU bound (they do not block for I/O).
The scheduler is written in Go (a skeleton main.go
is included in the project repo).
Steps
- Clone down the example input/output and skeleton main.go:
- git clone https://github.com/jh125486/CSCE4600
- Copy the Project1 files to your own git project.
- In your go.mod, replace "jh125486/CSCE4600" in the module line with your GitHub username and repo, e.g.:
- "module github.com/jh125486/CSCE4600" changes to "module github.com/CoolStudent123/ShweetScheduler"
- In your go.mod, replace "jh125486/CSCE4600" in the module line with your GitHub username and repo, e.g.:
- The processes for your scheduling algorithms are read from a file as the first argument to your program.
- Every line in this file includes a record with comma separated fields.
- The format for this record is the following:
<ProcessID>
,<Burst Duration>
,<Arrival Time>
,<Priority>
.
- The format for this record is the following:
- Not all fields are used by all scheduling algorithms. For example, for FCFS you only need the process IDs, arrival times, and burst durations.
- All processes in your input files will be provided a unique process ID. The arrival times and burst durations are integers. Process priorities have a range of [1-50]; the lower this number, the higher the priority i.e. a process with priority=1 has a higher priority than a process with priority=2.
- Every line in this file includes a record with comma separated fields.
- Start editing the
schedulers.go
and add the scheduling algorithms:- Implement SJF (preemptive) and report average turnaround time, average waiting time, and average throughput.
- Hint: You can create a priority queue using a heap in Go: https://golang.org/pkg/container/heap/.
- Implement SJF priority scheduling (preemptive) and report average turnaround time, average waiting time, and average throughput.
- Round-round (preemptive) and report average turnaround time, average waiting time, and average throughput.
- Use a time quantum of 1.
- Implement SJF (preemptive) and report average turnaround time, average waiting time, and average throughput.
Grading
Code must compile and run to meet other rubric items.
Deliverables
A GitHub link to your project which includes:
README.md
<- describes anything needed to build (optional)main.go
<- your schedulerscreenshot.png
<- a screenshot of you running your schedulergradebot.png
<- a screenshot of you running the gradebot and the rubric output