Inter-process Communication An Overview of Shared Memory and Messaging
Overview Inter-process Communication (IPC) Shared Memory – Concept – Associated Linux Commands Messaging – Concept – Associated Linux Commands Summary of Concepts
Scope of Presentation Impart General Concepts Assumption Audience has General Programming Knowledge Present Two of Many IPC Strategies Recognition of Other IPC Methodologies
Overview of IPC Definition – Ability for processes to share information and resources, as well as provide critical notices of process status to other processes. Coordination of Processes – Integrity of Data – Protection of Order of Operations Complex problem solving – Non-linear Problems – Linear Problems
Traditional Linear Problem Master Process Problem Solver Process Processor
Linear Problem with Answer Caching (using IPC and multiple processors) Master Process Problem Solver Process Processor 1 Processor 2 Processor 3 Potential Problem Answer Cache Message Queue Cache Problem Solver Processes
Management of IPC Process Level Operating System Level Two Common Techniques – Shared Memory – Messaging
Shared Memory Allow two or more processes access to the same address space for reading and writing. What could go wrong! Process Level Management of Access Protecting Access with a Semaphore
Semaphore A semaphore is a global memory variable that processes use to manage access to memory and resources. Analogy: Classroom Speaking Permission Card – No speaking unless card is in Student’s Possession – Student Must Get the Card and Return the Card Simple Semaphore – Reading and Writing Complex Semaphore – Bank of Printers
Shared Memory Pros and Cons Pros – Good speed once access is granted. – Simple implementation Cons – Performance degradation as user access requests increase – Limited scalability and applicability to purpose
Linux OS: Semaphore Com mands (not inclusive) semget() – Initializes or gains access to a semaphore. semop() - Performs operations on a semaphore set. semctl() - Changes permissions and other characteristics of existing semaphore sets.
Messaging Allow processes to communicate via messages that are managed by the OS. – Data Requests – Processing Requests – Process Control Through Message Forwarding Direct Messaging – Synchronous (ex. Requesting data) – Asynchronous (ex. Print job) Indirect Messaging – Mailbox Concept – OS Controlled Queue
Messaging Pros and Cons Pros – Strong ability to scale solutions and retain performance – Ability to queue requests and allow processes to continue – Flexibility to create complex dependent operations through message redirection Cons – Complex implementation
Linux OS: Messaging Commands (not inclusive) msgget() - Initializes a new message queue. msgsnd() – Used to send messages to a message queue. msgrcv() – Used to receive messages from a message queue.
Summary of Concepts Inter-process Communication Shared Memory Messaging Customized Operating Systems – Messaging Commands – Semaphore – ??? Limits of IPC