Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

# ! / usr / bin / env python import sys from optparse import OptionParser import random import math def convert ( size ) :

#!/usr/bin/env python
import sys
from optparse import OptionParser
import random
import math
def convert(size):
length = len(size)
lastchar = size[length-1]
if (lastchar =='k') or (lastchar =='K'):
m =1024
nsize = int(size[0:length-1])* m
elif (lastchar =='m') or (lastchar =='M'):
m =1024*1024
nsize = int(size[0:length-1])* m
elif (lastchar =='g') or (lastchar =='G'):
m =1024*1024*1024
nsize = int(size[0:length-1])* m
else:
nsize = int(size)
return nsize
#
# main program
#
parser = OptionParser()
parser.add_option('-s','--seed', default=0, help='the random seed', action='store', type='int', dest='seed')
parser.add_option('-a','--asize', default='1k', help='address space size (e.g.,16,64k,32m,1g)', action='store', type='string', dest='asize')
parser.add_option('-p','--physmem', default='16k', help='physical memory size (e.g.,16,64k,32m,1g)', action='store', type='string', dest='psize')
parser.add_option('-n','--addresses', default=5, help='number of virtual addresses to generate', action='store', type='int', dest='num')
parser.add_option('-b','--b', default='-1', help='value of base register', action='store', type='string', dest='base')
parser.add_option('-l','--l', default='-1', help='value of limit register', action='store', type='string', dest='limit')
parser.add_option('-c','--compute', default=False, help='compute answers for me', action='store_true', dest='solve')
(options, args)= parser.parse_args()
print('')
print( 'ARG seed', options.seed )
print( 'ARG address space size', options.asize )
print( 'ARG phys mem size', options.psize )
print('')
random.seed(options.seed)
asize = convert(options.asize)
psize = convert(options.psize)
if psize <=1:
print( 'Error: must specify a non-zero physical memory size.')
exit(1)
if asize ==0:
print( 'Error: must specify a non-zero address-space size.')
exit(1)
if psize <= asize:
print( 'Error: physical memory size must be GREATER than address space size (for this simulation)')
exit(1)
#
# need to generate base, bounds for segment registers
#
limit = convert(options.limit)
base = convert(options.base)
if limit ==-1:
limit = int(asize/4.0+(asize/4.0* random.random()))
# now have to find room for them
if base ==-1:
done =0
while done ==0:
base = int(psize * random.random())
if (base + limit)< psize:
done =1
print( 'Base-and-Bounds register information:')
print('')
print(' Base : 0x%08x (decimal %d)'%(base, base))
print(' Limit : %d'%(limit))
print('')
if base + limit > psize:
print( 'Error: address space does not fit into physical memory with those base/bounds values.')
print( 'Base + Limit:', base + limit,' Psize:', psize )
exit(1)
#
# now, need to generate virtual address trace
#
print( 'Virtual Address Trace' )
for i in range(0,options.num):
vaddr = int(asize * random.random())
if options.solve == False:
print(' VA %2d: 0x%08x (decimal: %4d)--> PA or segmentation violation?'%(i, vaddr, vaddr))
else:
paddr =0
if (vaddr >= limit):
print(' VA %2d: 0x%08x (decimal: %4d)--> SEGMENTATION VIOLATION' %(i, vaddr, vaddr))
else:
paddr = vaddr + base
print(' VA %2d: 0x%08x (decimal: %4d)--> VALID: 0x%08x (decimal: %4d)'%(i, vaddr, vaddr, paddr, paddr))
print('')
if options.solve == False:
print( 'For each virtual address, either write down the physical address it translates to')
print('OR write down that it is an out-of-bounds address (a segmentation violation). For' )
print( 'this problem, you should assume a simple virtual address space of a given size.')
print('')
Exercise 3 Run the simulation with these flags: -s 1-n 10-l 100. What is the maximum value that base can be set to, such that the address space still fits into physical memory in its entirety?

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Design Using Entity Relationship Diagrams

Authors: Sikha Saha Bagui, Richard Walsh Earp

3rd Edition

103201718X, 978-1032017181

More Books

Students also viewed these Databases questions