class PCBTest(unittest.TestCase): #Arrange def setUp(self): self.hdd = HDD(10) self.fs = self.hdd.generate_file_system() self.instruction1 = InstructionIO() self.instruction2 = InstructionCPU() self.instructionList1 = [self.instruction1, self.instruction2] self.program1 = Program(self.instructionList1, "AProgram") self.fs.add_file("AProgram", self.program1) self.file1 = self.fs.get_program("AProgram") self.pcb = PCB(0, 2, BlockHolder(self.file1)) self.mm = MemoryManager() self.mm.set_as_ca(FirstFit()) self.mm.write(self.pcb) def test_whenIHaveAPCBAndItsIncremented_thenIHaveAPCBWithOneMoreInstructionIndex(self): self.pcb.increment() self.assertEqual(self.pcb.get_pc(), 3) def test_whenIHaveAPCBAndItsPriorityItsChanged_thenItsDifferent(self): self.pcb.set_priority(PCBPriorities().getPriorities().LOW) self.pcb.increase_priority() self.assertEqual(self.pcb._priority, PCBPriorities().getPriorities().MEDIUM)
class Main: def __init__(self): self.program1 = Program(range(0, 10), "Word") self.program2 = Program(range(0, 50), "Excel") self.program3 = Program(range(0, 20), "Powerpoint") self.hdd = HDD(50) self.file_system = self.hdd.generate_file_system() self.file_system.add_file("Word", self.program1) self.file_system.add_file("Excel", self.program1) self.file_system.add_file("Powerpoint", self.program1) self.hdd.serialize_file_system(self.file_system) self.memory_manager = MemoryManager(self.hdd) def run_example_1(self): self.scheduler_policy = PriorityScheduler() self.continuous_assignment_policy = BestFit() self.memory_policy = ContinuousAssignment(self.memory_manager.get_memory(), self.continuous_assignment_policy) self.kernel = Kernel(self.scheduler_policy, self.hdd, self.memory_policy) self.kernel.run("Word") self.kernel.run("Excel") self.kernel.run("Powerpoint") def run_example_2(self): self.scheduler_policy = RoundRobinScheduler(3) self.memory_policy = Paging(self.memory_manager.get_memory(), 2, self.hdd) self.kernel = Kernel(self.scheduler_policy, self.hdd, self.memory_policy) self.kernel.run("Word") self.kernel.run("Excel") self.kernel.run("Powerpoint")
class PCBTest(unittest.TestCase): #Arrange def setUp(self): self.hdd = HDD(10) self.fs = self.hdd.generate_file_system() self.instruction1 = InstructionIO() self.instruction2 = InstructionCPU() self.instructionList1 = [self.instruction1, self.instruction2] self.program1 = Program(self.instructionList1, "AProgram") self.fs.add_file("AProgram", self.program1) self.file1 = self.fs.get_program("AProgram") self.pcb = PCB(0, 2, BlockHolder(self.file1)) self.mm = MemoryManager() self.mm.set_as_ca(FirstFit()) self.mm.write(self.pcb) def test_whenIHaveAPCBAndItsIncremented_thenIHaveAPCBWithOneMoreInstructionIndex( self): self.pcb.increment() self.assertEqual(self.pcb.get_pc(), 3) def test_whenIHaveAPCBAndItsPriorityItsChanged_thenItsDifferent(self): self.pcb.set_priority(PCBPriorities().getPriorities().LOW) self.pcb.increase_priority() self.assertEqual(self.pcb._priority, PCBPriorities().getPriorities().MEDIUM)
def setUp(self): self.hdd = HDD(10) self.fs = self.hdd.generate_file_system() self.instruction1 = InstructionIO() self.instruction2 = InstructionCPU() self.instructionList1 = [self.instruction1, self.instruction2] self.program1 = Program(self.instructionList1, "AProgram") self.fs.add_file("AProgram", self.program1) self.file1 = self.fs.get_program("AProgram") self.pcb = PCB(0, 2, BlockHolder(self.file1)) self.mm = MemoryManager() self.mm.set_as_ca(FirstFit()) self.mm.write(self.pcb)
def setUp(self): self.memory = MemoryManager() self.STS = Scheduler() self.STS.set_as_fifo() self.LTS = LTScheduler(self.STS, self.memory) self.pcb = PCB(0, 2049, None) self.pcb2 = PCB(0, 1, None)
def __init__(self): self.program1 = Program(range(0, 10), "Word") self.program2 = Program(range(0, 50), "Excel") self.program3 = Program(range(0, 20), "Powerpoint") self.hdd = HDD(50) self.file_system = self.hdd.generate_file_system() self.file_system.add_file("Word", self.program1) self.file_system.add_file("Excel", self.program1) self.file_system.add_file("Powerpoint", self.program1) self.hdd.serialize_file_system(self.file_system) self.memory_manager = MemoryManager(self.hdd)
class Kernel: def __init__(self, policy_scheduler, hdd, policy_memory): self._console = Console() self._hdd = hdd self._fileSystem = self._hdd.generate_file_system() self._memoryManager = MemoryManager(self) self._memoryManager.set_policy(policy_memory) self._creatorPCB = PCBCreator() self._scheduler = Scheduler() self._scheduler.set_policy(policy_scheduler) policy_memory.set_memory_manager(self._memoryManager) self._long_term_scheduler = LTScheduler(self._scheduler, self._memoryManager) self._ioQueue = IOQueue(self._memoryManager, self._scheduler) self._handler = Handler() self._lock = Semaphore(0) self._cpu = CPU(self) self._ioQueue.start() def run(self, program_name): print("Running " + program_name + "...") program = self._fileSystem.get_program(program_name) instructions = [item for sublist in (map(lambda x: x.get_data(), program.fetch_blocks())) for item in sublist] pcb = self._creatorPCB.create_pcb(len(instructions), program, self._memoryManager.get_policy().get_info_holder(program)) self._long_term_scheduler.init_process(pcb) def handle_this(self, interruption): self._handler.handle(interruption) self._lock.release() def get_memory_manager(self): return self._memoryManager def get_scheduler(self): return self._scheduler def get_io_queue(self): return self._ioQueue def get_lock(self): return self._lock
class Main: def __init__(self): self.program1 = Program(range(0, 10), "Word") self.program2 = Program(range(0, 50), "Excel") self.program3 = Program(range(0, 20), "Powerpoint") self.hdd = HDD(50) self.file_system = self.hdd.generate_file_system() self.file_system.add_file("Word", self.program1) self.file_system.add_file("Excel", self.program1) self.file_system.add_file("Powerpoint", self.program1) self.hdd.serialize_file_system(self.file_system) self.memory_manager = MemoryManager(self.hdd) def run_example_1(self): self.scheduler_policy = PriorityScheduler() self.continuous_assignment_policy = BestFit() self.memory_policy = ContinuousAssignment( self.memory_manager.get_memory(), self.continuous_assignment_policy) self.kernel = Kernel(self.scheduler_policy, self.hdd, self.memory_policy) self.kernel.run("Word") self.kernel.run("Excel") self.kernel.run("Powerpoint") def run_example_2(self): self.scheduler_policy = RoundRobinScheduler(3) self.memory_policy = Paging(self.memory_manager.get_memory(), 2, self.hdd) self.kernel = Kernel(self.scheduler_policy, self.hdd, self.memory_policy) self.kernel.run("Word") self.kernel.run("Excel") self.kernel.run("Powerpoint")
def __init__(self, policy_scheduler, hdd, policy_memory): self._console = Console() self._hdd = hdd self._fileSystem = self._hdd.generate_file_system() self._memoryManager = MemoryManager(self) self._memoryManager.set_policy(policy_memory) self._creatorPCB = PCBCreator() self._scheduler = Scheduler() self._scheduler.set_policy(policy_scheduler) policy_memory.set_memory_manager(self._memoryManager) self._long_term_scheduler = LTScheduler(self._scheduler, self._memoryManager) self._ioQueue = IOQueue(self._memoryManager, self._scheduler) self._handler = Handler() self._lock = Semaphore(0) self._cpu = CPU(self) self._ioQueue.start()