Introduction to Operating Systems

Aug – Dec 2020

  • I learnt about fundamentals of systems design while completing the projects for this class.

  • Specifically, I learnt how to :
    • implement protocols for file transfer, using socket based API, between two multithreaded processes running on the same machine,
    • implement protocols for file transfer, using shared memory based API, between two multithreaded processes running on the same machine, and
    • implement remote procedure calls for file transfer in a distributed system.
  • Tools used: C, Valgrind, C++, gRPC, Protobuf, POSIX C API for multithreading, shared memory and synchronization using semaphores

  • Theory concepts learnt
    • Polices used by operating systems scheduler, such as,
        First Come First Serve, Shortest Job First, Round Robin
    • Memory managment techiques like
        Paging and segmentation as well as caching policy using Least Recently Used(LRU)
    • Virtualization concepts, models and techniques,
        Virtual Machine Monitor/ Hypervisor responsibilites, paravirtualization, OS protection rings and modes
    • Distributed File Systems and Distributed Shared Memory
        consistency models such as sequential and weak, file sharing semantics like session based and periodic updates
    • Cloud computing terminology
        Infrastructure as a Service like Amazon EC2, Platform as a Service like Google App Engine, Software as a Service like Gmail

Selected Figures

Figure 1: Flow of control diagram, between two processes using shared memory, to showing read-write sequence implemented using POSIX semaphores. Keyed off examples and notes here.

Figure 2: Flow of control (a)between a client and web proxy via sockets and (b) between web proxy and a cache server using shared memory. CMQ in the figure represents a central message queue using POSIX API. SHM refers to Shared Memory.

Figure 3: Flow of Control diagram for Store command used in simple distributed file system. Locking for files prevents concurrent writes.