Department of Mathematical and Digital Sciences
Bloomsburg University of Pennsylvania

Concurrent Programming and Foundations of Operating Systems

Home  •  Topics  •  Policies  •  C Style  •  Java Style  •  Resources

Spring 2019
Tu/Th 12:30-13:45 in Navy 220

Professor: Drue Coles
Phone: 570-389-4626
Office: 235 Ben Franklin Hall
Office Hours: Mo/We 11-12:45 and Tu/Th 11:30-12:15

Text: Operating System Concepts, Tenth Edition. Silberschatz, Galvin, and Gagne. John Wily ∧ Sons, Inc. © 2018

Prerequisites:  COMPSCI 221 (Advanced Java) and COMPSCI 255 (Data Structures using C++)

Overview.  It would be practically impossible for most people to use a computer if they first had to understand the technical details of the underlying hardware. An operating system is an interface that hides those details, presenting high-level abstractions of the hardware to users and user applications. It is also a resource allocator: concurrent threads and processes have conflicting needs for access to system resources like the CPU, main memory, disk storage, and network sockets. The operating system mediates these conflicts as fairly and efficiently as possible. This course examines the foundations of modern operating systems and provides practical experience with process creation, multithreading, CPU scheduling, disk scheduling, and memory management. Students also learn how to extend the Linux kernel with new system calls and dynamically loadable kernel modules.


  1. OS Foundations (Chapters 1-2)
  2. UNIX Concepts and History
  3. Processes (Chapter 3)
  4. Threads (Chapter 4)
  5. Synchronization (Chapter 5)
  6. CPU Scheduling (Chapter 6)
  7. Main Memory (Chapter 7)
  8. Virtual Memory (Chapter 8)
  9. Disk Scheduling (Chapter 9)
  10. Linux kernel hacking

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