DRAFT: This module has unpublished changes.

Operating Systems

You will be hard-pressed to find any aspect of technology that is not affected by operating systems. They drive the graphical user interfaces of the modern personal computers we use everyday, and manage the processor and memory activites of our software applications.

I grew up using Windows as my primary operating system and learned how much the operating system was involved in everyday tasks. I think for most users they view the operating system as the definition of their computer. The common user doesn't know how many cores their processor has or the clockspeed of their GPU; they say they own a mac, pc, android, or iphone running iOS. As my interest in computers grew, I began to use Mac osX, Ubuntu, iOS, Android, and other cloud OS's. This solidified my understanding of the importance of a powerful, efficient, and beautiful operating system. 

Today's modern operating systems are incredibly robust and complex. It is important to have a solid understanding of the components of an operating system as a computer science student. The kernel, user-interface, i/o manager, and memory and processor managers all work together to run applications and user tasks. In my operating systems class, we were given many assignments that helped teach us how operating system function. In the assignment linked below, we had to explain and simulate how a paging algorithim would deal with requests made to the memory manager. We learned how different algorithims like most-recently used, least-recently used, and first-in, first-out made sense in certain situations and types of operating systems.


Operating Systems Assignment #3

The second task of the operating system mastery is to install, administer, and maintain an operating system. As a computer science student and tech enthusiast installing and maintaining operating systems is something that I've been doing for years. I grew up learning and upgrading Windows OS's like MS-DOS, Windows 95, ME, XP, Vista, to 7. I've suffered through many hard drive crashes, back-up images, and fresh installs.

More recently, I have been spending most of my time working with cloud OS's like Chrome and joliCloud and mobile OS's like blackberry, iOS, and android. The introduction of the iPhone has created a surge in mobile OS power and versatility. Unfortunately, the early versions of iOS was a very closed experience; I had to jailbreak the operating system to achieve the level of customization that I was really looking for in a mobile phone. 

This trend has continued today with my current operating system of choice. I use a Galaxy Nexus phone running Android 4.0, which is a mobile OS based on  Linux. The Android developer community has created an environment that allows the user to have complete control over their device. On a frequent basis, I install custom operating system ROM's and custom kernels on to my phone. This allows me to have complete control over what applications do and how the hardware performs. I can set CPU frequencies and scaling governors that help manage speed and battery life.

I have no doubt that knowledge of operating systems will help me in my future as a developer and student of computer science. Understanding how applications interact with and affect operating systems leads to better performance and higher quality programs. I know that I have a lot to learn about technology, but I believe that understanding what topics to give priority to will improve my abilities and focus my career path.

Below you will find the links to my Operating Systems class final project.


Final Project Part A


Final Project Part B

DRAFT: This module has unpublished changes.