Assignment: Interprocess Communication and Synchronisation (Part 1)

Interprocess communication (IPC) is a facility provided by an operating system that allows multiple
processes to communicate with one another in order to exchange information and synchronise actions.
For this assignment, you will implement IPC communication between processes to explore the classic
producer-consumer problem. The tasks you complete will provide you with hands-on experience using
shared memory, as one example of IPC, as well as mutual exclusion and synchronisation techniques.
You will also gain further exposure to the Linux shell environment and system monitoring tools.
The assignment will be released in two parts. This is part one.
Requirements
• Demonstrate an understanding of operating system concepts, including processes, IPC, concurrency,
and performance monitoring.
• Develop functional C programs for the Unix/Linux environment.
• Make appropriate program design choices in relation to efficiency, correctness, and code style.
• Analyse performance monitoring data and discuss in relation to IPC concepts.
Topic outcomes achieved
• Provide you with an opportunity to apply your new knowledge of operating system concepts.
• Discuss possible alternative implementation strategies for core operating system features.
• Write programs that directly utilise core operating system features.
• Learn to use an operating system’s command line interface.
• Use system performance monitoring tools and explain observations.
• Use a virtualisation tool to run one operating system as a guest in another operating system.
Environment
Your code must compile and execute on Ubuntu 14.04.5 as installed on lab machines and provided as a
VirtualBox virtual machine (VM) on FLO. You are encouraged to use the VM with VirtualBox on your own
laptop/PC so you are not limited by lab availability.
COMP9812
Semester 2, 2018 1
All source code should be compiled using makefiles/gcc as used in lab checkpoints. If you require
assistance with configuring these tools, speak with your tutor or lab demonstrator.
Referencing
Please ensure you are familiar with the University’s policy on Academic Integrity. Any material you utilise
in your program code or report that is not your own original work must be acknowledged in a
bibliography included as part of your report. Additionally, references to code should also appear in a
comment at the top of the relevant source file.
Referencing format should be Harvard or IEEE.
Grading and submission
• The entire assignment is worth 40% of your topic grade.
• A total of 140 marks are available for Part 1.
• You must submit your work to the hand-in assignment box on FLO before the due date. A late penalty
of 5% of the total mark will be applied for every day late or part thereof up to a maximum of 10 days.
• Extension requests must be submitted through FLO at least 48 hours prior to the due date.
• Submissions must comprise a zip file containing your source code for each task and a report in PDF
format.
Pair work
• You may optionally choose to work in pairs.
• Pair submissions must include a cover sheet listing the names and FANs of both members.
• Both members of a pair must upload the same submission to FLO.
• Both members of a pair will receive the same mark.
Resources
A list of resources will be made available on FLO and updated as appropriate. For reference material on
Linux system calls and their associated C libraries, consult the following eBook (available online to all
students via the Flinders University library):
The Linux Programming Interface by Michael Kerrisk (2010)
A series of test messages has been provided with this handout. These may prove useful during testing