Advanced Unix Programming: Concurrency, IPC, and Process Coordination
This course, taught by Professor Spiegel at Kutztown University, dives into advanced concepts in Unix programming, focusing on concurrency, Unix internals, and interprocess communication. Students will explore essential topics like processes, critical sections, deadlocks, and various IPC mechanisms, including shared memory, semaphores, and message queues. The course emphasizes practical skills, including debugging and makefile creation, with resources linked for further learning. Ideal for those looking to deepen their understanding of operating systems and Unix programming.
Advanced Unix Programming: Concurrency, IPC, and Process Coordination
E N D
Presentation Transcript
CIS 552 Advanced Unix Programming Professor Spiegel Kutztown University
Topics: • Concurrency • Unix Internals • pipe, fork, exec, wait, signals, etc; • Interprocess Communication • Shared Memory, Semaphores, Message Queues? • Threads? (maybe) • Process Coordination • Critical Sections • Deadlock
Here’s where we start Time – used to order events Event – A (potentially) sensed change • Process – An executing program • Is a program an executing process? • No. A program can, when executed, cause the occurrence of multiple processes
A Couple of Definitions n. union; concurrence of events Concurrent – adj. acting in conjunction; agreeing; taking place at the same time; accompanying; n. a joint or contributory cause Concurrently – adv. to run together Parallel – adv. continuously at equal distance apart; precisely corresponding; similar; n. a line equidistant from another at all points; a thing exactly like another
B B D B D A C A C Precedence Graphs Directed Edge – Arrow from one node to another e.g. Assume A & B are processes A occurs before (precedes) B, OR, B occurs after (follows) A A Sequential • Facts: • A precedes B • A precedes C • A precedes D • B precedes D • C precedes D Question: What is B’s relationship to C?
Compiling & Debugging Run gdb under emacs to debug your programs Manual is available at URL: http://faculty.kutztown.edu/spiegel/Debugging/DebugPrimer.htm You must also be able to write makefiles on your own Manual is available at URL: http://faculty.kutztown.edu/spiegel/Makefile/Makefile.htm There is a link to each of these on my faculty home page