Пример #1
0
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)
Пример #2
0
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")
Пример #3
0
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)
Пример #4
0
 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)
Пример #6
0
    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)
Пример #7
0
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
Пример #8
0
 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)
Пример #9
0
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")
Пример #10
0
 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()
Пример #11
0
    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)