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  ..."  | 
				 General clean-up (grammar, spelling, wiki-markup, etc)  | 
				||
| 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  | |||
=== 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   | |||
* Examples: Map Reduce, cloud, cloud software (Google Drive)  | |||
=== 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?'''  | |||
* Feels like it is only a single node, but runs on many  | |||
* Do the things users take for granted on regular computers  | |||
* Doesn't actually work as a single (general use) computer - with 1000 computers one would expect it to be like a single computer with 1000 times the resources, but it's not  | |||
* 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  | |||
* 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  | '''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.  | |||
== 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)  | |||
|}  | |||
Revision as of 20:05, 11 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
 
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
 - Examples: Map Reduce, cloud, cloud software (Google Drive)
 
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?
- Feels like it is only a single node, but runs on many
 - Do the things users take for granted on regular computers
 - Doesn't actually work as a single (general use) computer - with 1000 computers one would expect it to be like a single computer with 1000 times the resources, but it's not
 - 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
 - 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.
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) |