An operating system (OS) is a piece of software. It manages the computer hardware and provides common services for various applications. With the rise of cloud computing, people may wonder whether the OS is still relevant and what role it will play in the future cloud.
Key Components of OS
Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.
There are different flavors of operating systems: from real-time OS, desktop OS, all the way to a mainframe OS. The most recent OS is the Cloud OS.
In general, every OS has these common components:
- The kernel, which manages memory, processes, etc.
- Device drivers, which drive different hardware from different vendors.
- User interfaces, including command line shell and Window system.
- File system, which provides a hierarchical way to persist data.
- Security, which authenticates users and protects information.
Depending on the type of OS, you may miss something here or have something extra. For example, an embedded OS may not have a user interface and everything is controlled remotely. For the desktop OS, you may have extra commonly used applications such as a calculator, a calendar, a browser, and so on.
With virtualization, operating systems moved up in the software stack. The role of managing and abstracting hardware is relinquished to hypervisors underneath the virtual machines. So the OS is squeezed by virtualization from the bottom.
Long before virtualization, there have been concepts of software middleware including database, messaging, etc. These provide a higher level platform for applications, and result in a higher quality of products and higher developer productivity. Also, the rise of software virtual machines like JVM and .Net, have abstracted the OS services to a higher level of programming APIs. So the OS is less important from the application development point of view. It has been squeezed from the top as well.
In being squeezed, there is less “meat” in the sandwich today. As VMware CEO Paul Maritz pointed out at VMworld 2010, “The innovation in how hardware is coordinated today and the innovation in how services are provided to applications is no longer happening inside the operating system.” In other words, the innovation happens below (virtualization) and above (middleware) today.
Why an OS still Important in Cloud Computing
As I have said before, cloud computing is more an evolution than a revolution. Keeping the traditions is important for adoption. One of these traditions is the operating system.
Technically, an OS owns a very important asset: IP addresses. An IP address has two functionalities in networking: 1) helping routing traffic in and out, and 2) identifying a particular operating system.
Hypervisors such as ESX do own IP addresses, but for management purposes not for computing workloads. Middleware and applications do not own IP addresses, but rather bind themselves with a particular service port as needed.
The second part for IP being an ID is critical. It’s like a public interface. Unless we can move the IP up to the middleware or application layer, the OS continues to be a critical component.
With IPv4, it’s not practical to assign an IP to an application due to the limited number of IPv4 addresses available. With IPv6, it’s all possible because there are plenty of IP addresses. But then the question becomes whether it’s really needed or the change buys you anything. For one thing, moving the IP attribute up to middleware or application will totally change people’s perceptions which may hurt adoption.
Is JEOS Enough?
Coming along with virtualization, Just Enough Operating System (JEOS) and virtual appliance (VA) concepts were born. The idea is that you can trim down an OS to the minimum required to support an application. In this comparison, think of the virtual machine as an application.
For one thing, you can significantly reduce the size of an operating system. The challenge there is how to keep it as convenient as before. I personally haven’t seen a perfect solution to the challenge. In general, most people still aren’t comfortable thinking of a virtual appliance as an application. They still look at it as an OS and they have the same expectations (unless a new set of tools could help to manage them in a similar way as applications). It may lead to a new wave of innovations as the next big things.
Diverging of OSes
Because the OS is used in different environments for different purposes, we can’t predict that they’ll all evolve in the same manner. In the context of cloud computing, I think the future of OSes will diverge based on their purposes.
First, there is the OS for enterprises. As VMware CEO Paul Maritz said, the OS will continue to be a component in the stack. It is still an important and stable component in supporting the cloud infrastructure. Depending on the type of cloud, you may not need to know about the OS but it’s still critical for operations. Instead of innovating new features, the imperative work there is to make the OS reliable, convenient, and secure, and at the same time keep up with new CPU architectures.
Second, there is the OS for end users. Although some people think all you need is a browser, I prefer convenience of a full-fledged desktop OS for work and home. You could build similar desktop user experience within a browser like Google Chrome OS, but it’s still a desktop with features I already familiar with. These OSes can live in the cloud and serve end users remotely. End users will need OSes outside the cloud as well. These OSes may bundle tightly with computer hardware, not as independent software. For better mobility and easy management of personal data across various desktops/netbooks/smart phones/setup boxes, we will need a better way to synchronize them.