DistOS 2014W Lecture 1

From Soma-notes
Revision as of 10:39, 25 March 2014 by Alp (talk | contribs) (Trivial English semantic fixes.)
Jump to navigation Jump to search

What is an OS?

An OS allows you to run on (slightly) different hardware. Here are some ideas of what and OS could mean and some functionalities and responsibilities that OSes include:

  • A hardware abstraction such that hardware resources can be accessed by software
  • Provides consistent execution environment, which hardware doesn't provide (ie. code written to interface &emdash; think portable code)
  • Manages I/O (such as user I/O, machine I/O i.e. network I/O, sensors, videos, etc.)
  • Resource management through multiplexing and policy use
    • Multiplexing (sharing): one resource wanted by multiple users
  • Communication infrastructure (example inter process communication mechanisms) between the users (process, applications) of the operating system.
  • OS turns a computer you want to a computer you want to program
  • Manages synchronization and concurrency issues

An OS can be defined by 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 """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.

What is 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 traditional definition is systems that manage their resources over a Network.

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.

To draw parallels to our previous definition of operating systems, a distributed OS takes the distributed pieces of a system, and turn it into the system you want.

It is good to think about about DOSes within the context of who/what is in control, in terms of who makes and enforces decisions in DOSes. In essence, who is in charge? The traditional kernel-process model is a dictatorship, an authoritarian model of control. The kernel controls what lives or dies. The internet, incontrast, is decentralised (eg. DNS&emdash;to some extent, ignoring centralized roots). Distributed systems may have distributed policies where there is not one source of power. Even in DOS we see instances of authoritarian/centralized approaches one example being the walled garden model employed by Apple's iOS. Anil's observation is that centralized systems has an inherent fragility built into and these kind of systems come into existence and disappear after a while. Examples being AOL, Myspace. Even the Facebook also looks to be a possible candidate for a similar fate. Also, concentrations on policy will tend to fall apart in the future.