|
Home
Tentative Schedule
Assignments
Policies
Course News
Demo Scheduler
|
Nachos Assignments
Before starting any assignment you should be familiar with the material
in Nachos
Project Policies and Mechanisms , which presents the policies and
procedures that apply to all of the Nachos assignments. You will find the
information in Working With
Nachos valuable for some or all of the labs. The system call definitions
in Nachos System
Call Interface are important for Labs 4 and 5.
Note that the labs for this semester have been slightly restructured
from previous semesters and differ from the descriptions in the Nachos Lab Modules in the
Nachos Guide. The definitive versions for this semester are given below:
These Lab Notes may
also prove valuable. They include
topics like: setting global variables
from the command line, use of AFS, and a few other items found helpful in
previous semesters.
Lab 1: The Trouble with
Concurrent Programming.
This lab does correspond
more or less directly to Section
3.1 in the Lab Modules. In addition to what is specified there, we want to
emphasize the importance of the quality of your output. The goal of this
exercise is to help you develop debugging strategies for concurrent programs.
In future labs, you will not necessarily expect to observe bad behavior or
have a good idea of the causes. So you should carefully think about (and we
will base part of the grade on) what kinds of information you need to output
in order to determine that there is, in fact, a bug and to identify the
cause. Does your output help you to explain which thread is doing what and
when it is doing it relative to other threads?
For instructions on building Nachos see these Lab Notes.
Lab 2: Threads and
Synchronization. This assignment covers Sections 3.2, 3.3, and 3.5 in the Lab Modules.
Lab 3: Programming with
Threads. This assignment
covers Sections 3.4, 3.6, and 3.7. Here is code for Elevator.h mentioned in section 3.4.
Lab 4: Multiprogrammed
Kernel This assignment covers Section 3.8 . The Extra Credit in
Section 3.8.5 is tempting,
but I warn you it is rarely done correctly. On the other hand, people often
overlook the required Section 3.8.6
-- don't forget it. This is the hardest of the labs so start early.
Code for LoadPage mentioned in guide.
Lab 5: I/O This assignment covers Sections 3.9 and 3.10. Extra credit for this assignment
is described in 3.11. There
is code for VAtoPA mentioned in the guide. Warnings: Once the console is running, using stdin
or stdout directly will not work. Also,
the underlying file system is very inefficient if short records are read or
written, and doing so will be penalized.
Lab 6: Virtual Memory This assignment covers Sections 3.12, 3.13 and 3.14.
Problem Sets
Jan 24: Problems 1, 4, 7, 8, 9, 15, 17, and 21 from Tanenbaum pp.
153-154(Ch. 2.1-2.3)
Jan 31: Problems 22, 24, 26, 28, 29, 33, and 40 from pp. 153-155.(Ch.
2.3-2.5)
Feb 7: Problems 35, 37, 38, 44, 50, and 51 from 156-157 and Problems
12 and 14 from p. 500.(Ch. 2.3-2.5, 7.4)
Feb 21: Problems 1, 2, 9, 14, 22, 24, and 25 from pp. 578-582 and
problems 7, 9, 12, 17, and 18 from p. 758.(Ch. 8, 10.3)
Feb 28: Problems 6, 8, 11, 14, 15, 16, 18, 20, 21, 22, 23, 25, and 27
from pp. 186-188. (Ch. 3)
Mar 7: Problems 5, 8, 13, 17, 20, 28, 29, 35, and 37 from pp. 263-268
(Ch. 4)
Mar 21: Problems 11, 12, 16, 24, 25, 32, and 46 from pp. 373-378 (Ch.
5)
Apr 4: Problems 5, 8, 9, 20, 30, 36, and 37 from pp. 449-452 (Ch. 6)
Apr 15: Problems 14, 27, 34; pp. 449-452 (Ch. 6)
Apr 18: 6, 8, 10, 13, 22, 30, 31, 32 and 35 from pp. 667-670. (Ch. 9)
Apr 25: Exam review problems: pp. 153-158: 18, 40; pp. 186-188: 12,
28; pp. 263-268: 14, 27, 34; pp. 449-452: 7, 13, 17, 23;
pp. 758-759: 11, 16.
Old Exams
Exam 1 Spring 2004 with answers
Exam 2 Spring 2004 with answers
Exam 1 Spring 2003 -- with answers
Midterm Fall 2002 -- with answers
Final
Exam Fall 2001
Problem Set Answers
Challenge 2 answer
Exam 2 Spring 2005 with answers
Final Spring 2005 with answers
|