Example #1
0
    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))
Example #2
0
    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))
Example #3
0
File: root.py Project: Engma90/labs
    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})