Lecture 0

Lecture 0
Anish Arora
CSE 6333
Introduction to Distributed Computing
Distribution means…
•
Multiple processes (or processors) that can communicate with
each other
 via shared memory or message channels
•
Each process has only partial knowledge of system parameters
 loosely coupled operation, MIMD architecture
•
Processes and communication are subject to faults

Cooperation of processes to achieve a common goal lacks
 a shared clock
 a global shared memory
 accurate failure detection
 resource: memory, time, power (sometimes)
Distribution goals
•
Scalability
•
Modularity and heterogeneity
•
Data sharing
•
Resource sharing
•
Accommodating geography
•
Reliability, fault-tolerance, security, timeliness, recoverability
•
Low cost, better performance to cost, offloaded maintenance
Distribution challenges
•
Concurrency yields complex behaviors
 Reasoning about non-determinism, about compositions
•
Consistency/coordination despite lack of global state/time
•
Failure is the “norm” and not the “exception”
 Spreading effects of corruption
 Many threats and several security exploit
 Economic and social impact of denial of service/compromise
•
Scalability
Distribution examples
•
Web servers (http)
•
Peer-to-peer services and overlays
•
Grid clusters, Cloud data centers
•
Multi-processor and multi-core systems
•
Wireless sensor network middleware and applications
•
Network and communication protocols
•
Ad hoc, mesh, mobile networks
•
Three tier database servers
•
Client server systems
•
Distributed operating systems
•
Social networks, agents
We will discuss…
•
Global time and global state
•
Reasoning about distributed programs
•
Problems in fault-tolerant distribution
•
Wireless sensor networks
•
Distributed data structures, peer-to-peer
•
Systems design: shared memory, message passing,
transactional memory
Course approach
•
Focus on common, fundamental problems
 In abstract form !
•
Develop and formally specify algorithms
•
Emphasize reasoning about correctness
 Properties of systems are validated thus
 Proofs also help analyze program performance
 Our focus is on deterministic reasoning
•
Some lab exercises (in the context of sensor networks)
•
You will present one published algorithmic concept
What we won’t cover
•
Particular distributed operating systems and their
implementation issues (see CSE 5911, formerly 762)
•
Programming technologies and middleware for distributed
computing, in particular CORBA, Java RMI, EJB, Javaspaces,
Jini, XML, and Web Services (see CSE 5234, formerly 769)
•
Security (see CSE 5473, formerly 651) and Cryptography (see
CSE 5351, formerly 723)
•
Configuring, managing, and maintaining of distributed systems
Course materials
Webpage: http://cse.ohio-state.edu/~anish/763/763.html
syllabus, slides, notes, readings, assignments, announcements
We’ll use a set of my course notes (some electronic, others not)
and papers from the literature
References
•
•
•
•
Paul Sivilotti, Course notes, Introduction to Distributed Systems, 2009
A. Kshemkalyani and M. Singhal and N. Shivaratri, Distributed
computing Concepts, Algorithms and Systems, Cambridge, 2008
Vijay K. Garg, Elements of Distributed Computing, Wiley, 2002
K. M. Chandy and J. Misra, Parallel Program Design: A Foundation,
Addison-Wesley, 1988
What we will assume
You should be familiar with:
 Boolean (propositional and predicate) logic
 C/C++ and/or script programming
I expect from you some mathematical maturity, including
the ability to learn and use new mathematical &
programming notations (NesC for instance)
My Expectations
•
Read the material assigned in class
•
Work independently and ethically on homeworks and labs
•
Ask questions
Grading plan
•
Homework and lab assignments
25%
•
In class quizzes (~5)
10%
•
Midterm quiz
25%
•
Presentation
15%
•
Take-home final quiz
25%
Working alone is a must ! Discuss questions with grader or
me as need be
Grading is relative. An A grade may require a lot less than
90%