Software Engineering 435
Foundations of Distributed Systems I
Final Study Guide
Exam information and content
The exam will include material covered during the last five
lectures (mostly). The exam will include a variety of different problem
types, chosen from the following list:
- Terms, definitions, and examples.
- True/false.
- Multiple-choice.
- Fill-in and Short answers.
- Discussion.
- Programming problem possible: RMI callbacks
Important
disclaimer: This guide is simply a means of giving you some
help in studying for the final exam. It is not intended as a
comprehensive inventory of every topic discussed in class nor that
might be included on the exam. It is the student's responsibility to be
familiar with all the material covered through the fourth lecture and
in the homework assignments.
Topics Discussed
Topics from the first four lectures:
- Intro to distributed systems: architecture, modeling and scaling
- What's a Distributed System
- What do we want from a Distributed System?
- Openness
- Scalability
- 3 dimensions of scalability
- Problems of scalability
- Scaling techniques
- caching
- replicate
- Asynchronous
- Synchronous
- Elements of a Distributed System
- Networks
- WAN - Wide Area Network
- LAN - Local Area Network
- Hosts
- middleware
- architecture;
- Client/Server Model
- Multicomputer O/S
- Multiprocessor O/S
- Uniprocessor O/S
- multicomputers
- Various configurations of Distributed Systems.
- Example Distributed Systems
- Network operating systems
- NOS - Network Operating System
- DOS - Distributed Operating System
- Distributed file systems:
- Protocols and applications;
- Packets
- Protocols
- Connection-oriented Protocol
- Connectionless protocol
- Layering
- Layered protocols
- Application Layering
- Communication between processes
- Introduction to networking: IP, TCP, UDP
- Ports
- Sockets
- Binding
- Datagram Sockets
- UDP - User Datagram Protocol
- Programming in UDP
- Locating resources on the network
- Network Programming: Sockets
- Socket Programming with TCP
- Java I/O and sockets
- Middleware And Application Protocols
- Application Layer Protocols
- Program and Network Layer
- Documents
- HTTP
- URL - Uniform Resource Locator
- URN - Uniform Resource Name
- cookie
- Threads;
- Threads in Java
- Java Threads and the Runnable Interface
- Process vs. Thread
- Socket programming; threads
- Server types
- Multithreaded client/server
Topics covered after the midterm exam.
- Network Programming
- Java sockets for TCP
- Java sockets for UDP
- What can data types can be transmitted with Java sockets?
- RPC and XDR
- Serialization
- RMI
- Naming in RMI
- Remote method calls
- Serialization (Is everything serializable?)
- Passing parameters to remote methods (Passing a copy or
passing a stub (e.g. a reference))
- Call backs
- Garbage collection
- Naming
- RMI
- DNS
- X.500
- LDAP
- JNDI
- Security
- Cryptography
- public key encryption
- Confidentiality
- Authentication
- How does A authenticate herself to B using with a
symmetric key
- How does A authenticate herself to B using with
public/private keys.
- Integrity
- digital signatures, message digests, hash functions
- How do you verify that a received message is what it
purports to be using cryptography?
- Key Distribution and Certification
- What does a key distribution center do?
- What does a certificate authority do?
- Distributed Garbage Collection
- Simple reference counting
- Object gets "reference" and "unreference" messages
- Sending a copy of a remote reference has an
inherent
increment/decrement race condition if
the sender also deletes its reference. (Why?)
- Reference Listing (Used by RMI)
- Content Distribution
- Multimedia