The following are expectations of what you should know based on material discussed in lecture and from projects. Understand Projects 2 and 3. % Sun RPC For Sun RPC, understand the general mechanism for creating client and server stub routines using rpcgen. Know what is XDR. Know generally how parameters are passed and results are returned. Know how the port mapper daemon process is used. Understand how the use of UDP and TCP affects the Sun RPC mechanism. % Java RMI For Java RMI, understand the general mechanism for creating client and server stub routines using rpcgen. Know generally how parameters are passed and results are returned. Know how the RMI registry process is used. Know how RMI services are named. % Distributed File Systems, SGG Chapter 16 Be familiar with file characteristics observed as part of the work on the Andrew File System. Be familiar with the general approach used by the File Transfer Protocol (FTP) for sharing files between machines. Be familiar with the general approach used by Sun's Network File System (NFS) for sharing files between machines. Be familiar with the general approach used by the Andrew File System (AFS) for sharing files between machines. Be familiar with the naming issue in distributed file systems and how it relates to access and location transparency. Know what is involved if files are migrated in each of the three systems. Understand the different types of sharing semantics in distributed file systems. Know how caching is used in distributed file systems. Understand how the issue of scalability is handled by each system. Know how security is handled in each distributed file system. Understand the implications of a stateful vs. a stateless distributed file server. Be familiar with changes made for version 4 of NFS. Be familiar with what was learned from the Andrew File System work and the design principles that followed. Be familiar with the design assumptions and resulting design for the Google File System. Understand how the Shark File System combines of a distributed file system and a peer-to-peer mechanism. % Distributed Processing Understand the processor pool system model. Understand the workstation system model. Understand why it is expected that idle machines will be available in the workstation model leading to opportunities for load sharing. Understand how load and idleness can be determined on a machine. Understand the difference between load sharing and load balancing. Understand the distinction between a preemptive and nonpreemptive load sharing policy. Know what the transfer policy of a load sharing policy does. Know what the selection policy of a load sharing policy does. Know what the location policy of a load sharing policy does. Know what the information policy of a load sharing policy does. Know the difference between a sender-initiated and receiver-initiated load sharing policy. Be familiar with receiver-initiated approaches such as SETI, distributed.net or the Distriblets project. Be familiar with the highlights of the adaptive load sharing policies of Eager, Lazowska and Zahorjan. Be familiar with the highlights of the multicast-based load sharing policies of Wills and Finkel. % Distributed Coordination, SGG Chapter 17 Know how the "happened before" relationship is used by Lamport to construct a partial ordering amongs causally related events in a distributed system. Know how this relationship can be used to construct a logical clock of events in the system. Be familiar with the implications of clock drift (skew). Understand how Cristian's algorithm is used by a client to obtain the correct time from a server and adjust its own time. Understand distributed, centralized and token-based mutual exclusion algorithms. Understand approaches for distributed election algorithms. Understand how termination detection for a distributed computation can be done. % Web Understand factors that contribute to Web performance as a distributed system. Understand how distributed systems issues introduced in class are handled in the Web. % Distributed Objects Be familiar with features provided by JINI over traditional RPC mechanisms. Understand how discovery is done in JINI. Understand how services are registered and found in JINI. Understand the use of remote events and transactions in JINI. Understand the use of JavaSpaces to share data between processes in JINI.