We provide you a suggested order of implementation as well as the specifications for each checkpoint based on our and past students’ experiences. However, this is merely a suggestion and you may elect to approach the project entirely differently.
Keep in mind that checkpoints are not graded.
Start by implementing the buffer cache, a good sanity check for your implementation is making sure that all of the
userprog tests are still passing after your buffer cache has been implemented. You should start your implementation using the bounce buffers and once you are sure that it behaves in the way that is intended you should finish your implementation by making sure that it is working as intended when you remove them.
If you decide to work on the buffer cache first, make sure that you develop it separately from your implementation of extensible files and subdirectories before combining them. This will help to minimize any possible debugging issues that might arise by ensuring that both parts work before merging them together. You could also decide to work on the buffer cache at the end after you have tested your implementation for extensible files and subdirectories.
Implement the support for extensible files. This will involve making the appropiate modifications to the inode structure so it supports a larger file size and so it allows a file to grow in size.
You can start implementing these two sections in parallel from the buffer cache. So, as long as you keep the two sections separate from the buffer cache until both are fully implemented and pass the appropiate tests, you can work on both the Extensible Files and Subdirectories sections without having a fully implemented buffer cache. So, feel free to separate the buffer cache code, (i.e in another branch, or relegate the code to a teammate’s computer, etc.), and move on to the extensible files and subdirectories sections.
Finish the project by implementing subdirectory support. Start by implementing your path resolution function and then move on to implement the rest of the functions in this task.