Lecture #2: Distributed Operating Systems: an introduction

Topics for today

These topics are from Chapter 4 in the Advanced Concepts in OS text.

What is a distributed system?

Why build a distributed system?

System models:

Where is the knowledge of distributed operating systems likely to be useful?

Issues in Distributed Systems

Lack of Global Knowledge

Naming

Scalability

Compatibility

Process synchronization

Distributed Resource Management

Security

Structuring

Communication Networks

Communication Models

Message Passing Primitives

Example: Unix socket I/O primitives

#include <sys/socket.h>
ssize_t sendto(int socket, const void *message,
  size_t length, int flags,
  const struct sockaddr *dest_addr, size_t dest_len);
ssize_t recvfrom(int socket, void *buffer,
  size_t length, int flags, struct sockaddr *address,
  size_t *address_len);
int poll(struct pollfd fds[], nfds_t nfds,
  int timeout);
int select(int nfds, fd_set *readfds, fd_set *writefds,
  fd_set *errorfds, struct timeval *timeout);

You can find more information on these and other socket I/O operations in the Unix man pages.

RPC

With message passing, the application programmer must worry about many details:

RPC is introduced to help hide and automate these details.

RPC is based on a ``virtual'' procedure call model

RPC Issues

RPC Diagram