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.
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.
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