This is the accompanying lab for the Carnegie Mellon University course 15-213.
This lab is reminiscent of a maze, with interesting binary search questions. At one point, I even considered using a static binary search approach, but the number of operators exploded. You can still see the remnants of that code in the codebase, hhhhhhhh.
When I first got this lab, I was completely lost. However, once I got started, I must admit it's a very interesting lab. Solving the hidden bomb and seeing the binary search tree was truly amazing. Highly recommended, perhaps this is the romance of an engineer~
I feel like this lab can be done alongside bomblab, as they are part of the same chapter in the CSAPP book. Both labs are quite interesting and completing them was rewarding, as I gained the ability to understand most normal assembly code!
Upon reflection, this lab probably took the longest to complete. From breaking through zeros on day one, to crazy loop unrolling and bubble deflating on day two, to suddenly thinking of using a balanced tree while showering on day three, and finally, tirelessly tweaking the jumping tree for the last two points on day four. It's a challenging lab~
This lab had a great impact as it simulated various cache operations. The matrix-related tasks were brain-teasers, but simulating cache with linked lists might achieve better speed!
This lab was copied from the book; there's even a ready-made half-finished solution in the book hhhhhhh. However, blocking signals still required some thought. Don't block where you shouldn't and then debug for half a day (don't ask me how I know)...
This lab is good, but I feel it's slightly off focus. The focus of Chapter 9 should be TLB, page tables, virtual-to-physical address translation, etc. Doing a virtual memory allocator seems a bit off-topic. Perhaps simulating a page table similar to cachelab would be more beneficial?
Another lab copied from the book (handmade dog head), but it covers a wide range of topics - network programming, multithreading, cache, etc. Using semaphores in multithreading is a challenge, especially when dealing with complex read/write operations. In any case... the great cache! Cache is life!
CSAPP is truly an excellent course, and I gained a lot from it. It not only connects computer organization, operating systems, and computer networks but also presents a relatively complete framework of computer science. It was my first dive into such a massive computer science topic, and completing the labs in a completely unfamiliar environment gave me the courage to take on big challenges. This courage is the most valuable thing I gained because it's the guarantee of self-study and diligence as a computer science student, and it lays the foundation for my career in this field.