Course Description

This course will introduce operating system principles and  design techniques.
Real-life examples of these principles and techniques will be given from
popular operating systems such as Linux and FreeBSD. The course will involve
 projects to  get hand-on experience on the covered topics. The following are
some of the topics that will be covered in the course:
  • Introduction to Computer Systems and Operating Systems
  • Processes
  • Threads
  • Inter-process Communication
  • Scheduling
  • Deadlocks: detection, recovery, avoidance
  • Memory management, virtual memory
  • Page replacement algorithms, models, paging systems
  • Input/Output; Hardware and Software I/O
  • Disks, clocks and terminals
  • File systems; files and directories
  • File system implementation
  • Multiprocessor and multi-computer operating systems
  • Distributed Systems
  • Networking and networking subsystem in an OS
  • AFS distributed file system
  • NFS network file system
  • Aboeba distributed operating system
  • Freenet peer2peer system

Prerequisites:

  • CS 101 and CS 224.
  • Fluency in C programming, since the projects will be done
    using C.