Homework 6: Wrapping Up


Checkers: Checkers are complete. Run linear-check.py or multi-check.py from your hw6 handin directory to check if your file linear.out or multi.out files have the correct contents:

prompt> cd ~cs354-3/handin/USERNAME/hw6/
prompt> ~cs354-3/public/hw6/linear-check.py
prompt> ~cs354-3/public/hw6/multi-check.py

Due Date

Due Date: Friday, 5/5 at some time


Question? Just send email to 354-help@cs.wisc.edu as always. We might even get back to you!

Part 1: Simple Page Translation

As with the very first homework, this effort will be performed entirely in your handin directory for hw6. Start by changing directories to said destination:

prompt> cd ~cs354-3/handin/USERNAME/hw6/

From that directory, run a simple program that prints out some problems for you to solve:

prompt> ~cs354-3/public/hw6/linear-run.py
This program, linear-run.py, spits out some virtual addresses for you to translate into physical addresses, assuming a simple linear (array-based) page table.

To learn more about how this style of paging works, you may wish to review what we covered in class or read the following:

To learn more about this specific homework, you should probably read the README file:

The parameters of the system you'll be dealing with are different than in the README. They are:

  • A virtual address space size 2048 bytes
  • A physical memory of size 8192 bytes
  • A page size of 256 bytes

To turn in your answers, simply create a file called linear.out in your hw6/ directory, and put the answers into it in this form:
virtual_address_1 physical_address_1
virtual_address_2 physical_address_2
... ...
virtual_address_10 physical_address_10

The homework, when you run it, gives you the virtual addresses (left column): you should put the decimal version into your output file. Your task is to figure out the translations (physical addresses); also record this as a decimal number. The virtual and physical addresses should be separated by one or more spaces. In the case that the virtual address is not valid (i.e., accessing it will lead to a fault), just put a single dash - instead of a physical address in the file.

We'll provide a checker in a few days so you can see if you are getting the correct answers.

Part 2: Multi-level Page Tables

In this second part of the project, you'll learn about multi-level page tables and how to perform translations with these more sophisticated structures. It may be best to first read about them (Section 20.3 in the following):

Once again, cd into your hw6/ homework directory, and run the following:

prompt> ~cs354-3/public/hw6/multi-run.py

To learn more about the homework, once again consult the README:

Your answers should go into the file multi.out in that directory. They should be of the form:
virtual_address_1 value_at_that_address_1
... ...
virtual_address_10 value_at_that_address_10

This time, the virtual addresses should be listed in four-digit hex form, e.g., 611c, and the value_at_that_address should either be the 2-digit value of the byte located in physical memory or a dash - to indicate a fault.