def draw_wait_queue(self, wait_box, status_box, wait_to_memory_box, start_height, temp_memory, *args):
wait_queue = temp_memory['processes_waiting']
event_details = temp_memory['event']
process_id,arrival_bit,curr_time,burst_time,process_size = event_details
wait_to_memory = temp_memory['wait_to_memory']
external_fragmentation = temp_memory['external_fragmentation']
wait_flag=0 # to check whether process was added to the wait queue
label = Label(text='Wait Queue: ', size_hint_x=None, width=self.margin_left, valign='top', halign='center')
label.text_size = label.size
wait_box.add_widget(label)
s_label = Label(text='Status: ', size_hint_x=None, width=self.margin_left, valign='top', halign='center')
s_label.text_size = s_label.size
status_box.add_widget(s_label)
wm_label = Label(text='Processes loaded into memory from wait queue: ', size_hint_x=None, width=self.margin_left + kivy.metrics.dp(230), valign='top', halign='center')
wm_label.text_size = wm_label.size
wait_to_memory_box.add_widget(wm_label)
if not wait_queue:
w_label = Label(text='Empty', size_hint_x=None, width='50dp', halign='left', valign='top')
w_label.text_size = w_label.size
wait_box.add_widget(w_label)
for process in wait_queue:
process_name, process_s,process_burst = process
if(process_name == process_id):# will only happen if arrival_bit=1
wait_flag=1 # process was added to wait queue
w_label = Label(text=str(process_name), size_hint_x=None, width='40dp', halign='left', valign='top')
w_label.text_size = w_label.size
wait_box.add_widget(w_label)
if(arrival_bit == 1):
if(wait_flag == 1 and external_fragmentation == 1):
ss_label = Label(text='Process ' + str(process_id) + ' was added to the wait queue because of external fragmentation though enough free memory is available.', size_hint_x=None, width='800dp', halign='left', valign='top')
elif(wait_flag == 1 and external_fragmentation == 0):
ss_label = Label(text='Process ' + str(process_id) + ' was added to the wait queue due to insufficient memory available.', size_hint_x=None, width='800dp', halign='left', valign='top')
else:
ss_label = Label(text='Process ' + str(process_id) + ' was assigned a slot in the main memory.', size_hint_x=None, width='800dp', halign='left', valign='top')
wm_label = Label(text='None', size_hint_x=None, width='50dp', valign='top', halign='left')
wm_label.text_size = wm_label.size
wait_to_memory_box.add_widget(wm_label)
else:
if not wait_to_memory:
ss_label = Label(text='Process ' + str(process_id) + ' has succesfully been deallocated memory.', size_hint_x=None, width='800dp', halign='left', valign='top')
wm_label = Label(text='None', size_hint_x=None, width='50dp', valign='top', halign='left')
wm_label.text_size = wm_label.size
wait_to_memory_box.add_widget(wm_label)
else:
ss_label = Label(text='Process ' + str(process_id) + ' has succesfully been deallocated memory. ', size_hint_x=None, width='800dp', halign='left', valign='top')
for processes in wait_to_memory:
wm_label = Label(text= str(processes), size_hint_x=None, width='40dp', halign='left', valign='top')
wm_label.text_size = wm_label.size
wait_to_memory_box.add_widget(wm_label)
ss_label.text_size = ss_label.size
status_box.add_widget(ss_label)
评论列表
文章目录