/UNIX-Linux_Systems

introduction to the concepts, design, and structure of the UNIX operating system, using basic UNIX utilities, system resources in C programming, and POSIX threads to implement concepts and algorithms.

Primary LanguageC

UNIX-Linux_Systems

Course Objective:

To introduce the concepts, design, and structure of the UNIX operating system. To know the use of basic UNIX utilities. To know the principles of UNIX shell programming. To understand how to use system resources in C programming to implementing some of the concepts from the course Operating Systems. To know how to use POSIX threads to implement various algorithms.

Course Description:

Part One: UNIX Shell commands

  1. History of UNIX.
  2. Basic commands: ls, cp, ln, mkdir, rm, pwd, head, tail, man, date, apropos, cat, less, chmod, chown, find, xargs, sort, file, which, who.
  3. Text Manipulation: grep, regular expressions.
  4. Shell Programming: Redirection, variables, built-in commands.
  5. Shell Programming: Bash: loops, functions and arrays.

Part Two: C programming in UNIX

  1. Compiling C and Running C programs: arguments, stdio, exit codes, environment, libraries, make.
  2. File Accessing: open/close/read/write.
  3. Process Management: ps/kill, creation (system, fork, exec), signals, termination, wait, zombies.
  4. InterProcess Communication: Pipes.
  5. Threads: creation, parameters, join, return values, attributes, cancellation, sync/async, critical section, thread data, cleanup.
  6. Process and Thread Synchronization: using mutexes and conditions on pthreads.
  7. Creating and Using thread pools.

Lab:

  1. Commands in UNIX (not handed it)
  2. Command-line scripts in Bash.
  3. Bash programming: Bubble sort.
  4. C programming: Reading and Writing files in C.
  5. Create a user shell interface in C.
  6. Producer consumer problem with threads.