DistOS 2015W Session 1: Difference between revisions
Created page with "1st Lecture - January 5th 2015 COURSE OUTLINE Undergrad Grading Scheme: 15% Class Participation 15% Reading Responses 10% lecture Notes/Wiki Contributions 25% Midterm ..." |
|||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
Notes for the first session that happened on Jan. 5th, 2015. | |||
= Course Outline = | |||
Undergrad Grading Scheme | Undergrad Grading Scheme | ||
15% Class Participation | * 15% Class Participation | ||
15% Reading Responses | * 15% Reading Responses | ||
10% lecture Notes/Wiki Contributions | * 10% lecture Notes/Wiki Contributions | ||
25% Midterm | * 25% Midterm | ||
35% Final Exam | * 35% Final Exam | ||
Grads Grading Scheme | Grads Grading Scheme | ||
15% Class Participation | * 15% Class Participation | ||
15% Reading Responses | * 15% Reading Responses | ||
10% Lectures Notes/Wiki contributions | * 10% Lectures Notes/Wiki contributions | ||
10% Project Proposal | * 10% Project Proposal | ||
15% Project Presentation | * 15% Project Presentation | ||
35% Final Project | * 35% Final Project | ||
Project | === Project === | ||
A literature review of | * A literature review of distributing operations | ||
Research proposal on a problem related to | * Research proposal on a problem related to distributed systems | ||
= Discussion = | |||
== Q: What do you think of when you hear 'Distributed System'? == | |||
=== Group 1 === | |||
* Sharing Resources | |||
* Spreading Work Loads | |||
* Scheduling | |||
* Process migration | |||
* Different nodes have different purpose | |||
* Google | |||
* Parallel running processes | |||
* Nodes | |||
* Resource Allocation across multiple nodes | |||
* Scheduling multiple nodes | |||
* Resources availability among nodes | |||
* Problem: across multiple machine | |||
=== Group 2 === | |||
* Request comes from (usually) one computer and processing is usually handled by more than one computer | |||
* Tasks are divided into small parts which can be processed individually before coming back together | |||
* Usually deals with large scale data sets | |||
* Globalization | |||
* Fault tolerance | |||
* Usually emphasize distributed agents to not work on certain schedule | |||
* Examples: Map Reduce, cloud, cloud software (Google Drive) | |||
=== Group 3 === | |||
* Separated, networked machines | |||
* Coordinated by similar or identical software | |||
* Error recovery/redundancy | |||
* No controlled storage | |||
* Coordinated communication facilitating operation on coordinated task | |||
* Leader/hierarchy for task delegation | |||
=== Group 4 === | |||
* Distributed, multiple systems | |||
* OS: The root level system that operates a computer system | |||
* Dist. OS more complexity | |||
=== Prof Discussion Notes === | |||
Key words: network, parallel, fault tolerant, redundancy, complexity | |||
== Distributed OS is kind of OS == | |||
'''But what is an OS in the first place?''' | |||
''' | * Connection software and hardware | ||
* Resource allocation | |||
* Abstraction layers | |||
* Makes it easy to run higher level programs on different computers | |||
* Sharing: resources are split up and each process is isolated, this improves security and programming (no need to worry about sharing) | |||
* Virtual memory, process scheduling | |||
'''What is a distributed system?''' | |||
* Focused on "network transparency", in order to provide to the user the sense that he/she interacts with a single machine as if all the resources were local. | |||
* Do the things users take for granted on regular computers | |||
* Does not scale relatively to the number of resources in the system (i.e.: 100 computers, does not equal a distributed system that is 100 times faster than a single computer) | |||
* In a way, opposite of an operating system: instead of splitting up a single computer into many, it takes many and tries to merge into one | |||
* Resources can be divided as you want | |||
* Centralized control solves some issues, but has issues of its own | |||
* Since it cannot truly act as a single computer, we fake it as much as possible - and it works in some scenarios | |||
* The more specialized the task, the better it will scale (i.e.: grid computing with very specific computations that are heavily parallel in nature) | |||
* Interact it, process update, callback, | |||
* Gmail so responsible - it perfected , downloads in your browser | |||
* Cache - they predict what the processor going to do | |||
[[File:Dos.png|frame|center|Distributed Operating System represented as a Venn diagram. OS denotes an operating system, and DS denotes a distributed system. The black center represents a distributed operating system; a system with properties of an operating system and a distributed system.]] | |||
== Operating System Examples == | |||
'''Mobile devices - Phones''' | |||
* iOS | |||
* Android | |||
''' Embedded OS | '''Embedded OS''' | ||
* Linux | |||
* QNX | |||
* xBSD firewalls | |||
'''Desktop''' | |||
* Windows | |||
* OSX | |||
* Chrome OS | |||
'''Server''' | |||
* Windows | |||
* Linux | |||
* BSD | |||
''' Main Frames | '''Main Frames''' | ||
* OS/400 | |||
Is the cloud an OS? Important question. | |||
'''Cloud''' | |||
* MPI | |||
* AWS | |||
* Google App Engine | |||
No, they are at best proto-OSs because the abstractions they provide are very leaky. They only provide limited APIs. | |||
[[File:C_ontology.png|thumb|center|400px|This showcases the possible services that clouds can provide, to an extent we can consider the whole as being an "OS".]] | |||
--> I do not agree, it really depends on how expansive is your definition of cloud... (i.e.: IaaS provides the ability to the user to spin a full fledged OS on a VM (for which you have no explicit idea of the physical architecture, it could be part of a 96 SBC server-rack connected to dedicated HDD/SDD server-rack, etc.) ) Again this is semantics, but I feel we need to clarify the terminology. | |||
== Pick a system and show how it is and is not an OS == | |||
''' | |||
=== Group 1 === | |||
{| class="wikitable" width="100%" | |||
|+ '''BOINC''' | |||
|- | |||
! Similarities to a traditional OS | |||
! Differences from a traditional OS | |||
|- | |||
| Very parallel | |||
| Can handle only very specific (trivially parallelizable) types of problems | |||
|- | |||
| Availability | |||
| Abstraction layer is poor | |||
|- | |||
| Scheduling | |||
|- | |||
| Networked | |||
|- | |||
| Nodes may come and leave as they like (it is active when the computer is idle) | |||
|- | |||
| Same problem at the same time | |||
|- | |||
| Redundant/Fault tolerant | |||
|- | |||
| Allocation can be handle by system | |||
|- | |||
| Large problem managed by one system | |||
|- | |||
| Anyone can submit projects | |||
|} | |||
=== Group 2 === | |||
{| class="wikitable" width="100%" | |||
|+ '''Facebook''' | |||
|- | |||
! Similarities to a traditional OS | |||
! Differences from a traditional OS | |||
|- | |||
| OK abstraction (for human communication/control) | |||
| Doesn't really take a single resources and split it up into smaller ones | |||
|- | |||
| The programming API is stable | |||
| The human API (user interface) is not stable | |||
|- | |||
| Able to separate resources such as wall posts, photos, etc | |||
| Limited control | |||
|} | |||
=== Group 3 === | |||
{| class="wikitable" width="100%" | |||
|+ '''Google Docs (Drive)''' | |||
|- | |||
! Similarities to a traditional OS | |||
! Differences from a traditional OS | |||
|- | |||
| Has a file system | |||
| Somehow still not a true OS | |||
|- | |||
| Provides hardware abstraction (users don't care how the requests are carried out) | |||
|- | |||
| Has an API | |||
|} | |||
=== Group 4 === | |||
{| class="wikitable" width="100%" | |||
|+ '''LinkedIn''' | |||
|- | |||
! Similarities to a traditional OS | |||
! Differences from a traditional OS | |||
|- | |||
| Supports multiple location/users | |||
| Specific functionality (not abstract) | |||
|- | |||
| Multiple servers around the world | |||
|- | |||
| Resource/Security management | |||
|- | |||
| Networked | |||
|- | |||
| Cross-platform (Desktop/Mobile) | |||
|} |
Latest revision as of 16:40, 27 January 2015
Notes for the first session that happened on Jan. 5th, 2015.
Course Outline
Undergrad Grading Scheme
- 15% Class Participation
- 15% Reading Responses
- 10% lecture Notes/Wiki Contributions
- 25% Midterm
- 35% Final Exam
Grads Grading Scheme
- 15% Class Participation
- 15% Reading Responses
- 10% Lectures Notes/Wiki contributions
- 10% Project Proposal
- 15% Project Presentation
- 35% Final Project
Project
- A literature review of distributing operations
- Research proposal on a problem related to distributed systems
Discussion
Q: What do you think of when you hear 'Distributed System'?
Group 1
- Sharing Resources
- Spreading Work Loads
- Scheduling
- Process migration
- Different nodes have different purpose
- Parallel running processes
- Nodes
- Resource Allocation across multiple nodes
- Scheduling multiple nodes
- Resources availability among nodes
- Problem: across multiple machine
Group 2
- Request comes from (usually) one computer and processing is usually handled by more than one computer
- Tasks are divided into small parts which can be processed individually before coming back together
- Usually deals with large scale data sets
- Globalization
- Fault tolerance
- Usually emphasize distributed agents to not work on certain schedule
- Examples: Map Reduce, cloud, cloud software (Google Drive)
Group 3
- Separated, networked machines
- Coordinated by similar or identical software
- Error recovery/redundancy
- No controlled storage
- Coordinated communication facilitating operation on coordinated task
- Leader/hierarchy for task delegation
Group 4
- Distributed, multiple systems
- OS: The root level system that operates a computer system
- Dist. OS more complexity
Prof Discussion Notes
Key words: network, parallel, fault tolerant, redundancy, complexity
Distributed OS is kind of OS
But what is an OS in the first place?
- Connection software and hardware
- Resource allocation
- Abstraction layers
- Makes it easy to run higher level programs on different computers
- Sharing: resources are split up and each process is isolated, this improves security and programming (no need to worry about sharing)
- Virtual memory, process scheduling
What is a distributed system?
- Focused on "network transparency", in order to provide to the user the sense that he/she interacts with a single machine as if all the resources were local.
- Do the things users take for granted on regular computers
- Does not scale relatively to the number of resources in the system (i.e.: 100 computers, does not equal a distributed system that is 100 times faster than a single computer)
- In a way, opposite of an operating system: instead of splitting up a single computer into many, it takes many and tries to merge into one
- Resources can be divided as you want
- Centralized control solves some issues, but has issues of its own
- Since it cannot truly act as a single computer, we fake it as much as possible - and it works in some scenarios
- The more specialized the task, the better it will scale (i.e.: grid computing with very specific computations that are heavily parallel in nature)
- Interact it, process update, callback,
- Gmail so responsible - it perfected , downloads in your browser
- Cache - they predict what the processor going to do
Operating System Examples
Mobile devices - Phones
- iOS
- Android
Embedded OS
- Linux
- QNX
- xBSD firewalls
Desktop
- Windows
- OSX
- Chrome OS
Server
- Windows
- Linux
- BSD
Main Frames
- OS/400
Is the cloud an OS? Important question.
Cloud
- MPI
- AWS
- Google App Engine
No, they are at best proto-OSs because the abstractions they provide are very leaky. They only provide limited APIs.
--> I do not agree, it really depends on how expansive is your definition of cloud... (i.e.: IaaS provides the ability to the user to spin a full fledged OS on a VM (for which you have no explicit idea of the physical architecture, it could be part of a 96 SBC server-rack connected to dedicated HDD/SDD server-rack, etc.) ) Again this is semantics, but I feel we need to clarify the terminology.
Pick a system and show how it is and is not an OS
Group 1
Similarities to a traditional OS | Differences from a traditional OS |
---|---|
Very parallel | Can handle only very specific (trivially parallelizable) types of problems |
Availability | Abstraction layer is poor |
Scheduling | |
Networked | |
Nodes may come and leave as they like (it is active when the computer is idle) | |
Same problem at the same time | |
Redundant/Fault tolerant | |
Allocation can be handle by system | |
Large problem managed by one system | |
Anyone can submit projects |
Group 2
Similarities to a traditional OS | Differences from a traditional OS |
---|---|
OK abstraction (for human communication/control) | Doesn't really take a single resources and split it up into smaller ones |
The programming API is stable | The human API (user interface) is not stable |
Able to separate resources such as wall posts, photos, etc | Limited control |
Group 3
Similarities to a traditional OS | Differences from a traditional OS |
---|---|
Has a file system | Somehow still not a true OS |
Provides hardware abstraction (users don't care how the requests are carried out) | |
Has an API |
Group 4
Similarities to a traditional OS | Differences from a traditional OS |
---|---|
Supports multiple location/users | Specific functionality (not abstract) |
Multiple servers around the world | |
Resource/Security management | |
Networked | |
Cross-platform (Desktop/Mobile) |