Software Development

Operating Systems

Overview

This course trains students to understand and programmatically utilize the resources of an Operating System to build larger programs. This course is suitable for students who have some knowledge of the C language and wish to become stronger software developers.

Who Should Take This Course

Prerequisites

Students should have experience programming in C. Knowledge of algorithms is highly recommended.

Why You Should Take This Course

Upon completion of this course, students will be able to:

  • Write programs using system calls
  • Describe the difference between a file handle and file descriptor
  • Employ anonymous pipes in a program
  • Identify various IPC methods
  • Design a concurrent program
  • Write a concurrent program
  • Describe the difference between a thread and a process
  • Identify deadlocks and resource contention in a program
  • Debug a parallel program
  • Employ mutexes and semaphores appropriately

Course Outline

Operating Systems

  1. Introduction to Operating Systems, Virtualization, Processes
  2. Scheduling
  3. Address Spaces, Memory API, and Segmentation
  4. Paging and Swapping
  5. Concurrency: Threads and Locks
  6. Lock Data Structures and Condition Variables
  7. Semaphores
  8. UNIX IPC
  9. Persistence: I/O Devices & RAID
  10. Files and Directories
Search UMBC Training Centers