Saturday, November 4, 2023

Thoughts on Operating Systems

Header image. Arrows pointing to a larger arrow. text: Operating Systems

Hi Ya'll

This is a reflection at the end of CPT304: Operating Systems Theory & Design. I will say that learning about how computers' Operating Systems work, especially I/O, has formed this understanding for me that computers aren't really the one thing I thought they were. I used to imagine computer processors as an interpretive tip that 1s and 0s would slide through, and some magical-how, usable stuff would happen on the computer screen because of it. Now I imagine it as every computer is more like 20 smaller computers in a trench coat. Okay, so what I mean by that is there are all kinds of systems and subsystems that can self-manage and share duties that come together to make it possible for me to type these words and you to read them as two detached events.

Memory Hierarchy
Basic Memory Hierarchy

I've come to understand the difference between memory and storage. The way I see it, the main memory is the farthest down the memory hierarchy the CPU can functionally "reach" and process information from. Secondary storage and beyond are for mass storage of information or program code and are in the category of I/O. The data stored here needs to be pulled into main memory to get used – to become active. One of the "computers in the trench coat" is the controller that moves data between these two memories (Silberschatz, et al., 2014). The controller managing the memory transfer allows the primary CPUs to continue processing instead of having to manage the repetitive data transfer.

Memory Hierarchy with some Processor and I/O callouts
Modified Memory Hierarchy with some Processor and I/O callouts

While I don't have any plans to write my own OS, ever, understanding these concepts does help me more effectively interact with systems when writing code. Personally, though, I feel like my base of understanding of the world has meaningfully expanded. While these exact concepts may not go used by me for some time, I know they exist now. That awareness of these features has been added to the fuel of my imagination and problem-solving capabilities. I may not literally use the knowledge about how I/O device controllers commonly have four 4-bit registers, but I now have that kind of object to consider as a programming solution.

I/O Flow

However, my expanded knowledge around the whats and whys of security protocols is going to be something I can implement right away. User authentication is a critical component of where external security and internal protection meet. All the security in the work doesn't matter if a bad actor can appear to the system as a legitimate user. With how prolific social engineering is, the targeting of the human weakness in security, it's not unreasonable to assume that authorized users in a system will be compromised. Adhering to protection principles helps to limit the damage bad actors masquerading as authorized users can wreak upon a system. The protection principles of Need-to-Know and Least-Privilege will limit the access and capabilities of a user to only those that are needed. It would not be a good security practice if a user could access all parts of all systems. Using the protection principles to minimize user access minimizes the reach a compromised profile would provide (Silberschatz, et al., 2014). So as I work on a project and have to consider what users I share these projects with, I can better secure them with the principles of Need-to-Know and Least-Privilege.

Security and Protection Working Together

Aside from securing a system against outside forces, internal protection still plays a vital role in day-to-day operations of a computer system. One of the fundamental protections is keeping processes in a multiprocess-systems from interfering with each other in unexpected and undesirable ways. Processes use logical memory addresses, which a Memory Management Unit maps to physical addresses, instead of using physical addresses directly (Silberschatz, et al., 2014). This is another example of need-to-know in action in computer protection. By forcing process addresses to go through a conversion, ideally, they can only interact with their dedicated memory spaces.

Sometimes, we can't always predict how we will our expanded knowledge will be leveraged in the future, but that's part of what makes learning so rewarding – the unexpected journeys you can look forward to the new knowledge fueling.  

        Ciao

Resources for Text

Silberschatz, A., Galvin, P. B., & Gagne, G. (2014). Operating system concepts essentials (2nd ed.). https://redshelf.com/

Additional Resources That Influenced Figures

CrashCourse. (2017, June 28). Operating Systems: Crash Course Computer Science #18 [Video]. YouTube. https://www.youtube.com/watch?v=26QPDBe-NB8

Patterson, D. A., & Hennessy, J. L. (2014). Computer organization and design: The hardware/software interface (5th ed.). zyBooks. 

TutorialsPoint. (n.d.). Operating system - Multi-threading. Retrieved from http://www.tutorialspoint.com/operating_system/os_multi_threading.htm 

No comments:

Post a Comment