Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is Inter-process Communication (IPC)?
IPC is a way for different processes running on the same or different computers to exchange data and signals to coordinate their actions.
Click to reveal answer
beginner
How do pipes facilitate communication between processes?
Pipes allow one process to send data to another in a unidirectional flow, like a pipe carrying water from one place to another.
Click to reveal answer
beginner
What is shared memory in IPC?
Shared memory is a method where multiple processes access the same memory space to read and write data quickly without copying it between processes.
Click to reveal answer
intermediate
What is the main difference between pipes and shared memory?
Pipes send data in a stream from one process to another, while shared memory allows multiple processes to access the same memory area directly.
Click to reveal answer
intermediate
Why is synchronization important in shared memory IPC?
Because multiple processes can access the same memory at the same time, synchronization prevents conflicts and ensures data is consistent and not corrupted.
Click to reveal answer
Which IPC method allows data to flow in one direction between processes?
AMessage queue
BPipe
CShared memory
DSemaphore
✗ Incorrect
Pipes provide a unidirectional data flow from one process to another.
What is a key advantage of shared memory over pipes?
AOnly works between parent and child processes
BData is copied multiple times
CFaster data exchange by direct memory access
DData flows only one way
✗ Incorrect
Shared memory allows processes to access the same memory area directly, making data exchange faster.
Why do processes using shared memory need synchronization?
ATo prevent data corruption from simultaneous access
BTo increase data copying speed
CTo allow unidirectional data flow
DTo create separate memory spaces
✗ Incorrect
Synchronization prevents conflicts when multiple processes access shared memory at the same time.
Which IPC method is typically simpler to use but slower for large data?
AShared memory
BSignals
CSockets
DPipes
✗ Incorrect
Pipes are simpler but involve copying data, which can be slower for large amounts.
In which scenario is shared memory most useful?
AWhen processes need to share large amounts of data efficiently
BWhen processes need to send small messages quickly
CWhen processes run on different machines
DWhen only one process is running
✗ Incorrect
Shared memory is ideal for efficient sharing of large data between processes.
Explain how pipes work for inter-process communication and give a real-life example.
Think about how water flows through a pipe from one place to another.
You got /3 concepts.
Describe shared memory IPC and why synchronization is necessary.
Imagine several people writing on the same whiteboard at once.
You got /4 concepts.
Practice
(1/5)
1. Which of the following best describes a pipe in inter-process communication?
easy
A. A way to create new processes in the operating system
B. A memory area shared by multiple processes simultaneously
C. A method to encrypt data between processes
D. A channel that sends data in a stream from one process to another
Solution
Step 1: Understand what a pipe does
A pipe is used to send data in a continuous stream from one process to another, allowing communication.
Step 2: Compare with other options
Shared memory allows direct access to the same data, encryption is unrelated, and process creation is a different concept.
Final Answer:
A channel that sends data in a stream from one process to another -> Option D
Quick Check:
Pipe = Stream data channel [OK]
Hint: Pipes stream data between processes, shared memory shares data directly [OK]
Common Mistakes:
Confusing pipes with shared memory
Thinking pipes create processes
Assuming pipes encrypt data
2. Which of the following is the correct syntax to create a pipe in a Unix-like operating system using C?
easy
A. pipe(int *fd);
B. pipe(fd);
C. pipe(int fd[2]);
D. pipe(fd[2]);
Solution
Step 1: Recall the pipe function signature
The pipe function requires an integer array of size 2 passed by reference to store file descriptors.
Step 2: Match the correct syntax
The correct syntax is pipe(fd); where fd is an integer array of size 2 declared before the call.
Final Answer:
pipe(fd); -> Option B
Quick Check:
pipe needs int array of size 2 [OK]
Hint: pipe() needs int array of size 2 as argument [OK]
Common Mistakes:
Omitting the type in the argument
Passing pointer instead of array
Passing array without size
3. Consider the following pseudo-code using shared memory:
1. Create shared memory segment
2. Process A writes value 10 to shared memory
3. Process B reads value from shared memory
4. Process B writes value 20 to shared memory
5. Process A reads value from shared memory
What value will Process A read in step 5?
medium
A. 20
B. 10
C. 0
D. Undefined or error
Solution
Step 1: Track writes and reads in shared memory
Process A writes 10, then Process B reads 10, then Process B writes 20.
Step 2: Determine what Process A reads after Process B's write
Since shared memory is common, Process A will read the updated value 20.
Final Answer:
20 -> Option A
Quick Check:
Shared memory shows last written value [OK]
Hint: Shared memory shows latest written value to all processes [OK]
Common Mistakes:
Assuming Process A reads its own old value
Thinking reads cause errors
Confusing shared memory with pipes
4. A programmer tries to use a pipe for communication but notices the reading process blocks indefinitely. What is the most likely cause?
medium
A. Shared memory was used instead of a pipe
B. The pipe was created with incorrect syntax
C. The writing process has not sent any data yet
D. The pipe buffer size is too large
Solution
Step 1: Understand pipe blocking behavior
A reading process blocks if no data is available to read from the pipe.
Step 2: Identify the cause of blocking
If the writing process has not sent data, the reader waits indefinitely for input.
Final Answer:
The writing process has not sent any data yet -> Option C
Quick Check:
Reader blocks if no data sent [OK]
Hint: Reader waits until writer sends data through pipe [OK]
Common Mistakes:
Blaming syntax errors for blocking
Confusing pipe with shared memory
Assuming buffer size causes blocking
5. You want two processes to share a large data structure efficiently and allow both to read and write it. Which IPC method is best and why?
hard
A. Use shared memory because it allows direct access to the same data
B. Use sockets because they work over networks
C. Use message queues because they guarantee message order
D. Use pipes because they provide fast streaming of data
Solution
Step 1: Analyze requirements for sharing large data structure
Efficient sharing with read/write access means processes need direct access to the same memory.
Step 2: Compare IPC methods
Pipes stream data but are unidirectional and less efficient for large shared data. Message queues and sockets add overhead and are for message passing, not direct shared access.
Final Answer:
Use shared memory because it allows direct access to the same data -> Option A
Quick Check:
Shared memory = direct, efficient data sharing [OK]
Hint: Shared memory is best for large, read/write shared data [OK]