Ask Question, Ask an Expert

+61-413 786 465

info@mywordsolution.com

Ask Computer Engineering Expert

Assignment

In this lab, you will create a rudimentary "job simulator". This will be a time-based simulator which means each "step" in the simulation will represent a single time unit. A job is modeled simply by a number of instructions to be processed. A provided Processor class is used to "process" jobs. A Processor has a speed field; this field determines how many instructions it can process in a single time unit. A Job Simulator will maintain a Job queue and will have a set of Processor objects to process Jobs.

There are two primary methods used by clients of the Simulator. The enqueueJob method allows a new Job to be added to the Simulator's Job queue. The other primary method is the step which simulates job processing.

When the step method is called, the Simulator must do the following tasks, in order.

1. For each Processor it has, dequeue a Job. Assign the first dequeued Job to the first Processor, and so-on.

2. For each dequeued Job, use the assigned Processor to process the Job. This means reducing the number of remaining Job instructions by the Processor speed.

3. Add all Jobs that have no more instructions to be processed to the list of finished Job, in order that they were dequeued.

4. Enqueue the other Jobs back into the Job queue, in the order that they were dequeued.

A client may call enqueueJob on a Simulator whenever it likes; assume that that call does not take up any time units. Your Simulator must maintain the proper state of remaining Job instructions, queued Jobs, and finished Jobs, knowing that a series of calls to enqueueJob and step can be made in any order and any number of times.

Part 1 - Implementation

1. Create a class that extends the lab.Simulator abstract class.

2. Create a factory class that implements the lab.SimulatorFactory interface and that constructs new instances of your Simulator implementation.

Part 2 - Testing

1. Enable assertions in your Java execution environment.

2. Create a tester class in this package:

lab.test

3. In the main method of your tester class, pass an instance of your SimulatorFactory class to one of the static test methods in lab.test.SimulatorTester.

PROVIDED CLASSES:

*Simulator Class*

import java.util.Deque;

import java.util.LinkedHashSet;

/**

* Provides methods that support modeling simulations of {@link Job}s

* being processed with {@link Processor} objects, in an round-robin

* fashion controlled with a queue implemented with a {@link Deque}.

*

*

*/

public abstract class Simulator {

/**

* The set of Processors that will process {@link Job}s.

*/

protected final LinkedHashSet processors;

/**

* Initializes the set of Processors.

* @param processors the set of Processors.

*/

public Simulator(final LinkedHashSet processors) {

this.processors = processors;

}

/**

* Returns the set of processors.

* @return the set of processors.

*/

public LinkedHashSet getProcessors() {

return processors;

}

/**

* Returns the {@link Job} queue.

* @return the {@link Job} queue.

*/

public abstract Deque getJobQueue();

/**

* Returns the set of {@link Job}s that have been

* fully processed.

* @return the set of {@link Job}s that have been

* fully processed.

*/

public abstract LinkedHashSet getFinishedJobs();

/**

* Enqueues a {@link Job} to the job queue. The new job must

* have a {@link Job#getId()} equal to {@code getJobQueue.size() + 1}.

* If that condition is not met, then this method must throw a

* {@link RuntimeException}.

* @param newJob the Job to enqueue.

* @throws RuntimeException If the new job does not have the proper

* job number.

*/

public abstract void enqueueJob(Job newJob);

/**

* Simulates a processing step.

*

    *

  1. Dequeues a Job per Processor.
  2. *

  3. Assigns the dequeued Jobs to Processors in iterator order. In other

    * words, the first dequeued Job gets assigned to the first Processor.

  4. *

  5. Uses each assigned Process to process the assigned Job, updating

    * the number of instructions remaining to be processed in the Job

    * according to the Processor speed.

  6. *

  7. Add finished Jobs to {@link #getFinishedJobs()}.
  8. *

  9. Enqueues the unfinished Jobs to {@link #getJobQueue()} in the order

    * that they were dequeued.

  10. *

*/

public abstract void step();

}

-------

*SimulatorFactory class*

import java.util.LinkedHashSet;

/**

* A factory for constructing {@link Simulator} objects.

*

*

*/

public interface SimulatorFactory {

/**

* Constructs a new Simulator object.

* @param processors the set of processors the Simulator will be

* initialized with.

* @return a newly constructed Simulator object.

*/

Simulator createSimulator(LinkedHashSet processors);

}

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M92822438

Have any Question?


Related Questions in Computer Engineering

Research web server vulnerabilities by choosing a site and

Research web server vulnerabilities by choosing a site and determining what kind of platform it is running on. Do not scan the server, you can use a site such as Netcraft to determine what the website is running. See if ...

Please solve the following question using java format

please solve the following question using java format (*Solution can include*if needed* ( if statement, switch, while ) not arrays*) Write a program which performs the following: a) Prompts the user to enter a number N b ...

Who stole the ice cream during an investigation into the

Who Stole the Ice Cream? ?During an investigation into the mysterious disappearance of ice-cream from a Mr. Softee truck, the following statements were made by the prime suspects. ? Alan: I wouldn't steal ice-cream unles ...

Research one job and company that interests you one that

Research one job and company that interests you, one that you think might be a good fit for you after graduation. i.Identify why that job and company is a good fit for you Prepare a cover letter for that job. i.Include y ...

Junit test labyou will be creating a junit test class for

JUnit Test Lab You will be creating a JUnit Test Class for Gradebook.java, that has been provided for you.   Add a getScoreSize() method to the Gradebook class which returns scoresSize; Add a toString() method to the Gra ...

Can someone design a small program for me in java that do

Can someone design a small program for me in Java that do the following: Implement at least four classes (showing inheritance) with suitable constructors and methods to set/retrieve values of from the properties. Try to ...

Question scrum dsdm and agile unified processbullcompare

Question: "Scrum, DSDM, and Agile Unified Process" • Compare and contrast agile unified process and the process groups outlined in Project Management Body of Knowledge (PMBOK). Provide one (1) example of each process (Sc ...

Up and down a stringcreate a program called

Up and Down a string Create a program called lastnomeupAndDown take a string input from the user and print out that will substrings of increasing length next to each other until the word is fully printed, then repeat the ...

Question summary using an organization of your

Question: Summary: Using an organization of your choice: Develop a Complete Disaster Recovery Plan to be submitted to the executive board of your company. Please note that this is a formal writing, all references (peer-r ...

Explain how amazon and walmart companies use information

Explain how Amazon and Walmart companies use Information and Communication Technologies (ICT) in their competitive strategies. Highlight the differences in their use of ICT.

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As