This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
cs330_f2016:lab14 [2016/11/15 18:48] morse |
cs330_f2016:lab14 [2016/11/15 21:32] morse |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ** This version is preliminary and subject to change until this line is removed ** | ||
====Objective:==== | ====Objective:==== | ||
Line 41: | Line 40: | ||
===Stop and Copy=== | ===Stop and Copy=== | ||
- | For the stop-and-copy part of the assignment, you are given the initial tospace, which is identical to the original heap for the mark-and-sweep part. | + | For the stop-and-copy part of the assignment, you are given the initial fromspace, which is identical to the original heap for the mark-and-sweep part. |
However, the interpretation is slightly different: for mark-and-sweep, you have to identify blocks as free and maintain a free-block list. | However, the interpretation is slightly different: for mark-and-sweep, you have to identify blocks as free and maintain a free-block list. | ||
For stop-and-copy, there are no free blocks or a list of such. Instead, all memory above the single free pointer is unused and can be allocated. | For stop-and-copy, there are no free blocks or a list of such. Instead, all memory above the single free pointer is unused and can be allocated. | ||
Line 61: | Line 60: | ||
====Notes:==== | ====Notes:==== | ||
- | - Address 0 is intentionally not used and a reference with value = 0 should be taken as a NULL pointer | + | - Address 0 is intentionally not used and a reference with value = 0 should be taken as a NULL pointer. |
- Use the "Interpretation" column for your own notes, but all necessary information must be in the heap contents, not this column! | - Use the "Interpretation" column for your own notes, but all necessary information must be in the heap contents, not this column! | ||
- | - For mark-and-sweep, you should "sweep" blocks by marking them as free and adding the length of the entire block (including header) and a next pointer. | + | |
- | - Insert new free blocks at the head of the free list. | + | ---- |
- | - For stop-and-copy, you will need to maintain your on "scan" pointer during the copying process. | + | |
- | - For stop-and-copy, you need to fill in the "tospace", but you also need to show changes to the "fromspace". | + | ====Hints:==== |
- | - For stop-and-copy, you must use Cheney's algorithm, so the live blocks must be copied in the correct depth-first order. | + | |
+ | Since both methods should result in the same set of live objects, try comparing which blocks still remain after each approach. The order in which they appear in memory will be different, but the set of live objects should be the same. | ||
+ | |||
- | ===Hints:=== |