def run(self): ''' create virtual machine ''' # get load task if self.used_resources.get_by_class(TaskLoaded) is None: kernel.ask_for_resource( kernel_data.RESOURCES.get_by_class(TaskLoaded), self, TaskLoaded) return in_data = True ds_length = 0 cs_length = 0 # manual ugly counting for address in self.used_resources.get_by_class(TaskLoaded).addresses: if user_memory.fetch(address) == "CODE": in_data = False cs_length -= 1 if in_data: ds_length += 1 else: cs_length += 1 kernel.create_process( VirtualMachine, self, { 'ds_length': ds_length, 'cs_length': cs_length, 'addresses': self.used_resources.get_by_class(TaskLoaded).addresses }) kernel.delete_resource(self.used_resources.get_by_class(TaskLoaded))
def run(self): ''' create virtual machine ''' # get load task if self.used_resources.get_by_class(TaskLoaded) is None: kernel.ask_for_resource(kernel_data.RESOURCES.get_by_class(TaskLoaded), self, TaskLoaded) return in_data = True ds_length = 0 cs_length = 0 # manual ugly counting for address in self.used_resources.get_by_class(TaskLoaded).addresses: if user_memory.fetch(address) == "CODE": in_data = False cs_length -= 1 if in_data: ds_length += 1 else: cs_length += 1 kernel.create_process(VirtualMachine, self, { 'ds_length' : ds_length, 'cs_length' : cs_length, 'addresses' : self.used_resources.get_by_class(TaskLoaded).addresses }) kernel.delete_resource(self.used_resources.get_by_class(TaskLoaded))
def __init__(self): Process.__init__(self, {'parent' : None, 'name' : 'root', 'priority' : configs.ROOT_PRIORITY }) # init kernel kernel_data.BLOCKED_PROCESSES = ProcessQueue() kernel_data.READY_PROCESSES = ProcessQueue() kernel_data.RESOURCES = ResourceList() kernel_data.ACTIVE_PROCESS = self # create static resources for resource in [InputDevice, OutputDevice, UserMemory, ExternalMemory, Terminate, EnoughSpace, Channel3, Channel1, Channel2, KernelMemory]: kernel.create_resource(resource, self) # create dynamic resources # for that many files in tasks folder create task_at_input resource counter = 0 for file in os.listdir('tasks'): kernel.create_resource(TaskAtInput, self, {'file_path' : 'tasks/' + str(file) }) counter += 1 # create child processes for process in [Interrupt, Print]: kernel.create_process(process, self) #create resources if there are tasks to execute if kernel_data.RESOURCES.is_instance_created(TaskAtInput): for process in [Read, ParseTask, JobToDisk, JobToMem, Manager]: kernel.create_process(process, self) # create tasks_found resource if counter != 0: kernel.create_resource(TasksFound, self, {'count' : counter})