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
- Introduction to Operating Systems, Virtualization, Processes
- Scheduling
- Address Spaces, Memory API, and Segmentation
- Paging and Swapping
- Concurrency: Threads and Locks
- Lock Data Structures and Condition Variables
- Semaphores
- UNIX IPC
- Persistence: I/O Devices & RAID
- Files and Directories