CST 334: Operating Systems
Students in this course will learn about the use and design of modern operating systems, focusing on Linux. On the "use" side, students will learn the Linux command line, to write shell scripts, and to build programs with GNU utilities like awk, sed, and make. On the "design" side, students will develop a deep understanding of process management, memory management, file systems, and concurrency, and how they apply to modern technologies like virtualization and cloud computing.
CST334 Labs
Each lab below was designed to help us understand the topics covered that week.
Github Link to Labs
Lab 1: Unix/Linux Commands and Basic Shell Programming
Objectives
- To learn Unix/Linux
- To use Command-line programs
- to develop sample shell programs
Lab 2: Programming in C and use of System Calls
Objectives
- To develop sample C programs
- to develop programs with two or more processes using fork(), exit(), wait() and exec() system calls
Lab 3: Inter-process Communication — Pipes
Objectives
- To develop multi-process application programs
- To demonstrate the use of pipes as an inter-process Communication (IPC) mechanism
Lab 4: Memory Management
Objectives
- To simulate a basic page replacement algorithm (FIFO)
- To evaluate the performance in terms of miss/hit rate of this algorithm
Lab 5: Developing Multi-Threaded Applications
Objectives
- To develop multi-threaded application programs
- To demonstrate the use of threads in matrix multiplication
Lab 6: Synchronization Using Semaphores
Objectives
- To use semaphores for synchronization
- To develop a C program to solve the producer - consumer problem
Final Project: Undergraduate Research
The goal of our final project was to exposes us to programs that offer research opportunities to undergraduate student. My team and I each conducted research an an organization that interested us, and we compiled a short video of what we discovered.