this project. You should also write programs to test the new features
introduced in this project.
+You will continue to handle Pintos disks and file systems the same way
+you did in the previous assignment (@pxref{Using the File System}).
+
Your submission should define @code{THREAD_JOIN_IMPLEMENTED} in
@file{constants.h} (@pxref{Conditional Compilation}).
time, so we must allocate pages as necessary. You should only allocate
additional pages if they ``appear'' to be stack accesses. You must
devise a heuristic that attempts to distinguish stack accesses from
-other accesses.@footnote{You might find it useful to know that the
-80@var{x}86 instruction @code{pusha} pushes all 8 registers (32 bytes)
-on the stack at once.} Document and explain the heuristic in your
+other accesses. Document and explain the heuristic in your
design documentation.
The first stack page need not be loaded lazily. You can initialize it
Implement paging to and from files and the swap disk. You may use the
disk on interface @code{hd1:1} as the swap disk, using the disk
-interface prototyped in @code{devices/disk.h}.
+interface prototyped in @code{devices/disk.h}. From the @file{vm/build}
+directory, use the command @code{pintos make-disk swap.dsk @var{n}} to
+create an @var{n} MB swap disk named @file{swap.dsk}. Afterward,
+@file{swap.dsk} will automatically be attached when you run
+@command{pintos}.
You will need routines to move a page from memory to disk and from
disk to memory, where ``disk'' is either a file or the swap disk. If