首页 > > 详细

辅导CSCI 2110、讲解Java编程、辅导Java、讲解Algorithms留学生 讲解留学生Processing|解析Haskell程序

CSCI 2110 Computer Science III
Data Structures and Algorithms
ASSIGNMENT NO. 4
Date Given: Sunday, November 11, 2018
Date Due: Sunday, November 25, 2018, 11.55 PM
In this assignment, you are to build a simple application that demonstrates (simulates) how a
CPU uses the heap data structure (priority queue) for process scheduling. First study the
example on CPU scheduling from the lectures (Pages 133-134 in the handbook). Download
Heap.java given next to the Assignment 4 link.
Each process is an object that is defined by its id, the number of time units required to complete,
its priority and its time of arrival.
Create a Process class that defines a Process object:
public class Process{
private int id;
private int timeReqd;
private int priority;
private int timeArrival;
//get, set and other methods as required
}
In your client program, start by reading a text file that contains a list of processes. For example,
the input text file would look something like this:
1 2 10 1
2 1 20 1
3 2 30 2
4 1 15 3
5 1 10 5
This means that Process with id 1 requires 2 time units for processing has a priority of 10, and
arrives at time unit 1, process with id 2 requires 1 time unit for processing, has a priority of 20,
and arrives at time unit 1, process with id 3 requires 2 time units for processing, has a priority of
30 and arrives at time unit 2, process with id 4 requires 1 time unit for processing, has a priority
of 15 and arrives at time unit 3, and finally, process with id 5 requires 1 time unit for processing,
has a priority of 10 and arrives at time unit 5.
For the sake of this assignment, assume that the CPU “holds and processes” each process
for only one time unit.
Then,using the heap class, create a heap that stores the processes on a priority basis upon
arrival. You may need to modify the Heap class so that it stores Process objects; the key for
insertion or retrieval is the priority of the Process object. The CPU takes the process with the
highest priority, processes it for one time unit and releases it back into the heap (if it still
remains to be processed).If two processes have the same priority, they take turns in being
processed – that is, when the first process is released back into the heap, it goes behind the
second process with the same priority (see example from lecture notes).
The output of your program should be a time unit by time unit listing of the heap contents and
the CPU contents. It is slightly different from the way we displayed the output in the example discussed in the lectures,in the sense that in your program you would display the contents of the
heap and the CPU at the beginning,during and at the end of each time unit. But the idea is the
same. For example, for the above sample text file,the output would look something like this. Do
not display the comments given within brackets. They are just for your understanding of how to
display the output.
Time Unit: 1
Heap: [(2,1,20), (1,2,10)] [(1,2,10)] [(1,2,10)]
CPU: [(2,1,20)]
(The first column indicates that scenario at the beginning of time unit 1. The two processes 1 and
2 have arrived into the heap and the CPU is empty.The second column indicates the scenario
during the time unit 1. Process 2 which is the higher priority process is moved from the heap to
the CPU being processed by the CPU and it is no longer in the heap. The third column indicates
the scenario at the end of the time interval.Process 2 is done, so only process 1 is in the heap.)
Time Unit: 2
Heap: [(3,2,30), (1,2,10)] [(1,2,10)] [(3,1,30),(1,2,10)]
CPU: [(3,2,30)]
(Process 3 enters the heap at the beginning of Time Unit 2, is processed by the CPU and is
released back into the heap. Process (3,2,30) changes to (3,1,30) since it now requires one time
unit to be processed.)
Time Unit: 3
Heap:[(3,1,30),(4,1,15)(1,2,10)] [(4,1,15),(1,2,10)] [(4,1,15),(1,2,10)]
CPU: [(3,1,30)]
(Process 3 is done at the end of time unit 3).
…. and so on.
Your client program should work for a text file containing any arbitrary set of processes,not just
the example given above.However, you may assume that once the text file is read, no new
processes are added to the list. That is,your program should show the output for each time unit
until all the processes in the given text file have been processed by the CPU.
The complete output for the sample text file given above would look as follows. You can format it
differently if you wish, but it should convey all the pertinent information.
Time Unit: 1
Heap: [(2,1,20), (1,2,10)] [(1,2,10)] [(1,2,10)]
CPU: [(2,1,20)]
Time Unit: 2
Heap: [(3,2,30), (1,2,10)] [(1,2,10)] [(3,1,30),(1,2,10)]
CPU: [(3,2,30)]
Time Unit: 3
Heap:[(3,1,30),(4,1,15)(1,2,10)] [(4,1,15),(1,2,10)] [(4,1,15),(1,2,10)]CPU: [(3,1,30)]
Time Unit: 4
Heap:[(4,1,15)(1,2,10)] [(1,2,10)] [(1,2,10)]
CPU: [(4,1,15)]
Time Unit: 5
Heap:[(1,2,10),(5,1,10)] [(5,1,10)] [(5,1,10),(1,1,10)]
CPU: [(1,2,10)]
Time Unit: 6
Heap:[(5,1,10),(1,1,10)] [(1,1,10)] [(1,1,10)]
CPU: [(5,1,10)]
Time Unit: 7
Heap: [(1,1,10)]
CPU: [(1,1,10)]

联系我们
  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp
热点标签

联系我们 - QQ: 99515681 微信:codinghelp
程序辅导网!