CST 334

Operating Systems

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.