Getting to Know Operating Systems (Under the Hood)

When first jumping into a course in Operating Systems Theory and Design, I wasn't sure what I was going to get out of it. I knew a little about OS design from a front end perspective--basically what I liked and didn't like in an OS--but had never exposed myself to what was happening underneath to make the UI experience that you and I either love or hate in the usual OS suspects. That is what this class did; It sort gave me a look under the hood of basic OS structures and the management systems involved to give me a better perspective of what is happening when it's working (and when it's not). Here are a few quick take aways:


  • An OS isn't just about managing files and a click-through to programs. It contains how systems built to maintain itself and fix its own errors. It also must run I/O protocols for everything related to your computer, from printers to DIMM slots, It manages a constant flow or I/O. Basically, on top it is a seamless and simple user interface, but underneath it is a sophisticated memory mapping machine. It carefully addresses and logs information in places in an organized way based on the real-time needs of the user. This means that it must track whether a byte is stored in the L1, L2, or L3 cache, or on the ALU or registry. If not there, it could be somewhere on the SRAM or DRAM, or on one of the hundreds of cylinders of a hard disk. for that matter is must know where the file could be remotely if its held on a server or on an external disk drive. This address system constantly updates to maximize efficiency. 

  • It must constantly balance process, starting them, running them, blocking them, suspending them, continuing them and terminating them based on the needs to the program and the user. Does the program need input from elsewhere? Must it not run ahead of another process and thus cause an errors?

  • Virtual memory (VM) was a huge insight. Basically, a modern OS can take information stored in memory that hasn't been used very recently and write it over to the Hard drive with an address to where it was in the DRAM. This can allow the perception of unlimited RAM memory as long as all the data isn't used simultaneously. This can also cause errors when it doesn't work right. Physical memory is always limited, but VM is "virtually" unlimited. It can be seen when you play a graphically intensive game that loads interactive objects as they are needed. Obviously every movement and interactivity with every object isn't loaded into the RAM, because that would take more RAM than the system most likely has, but it can appear that way because of how quickly and seamlessly the VM is juggling the information as you play.

  • File management was also an interesting topic. I knew about acyclic directories and how that works from a user perspective, but I hadn't seen the work that happens behind it. The potential issues that can arise from a looped directory link was intriguing enough that I almost wanting to try to force that error on my own PC to see how it happens. From a programming angle, it would be an important piece to remember. A simply loop somewhere in the file management system could cause major headache in memory space for the person using your software.

  • In terms of security, it's all about access. When programs have access to, what tasks and processes can access, and what users can do and access. After reading about the two main branches of security the "object based" access lists or the more user-centric domain capabilities, I can see why the place I work has chosen to go the domain access route. I simple and effective for large networks of systems that all do different tasks through the day. I doesn't mean that nothing get through, but it does make it more manageable. 

These concepts are already helpful in seeing what is going wrong with  some front end user machines where I work currently, and I can only imagine that a more detailed understand will only help further in future work. It's like having rudimentary knowledge of how a car works, an intermediate mechanical knowledge, and an in-depth understanding to the components and how they function that can make a truly great auto mechanic or not. That familiarity with the internal mechanisms that drive the machine only making running, troubleshooting, and improving systems that much faster, easier, and more effective.

Comments