Skip to content

Latest commit

 

History

History
29 lines (25 loc) · 1.58 KB

README.md

File metadata and controls

29 lines (25 loc) · 1.58 KB

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.