What is a distributed system?

  • autonomous computers
  • network
  • distributed system software: supports resource sharing and collaboration (global state)
  • Users see a single, integrated facility. (Fig 1.1)

    Examples

    Distributed UNIX

  • UNIX has evolved with distributed systems.
  • Each user has a computer.
  • Servers provide access to shared resources: files, printers, WAN, authentication.
  • Clients are programs running on user's computers that access servers.
  • NFS, RPC, NIS now commonly offered (under license from Sun)
  • Trend: toward distributed operating systems and openness: support to allow adding new features to support applications.
  • Commercial Applications

  • Airline reservations, automatic tellers (Fig 1.3), point-of-sale
  • Needs: high reliability, security, concurrent access, guaranteed response times, support wide geographic regions, allow for growth, integration with other systems
  • dedicated hardware, software, networks
  • Wide Area network applications

  • Internet: designed to be scalable: now millions of computers.
  • name resolution works because it is distributed.
  • Email, news, WWW
  • hard to hide WAN delays
  • Multimedia information access and conferencing applications

    (Fig 1.4)
  • images, audio, video
  • learning, games, shopping, remote conferencing
  • continuous media (audio,video) must be delivered at a fixed rate, else quality/comprehensibility suffers. Different media types need to be synchronized.
  • low latency (delay between event at one site and its display at another) is required to support telephony.
  • High bandwidth is needed. New technologies such as ATM can guarantee quality of service.
  • Key Characteristics

    Resource Sharing

    as in centralized timesharing systems:
  • hardware: printers, disks
  • data: tools, groupware
  • resource manager: (Fig 1.5) manages resources of a given type

    client-server model

    (as in UNIX) (Fig 1.6)
  • Server processes manage resources.
  • Client Processes issue requests to servers for access.
  • Servers may be clients of other servers: client/server is a role.
  • Services are abstract entities that may be provided by several servers.
  • Examples: news, mail, files, time, graphics
  • not all services can be supported (ram, cpu, network interface)
  • object-based model

    As in object-oriented programming (Fig 1.7)
  • Shared resources are objects
  • Objects have unique identifiers, even if the object migrates.
  • Message sent to object when resource requested, reply returned.
  • Uniform access to all resources.
  • object manager: procedures and data for a class of objects. Must exist on machine where object resides.
  • Openness

    How easily can the system by extended? (hw, sw) Can new resource-sharing services be added? Yes: publish the interfaces.

    Ex) UNIX. Interface is system calls. New features/hw supported by adding new system calls or extending existing calls (kernel hacking). hardware independence. IPC allow services to be added as user processes on any computer on the network: open distributed systems.

  • key interfaces are published
  • uniform IPC mechanism for shared resource access
  • can run on heterogeneous hardware and software
  • Concurrency

    Several processes executing at once. (Fig 1.8)
  • many users invoke commands simultaneously
  • many servers run concurrently
  • Concurrent access and updates must be synchronized.

    Scalability

    System and application software should not have to be changed when the system grows.

    Design philosophy: can always add more of any resource, as needed. (e.g., if file server loaded, add another. if a file is accessed a lot, replicate it (but keep it consistent))

    Fault Tolerence

    Detect them, recover from them.
  • hardware redundancy
  • software recovery
  • availability: % of time system is usable

    process group: concurrent processes that cooperate via shared communications (e.g., group broadcast or multicast)

    Transparency

    The degree to which the system appears as a whole (not separate components)
  • access transparency
  • location transparency
  • concurrency transparency
  • failure transparency
  • migration transparency
  • performance transparency
  • scaling transparency
  • network transparency= access + location transparency (e.g., rlogin...NOT; email address...IS)

    Historical Background

    (Fig 1.9)