예제 #1
0
파일: resource.py 프로젝트: jmf-mas/labs
 def __init__(self, opts):
     '''expects one dictionary full of params.
     
       opts should have these fields:
         name : visual identified of resource
         creator : process that created this resource
     '''
     self.rid = kernel_data.RID
     kernel_data.RID += 1
     self.name = opts['name']
     self.creator = opts['creator']
     self.awaiting_processes = ProcessQueue()
예제 #2
0
파일: resource.py 프로젝트: Engma90/labs
class Resource:
    def __init__(self, opts): 
        '''expects one dictionary full of params.
        
          opts should have these fields:
            name : visual identified of resource
            creator : process that created this resource
        '''
        self.rid = kernel_data.RID
        kernel_data.RID += 1
        self.name = opts['name']
        self.creator = opts['creator']
        self.awaiting_processes = ProcessQueue()
  
    # Resurso planuotojas
    def distribute(self):
        ''' Algorithm that distributes resource. (Resurso planuotojas) '''
        logger.log("DISTRIBUTOR called on: " + self.name)
        if self.free():
            logger.log("GOT TRUE")
            pr = self.awaiting_processes.get()
            # if there are processes waiting for this resource
            # give resource to them
            if pr is not None:
                pr.used_resources.add(self)
                pr.make_ready()
                self.awaiting_processes.remove(pr)
                # lock_with_semaphore when asking_for_resoure
                # if resource is guarded with semaphore create lock 
                if hasattr(self, 'sem'):
                    self.sem.v() 
                    logger.log("LOCKED SEMAPHORE on " + self.name)
        else:
            kernel_data.ACTIVE_PROCESS.state = BLOCKED_STATE 
            self.awaiting_processes.add(kernel_data.ACTIVE_PROCESS)
            logger.log("GOT FALSE")
        kernel.schedule()

    def free(self):
        ''' returns True if is freed and false otherwise '''
        return True
예제 #3
0
파일: resource.py 프로젝트: jmf-mas/labs
class Resource:
    def __init__(self, opts):
        '''expects one dictionary full of params.
        
          opts should have these fields:
            name : visual identified of resource
            creator : process that created this resource
        '''
        self.rid = kernel_data.RID
        kernel_data.RID += 1
        self.name = opts['name']
        self.creator = opts['creator']
        self.awaiting_processes = ProcessQueue()

    # Resurso planuotojas
    def distribute(self):
        ''' Algorithm that distributes resource. (Resurso planuotojas) '''
        logger.log("DISTRIBUTOR called on: " + self.name)
        if self.free():
            logger.log("GOT TRUE")
            pr = self.awaiting_processes.get()
            # if there are processes waiting for this resource
            # give resource to them
            if pr is not None:
                pr.used_resources.add(self)
                pr.make_ready()
                self.awaiting_processes.remove(pr)
                # lock_with_semaphore when asking_for_resoure
                # if resource is guarded with semaphore create lock
                if hasattr(self, 'sem'):
                    self.sem.v()
                    logger.log("LOCKED SEMAPHORE on " + self.name)
        else:
            kernel_data.ACTIVE_PROCESS.state = BLOCKED_STATE
            self.awaiting_processes.add(kernel_data.ACTIVE_PROCESS)
            logger.log("GOT FALSE")
        kernel.schedule()

    def free(self):
        ''' returns True if is freed and false otherwise '''
        return True
예제 #4
0
파일: resource.py 프로젝트: Engma90/labs
 def __init__(self, opts): 
     '''expects one dictionary full of params.
     
       opts should have these fields:
         name : visual identified of resource
         creator : process that created this resource
     '''
     self.rid = kernel_data.RID
     kernel_data.RID += 1
     self.name = opts['name']
     self.creator = opts['creator']
     self.awaiting_processes = ProcessQueue()