Update about the project's progress and timeline (Week 7 blog)
Time goes really fast! This is the post for week 7, so I'm sending it a bit late...
As I posted in the posts before this, I've been spending a lot of time reviewing Linux Kernel code that uses synchronization primitives and memory barriers, and this is because it's necessary to get familiarized with their implementation and analyze how they would behave in a SMP system. Now, for the current month, I'm studying spinlocks and analyzing litmus tests that are part of Paul E. McKenney github repo, one of the maintainers of the LKMM that is written in the CAT language.
This project isn't as simple as I initially thought, as there are very complex tests that include multiple non-intuitive usages of spinlocks. These tests were created to prove the properties of these synchronization primitives, and there's also Linux Kernel that was simplified into litmus tests. Running and experimenting with memory barriers and forcing certain effects helped me simulate unusual conditions that helped me further.
In addition to this, I studied the CAT language to better understand the axioms that define the simulations provided LKMM. The publication is "Modelling of Architectures: Choose your own adventure in herding cats" by Jade Alglave, and the current URL for the tutorial can is available here as the PDF link is down. I found it by a not-so-quick Google search, but after an email, Jade also kindly pointed me to the same version I found and the modern version that is in here :)
Now, about the timeline, I'm honestly finding this process a bit more complex than I initially thought, even if I didn't expect to become an expert in the LKMM or the creation of litmus tests. I talked with my mentor about my performance for the first month, and we both agreed that it wasn't necessary to change the timeline. I probably will need to address this situation again given that I feel that when I'm working on something, other things steps in to help me understand better!
My plan for the remaining time of the internship is to try to have a clearer process to achieve the proposed goals, as sometimes I feel that this topic is complex and needs considerable time to familiarize with it and get a proper understanding of it.