예제 #1
0
    def set_page_table(self, page, pageFrameIndex,
                       vectora):  #change name later pls
        MemoryManagementA.set_mgmt(pageFrameIndex, self.mypid)

        # for each row of the page table
        for i in range(self.page_table.shape[0]):
            if self.page_table[i][0] == -1:
                self.page_table[i][0] = pageFrameIndex
                self.page_frame_vectors[i] = vectora
                self.available_space += 1
                break
예제 #2
0
    def __init__(self, initialNbrOfPages):
        self.page_table = np.zeros(shape=(initialNbrOfPages, 1), dtype='int64')
        self.page_frame_vectors = [0] * initialNbrOfPages

        # Set initial value to page table indexs to -1
        for i in range(self.page_table.shape[0]):
            self.page_table[i][0] = -1  # is marked available

        self.available_space = initialNbrOfPages
        self.mypid = Process.get_pid()

        MemoryManagementA.register_process(self)
예제 #3
0
    def get_mem(cls, pid, nbrPages):
        mem_list = []
        alist = MemoryManagementA.find_free_space(
            pid, nbrPages)  # returns a list of pageFrames

        if len(alist) > 0:
            for pageFrameIndex in alist:
                vectora = MemoryA.memory[pageFrameIndex, :]
                tuplea = (pageFrameIndex, vectora
                          )  # vectora is a POINTER to memory
                mem_list.append(tuplea)
        return mem_list  # mem_list is a list of tuples
예제 #4
0
import numpy as np
import sys
# sys.path.append('/Users/quentincurteman/Google Drive File Stream/My Drive/William Jessup/Fall 2018/Operating Systems/CS355')

from memory.memmgmt import MemoryManagementA
from memory.memmgr import MemoryA
from process.processx import Process

pp = Process(4)

print('***** before loading *****')
pp.print_mgmt()
MemoryA.print_mem()
MemoryManagementA.print_management()
print('**************************')

alist = [0, 1]
pp.load_pages(alist, 2)

print('***** after loading *****')
pp.print_mgmt()
MemoryA.print_mem()
MemoryManagementA.print_management()
print('**************************')
예제 #5
0
def printAll(astring, process):
    print(" ********* start: ", astring, '*********')
    process.print_mgmt()
    MemoryA.print_mem()
    MemoryManagementA.print_management()
    print(" *********** end: ", astring, '***********\n')