Inter-process Communication An Overview of Shared Memory and Messaging
Overview Inter-process Communication (IPC) Shared Memory Messaging Concept Associated Linux Commands Messaging 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 Problem Solver Process Processor Master Process
Linear Problem with Answer Caching (using IPC and multiple processors) Master Process Problem Solver Process Processor 1 Processor 2 Potential Problem Answer Cache Message Queue Cache Problem Solver Processes Processor 3
Management of IPC Operating System Level Process 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 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 Commands (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 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