Thursday's class will include an opportunity to ask the IronKernel developers anything you want about the kernel code, so you are strongly encouraged to get started on PS4 before that and look for things that you have questions about in the code.
Videos
Readings
For a great story on how to get started kernel hacking in Rust, see Julia Evans' Writing an OS in Rust in tiny steps (Steps 1-5). There is also a video of her talk at the March Rust Meetup. (Despite Julia's obviously good taste in names, languages, and operating systems, so far as I know we are not related.)
If you missed this earlier: Gary Kildall and the 40th Anniversary of the Birth of the PC Operating System (David Laws, Computer History Museum).
Turing Award
Leslie Lamport won the 2013 Turing Award!
ACM Turing Award Goes to Pioneer Who Advanced Reliability and Consistency of Computing Systems, ACM, 18 March 2014.
Leslie Lamport Receives Turing Award, Microsoft Research, 18 March 2014.
We will explore Lamport's work on mutual exclusion next week, including this paper: A New Solution to Djikstra's Concurrent Programming Problem, Communications of the ACM, August 1974. (Lamport also created LaTeX, which most tasteful technical publications use for typesetting.)
Exam 2
Exam 2 will be next week, out on March 25 and due before class on March 27 (or later). It will be similar in format and content to Exam 1 (except mostly focusing on course material since Exam 1), but will also include some specific questions about the kernel code.
Memory Protection
What are the advantages/disadvantages of hardware-based memory isolation over software-based memory isolation? (This was a question on exam 1; you should be able to answer it much better now if it appears again on exam 2.)
What is fn fail_bounds_check(...)
?
Popping the Kernel!
Why is println("Hello")
not possible in your first kernel-level program?
Why do we need #[no_std]
to implement a kernel in Rust?
Is it possible to implement a kernel in Java?
Introducing IronKernel
Why is the assembler used to build IronKernel called arm-none-eabi-as
?
What do you expect to happen when you write to a random address in a user-level program running in Linux?
What do you expect to happen when you write to a random address in the kernel?
*((addr + (i * 4)) as * mut u32) = val