Mid-term study Flashcards
What are the components of network communication at it’s most basic?

What are the two message based communication systems?

How do the two forms of message based communication systems compare?

How does network performance affect communication performance?

How does network size impact communications?

In general, what are resrouces?

What is DNS and what is the order and information the following provices:
hawk.cs.umanitoba.ca

In general, what is resource discovery?
Resourch Discovery: How does your program know what computer to connect to and what services/process are available to it?
What are 3 standard recourse discovery approaches?
- Know where the resource you are looking for is located
- Ask the server where the resource is located
- AKA directory-based lookup service
- A service that helps you find other services,
- But how do we find the directory of services?
- Ask “the network” where a resource is
- use multicast to send a message to a group of machines
- Broadcast to all machines
- Machines that are designed to respond will

What are the factors to consider for resource discovery protocols?

What are Extended failure modes?
Extended failure modes is the idea that we have new ways in which things can now go wrong with a distributed network, so we need to build our program from the ground up with failure modes in mind as it is VERY difficult to change later
What are the new “failure modes” that are introduced with distributed computing?
- Concurrency - having multiple process/cores running at the same time
- Communication - now we are dependant on a communication system
And combinations of the above
- failure at the server
- The connection is fine, but you can’t get any messages back
- failure of servers connection to network
- The server is fine, but as above, you can’t get any messages back
- the communication / messages recieved are garbled
- messaging is delayed or mis-ordered
We must be able to detect and deal with failures
What are some techniques for detecting failures?
- Timeouts
- Set a timer, if nothing happens we know something whent wrong (but what)
- Redudancy
- Have multiple machines complete the work and campare the results
What are techniques for recovering from communication failure?
- retransmission
- If we hit a timeout, request the information be resent
- if a server process fails, set it up so a new server is selected
Define scalability
The ability for a system to grow in size without making changes to the system design
What is the new scalability concern when dealing with distributed networks?
Dealing with inter-machine communication
How could we deal with the following problem:


As networks grow, they become slower and less reliable, how is this commonly/generally solved?
Algorithmic design is used to minimize communication.
More communication is usually not the answer, because in network terms, latency matters and makes distributed systems seem slow
How does user base size affect scalability of distributed sytems?
They can put extreme load on the system, whch will impact performance
Procide a concise definintion of a distributed system
A distributed (software) system is a program that conisists of multiple parts running on more than one computer interconnected via a network.
What is a mutex? How is it used to guard access to shared data and thereby
synchronize the threads accessing it?

- What is the primary difference between a process and a thread?

What is RMI? Why is an RMIregistry required in Java?
A more modern version of RPC (remote procedure call)
Serialization is done transparently through deep copy
In order to do RMI, you must first get a reference to the remote object.
You get this reference from a method parameter or a lookup service (RMIregistry)
Scripting languages are good for implementing “glue logic”. Briefly explain
why this makes them useful in developing distributed applications.
- Give three examples of scripting language features that make them useful
in creating distributed systems.
Scripting languages features:
- Interpreted - easy to use and distribute
- Weakly Typed - Manipulate arbitrary collections
- Powerful - pattern matching
- Offer easy access to OS provided info
Useful in dsitributed systems for:
- Component integration (glue logic)
- Rapid prototyping
- Portability (no nee dfor executables for different platforms)
- Associative arrays
- Pattern matching and manipulation
