SKR 5302: Advanced Distributed Computing

5. Chapter 5: Distributed Operating System

5.7. Asynchronous operation

Asynchronous operation

Making invocation concurrently

  • The middleware provides only blocking invocations, but the application spawns multiple threads to perform blocking invocations concurrently. 
  • Example is a web browser.
  • A web page typically contains several images and may contain many. 
    • The browser does not need to obtain the images in a particular sequence, so it makes several concurrent requests at a time. 
    • That way, the time taken to complete all the image requests is typically lower than the delay that would result from making the requests serially. 
    • Not only is the total communication delay less, in general, but the browser can overlap computation such as image rendering with communication. 

      Figure : Times for serialized and concurrent invocations



Asynchronous invocations

  • It is made with a non-blocking call, which returns as soon as the invocation request message has been created and is ready for dispatch. 
  • The client uses a separate call to collect the result of the invocation.
  • Example: Mercury communication system [Liskov and Shrira 1988]
    • An asynchronous operation returns an object called a promise. 
    • Eventually, when the invocation succeeds or failed, the Mercury system places the status and any return values in the promise. 
    • The caller uses the claim operation to obtain the result from the promise. 
    • The claim operation blocks until the promise is ready, whereupon it returns the results or exceptions from the call. 
    • The ready operation is available for testing a promise without blocking – it returns true or false according to whether the promise is ready or blocked. 

Operating system architecture

An open distributed system should make it possible to:

  • Run only that system software at each computer that is necessary for it to carry out its particular role in the system architecture – 
    • system software requirements can vary between, for example, mobile phones and server computers, and loading redundant modules wastes memory resources; 
  • Allow the software (and the computer) implementing any particular service to be changed independently of other facilities;
  • Allow for alternatives of the same service to be provided, when this is required to suit different users or applications;
  • Introduce new services without harming the integrity of the existing ones. 

Monolithic kernels

  • Massive – it performs all basic operating system functions and takes up in the order of megabytes of code and data – and that it is undifferentiated, i.e. it is coded in a non-modular way. 
  • To a large extent, it is intractable – altering any individual software component to adapt it to changing requirements is difficult. 
  • Example: UNIX operating system kernel, Sprite network operating system [Ousterhout et al. 1988]
  • Can contain some server processes that execute within its address space. 

Microkernels

  • The microkernel appears as a layer between the hardware layer and a layer consisting of major system components called subsystems. 
  • Middleware may use the facilities of the microkernel directly, or uses a language runtime support subsystem, or a higher-level operating system interface provided by an operating system emulation subsystem. 

    Figure : Monolithic kernel and microkernel


Comparison

  • Advantages of microkernel-based operating system
    • Extensibility
    • Ability to enforce modularity behind memory protection boundaries
    • Relatively small, more likely to be free of bugs
  • Advantages of monolithic kernel
    • Relative efficiency with which operations can be invoked. 
  • Windows employs a combination of both [Custer 1998], but its functionality is not designed to be routinely replaceable.