DistOS 2014W Lecture 1
What is an OS? Here are some ideas of what it could mean:
- a hardware abstraction
- Consistent execution environment. (ie. code written to interface -- think portable code)
- manages I/O
- Resource management/Multiplexing
An OS can be defined as the role it plays in the programming of systems. It takes care of resource management and creates abstraction. An OS turns hardware into the computer/api/interface you WANT to program.
This is similar to how the browser is becoming the OS of the web. The browser is the key abstraction needed to run web apps. It is the interface web developers target. It doesn't matter what you consume a given website on (eg. a phone, tablet, etc.), the browser abstracts the device's hardware and OS away.
So, what's a distributed OS?
Anil prefers to think of this 'logically' than functionally/physically. This is because the old distributed operating system (DOS) model applies to today's systems (ie. managing multiple cores, etc). The tradition definition is systems that manage their resources over TCP/IP.
A lot of these definitions are hard to peg down because simplicity always gets in the way of truth. These concepts to do not fit into well defined classes.
Anil's definition: "taking the distributed pieces of a system you have and turning it into the system you WANT. (sic)"
It is good to think about about DOS's within the context of who/what is in control. The traditional kernel-process model is a dictatorship. Authoritarian model of control. The kernel controls what lives or dies. The internet, by contrast, is decentralised (eg. DNS). Distributed systems may have distributed policies where there is not one source of power.