This repo contains source code template for SSDLab presented in the paper Filling in the Missing Piece: Integrating Storage into CompOrg Courses, published at ASEE 2025. Link to the paper will be updated after the paper is published.
System: Linux. Each student should be assigned to a folder under /home/.
Toolchain for the assignment: gcc, objcopy.
Handout: Any LaTeX compiler.
The assignment WILL NOT run properly without running actions below before assignment deployment. Please read this section before deploying the assignment. Instructors should send an email to xzhang84[at]syr.edu for access to instructors-only files to properly deploy the assignment. Please send proofs to prove that you are an instructor (e.g., sending your public profile on your institution website with the email address shown on your profile) for access. We apologize for any inconvenience, but we require this because the instructor-only files contain sample answers.
Students should make changes to the following files:
handlewrite.c: Students should make change to thehandleWriteRequestsfunction.gc.c: Students should make change to thegcfunction.findvictim.c: Students should make change to thefindVictimfunction.
Students can use the autograder file (autograder.py) to grade their own assignments. Run autograder.py without any arguments for help.
All other files do not need to be changed by students or instructors.
helper.c: Contains all helper functions. We strongly suggest students to read this file to learn how the helper functions are implemented. This file also helps students to learn C language syntax.autograder.py: Autograder for students.waf.c: Hooks on the students' implementation of thegcfunction to count the number of pages relocated in their garbage collection process.main.c: Trace driver. Reads in the trace and calls thehandleWriteRequestsfor each write request in the trace.Makefile: Contains the instructions tomakethe assignment.
The following files will be generated by the instructors prior to the deployment and thus are not in this repo. See the instructor's README.md for more details.
sample_findvictim.o: The object file containing a sample answer offindVictimfunction for student debug purposes. Students canmakewith this samplefindVictimfunction usingmake withsamplefindvictimbefore implementing their own version or to debug with it.sample_gc.o: Similar to above, but for thegcfunction. Runmake withsamplegcto compile withsample_gc.o.- To compile with both
sample_findvictim.oandsample_gc.o, runmake withsamplefindvictimandgc. - The
autograder.pyscript also provides the feature to compile with these object files.
- To compile with both
ssdlab-ref: The compiledSSDLabbinary with sample answers to the three functions students need to solve. This is used by the autograder as reference.
- The trace driver,
main.c, is designed based on the structure ofcsim.cin CSAPP:3E. The handout is also based on CSAPP:3E assignment handout LaTeX template. - The physical page address data structure,
ppa, is based on the implementation of FEMU by Huaicheng Li. - The traces under the
./tracesfolder are from the Systor 2017 paper Understanding Storage Traffic Characteristics on Enterprise Virtual Desktop Infrastructure. The traces are available at http://iotta.snia.org/traces/block-io/4928.