CST334 week 1 (25/100)
This week was a good overview of the main purpose of operating systems: abstracting the hardware away from software, enabling concurrent program execution, and persisting data to non-volatile storage. The lectures starting working from the ground up, tying together these concepts. Computer architecture review of cpu execution and memory layout, access, and management brought us to the operating system discussion. The history of unix and linux gave an overview of what the operating system abstraction layer is that we’ll be working with. Programming in C is how we interact with the operating system and get a window into the lower level system. C abstracts away the cpu cycles and most of the memory management, but still gives us the ability to directly address and manipulate memory if we want to. The command line is a much safer way to interact with the operating system through system calls, most of which are written in C. This is the main userspace interface to the operating system. All of our low level access problems are abstracted away and we can deal with data and storage manipulation without (much) fear of corrupting the system. The lectures then bounced back to the log2 math that drives all of our analysis of volatile and nonvolatile storage on a computer.
I feel like we’re going to do more exploration of boundaries between layers from hardware to kernel to user. The programming assignment sat in the middle of hardware access, dealing with a lot of memory management and protection to keep the user of this String library from corrupting memory or out-of-bounds errors, and exposing an abstraction to this underlying memory in a reliable and user-friendly way. I expect that through the course we’ll be taking a look at how nasty things can get when we’re looking at the lowest level of operations and how the operating system puts a nice bow on it to keep users from getting into trouble.
Comments
Post a Comment