Inter-process Communication

advertisement
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)
Problem
Solver
Process
Processor 1
Master
Process
Potential
Problem
Answer
Cache
Message
Queue
Cache
Problem
Solver
Processes
Processor 2
Processor 3
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 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
• 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
Download