Create a rudimentary job simulator

Assignment Help Computer Engineering
Reference no: EM131984785

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<Processor> processors;

/**

* Initializes the set of Processors.

* @param processors the set of Processors.

*/

public Simulator(final LinkedHashSet<Processor> processors) {

this.processors = processors;

}

/**

* Returns the set of processors.

* @return the set of processors.

*/

public LinkedHashSet<Processor> getProcessors() {

return processors;

}

/**

* Returns the {@link Job} queue.

* @return the {@link Job} queue.

*/

public abstract Deque<Job> 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<Job> 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.<br>

* <ol>

* <li>Dequeues a Job per Processor.</li>

* <li>Assigns the dequeued Jobs to Processors in iterator order. In other

* words, the first dequeued Job gets assigned to the first Processor.</li>

* <li>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.</li>

* <li>Add finished Jobs to {@link #getFinishedJobs()}.</li>

* <li>Enqueues the unfinished Jobs to {@link #getJobQueue()} in the order

* that they were dequeued.</li>

* </ol>

*/

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<Processor> processors);

}

Reference no: EM131984785

Questions Cloud

New hypermarket in mansfield : Extra Value Foods, announced plans to open a new hypermarket in Mansfield. It is expected that the store will attract shopper from the area.
What is the percentage change in price for zero coupon bond : What is the percentage change in price for a zero coupon bond if the yield changes from 7?% to 6.5%?
Rank the ten investments in order of desirability : FINC20018 - Rank the ten investments in order of desirability. Explain why you have ranked them in this way -Which investment of the ten would you select? Why
What should the stock be worth after three years : what should the stock be worth after three years - round your answer to 4 decimal places.
Create a rudimentary job simulator : 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.
Pause for a moment a remember the age-old maxim : So whenever you're about to scoff, your snacks, pull out into traffic or click send, pause for a moment a remember the age-old maxim manners maketh man.
Weighted average implied by the two outstanding debt issues : Assume that the overall cost of debt is the weighted average implied by the two outstanding debt issues.
What is shelias recognized gain on the same sale : What is Shelia's realized gain on the sale of her prior residence for $275,000? . What is Shelia's recognized gain on the same sale?
Relationship between the interest rate for bond and price : What is Dupont identity and how can financial manager use it? Explain why there is an inverse relationship between the interest rate for a bond and its price.

Reviews

Write a Review

Computer Engineering Questions & Answers

  Mathematics in computing

Binary search tree, and postorder and preorder traversal Determine the shortest path in Graph

  Ict governance

ICT is defined as the term of Information and communication technologies, it is diverse set of technical tools and resources used by the government agencies to communicate and produce, circulate, store, and manage all information.

  Implementation of memory management

Assignment covers the following eight topics and explore the implementation of memory management, processes and threads.

  Realize business and organizational data storage

Realize business and organizational data storage and fast access times are much more important than they have ever been. Compare and contrast magnetic tapes, magnetic disks, optical discs

  What is the protocol overhead

What are the advantages of using a compiled language over an interpreted one? Under what circumstances would you select to use an interpreted language?

  Implementation of memory management

Paper describes about memory management. How memory is used in executing programs and its critical support for applications.

  Define open and closed loop control systems

Define open and closed loop cotrol systems.Explain difference between time varying and time invariant control system wth suitable example.

  Prepare a proposal to deploy windows server

Prepare a proposal to deploy Windows Server onto an existing network based on the provided scenario.

  Security policy document project

Analyze security requirements and develop a security policy

  Write a procedure that produces independent stack objects

Write a procedure (make-stack) that produces independent stack objects, using a message-passing style, e.g.

  Define a suitable functional unit

Define a suitable functional unit for a comparative study between two different types of paint.

  Calculate yield to maturity and bond prices

Calculate yield to maturity (YTM) and bond prices

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd