Highlights
Overview
A total of 40 marks are available for this assignment, representing 40% of your final grade. The specification is structured in such a way that you are only required to implement sections A and B to pass the assignment, provided your implementation is of sufficient quality. Subsequent sections represent additional, independent features of the assignment that will boost your marks.
Two programs are required: a server program “overseer” and a client program “controller”, networked via BSD sockets (as covered in week 7). The overseer runs indefinitely, processing commands sent by controller clients. The controller only runs for an instant at a time; it is executed with varying arguments to issue commands to the overseer, then terminates.
Core (10 marks)
• The controller must attempt to establish a connection with the overseer via BSD sockets. If a connection could not be established, the controller must write to stderr: Could not connect to overseer at
• The controller must forward all arguments (other than the address and port) to the overseer
Thread pool (5 marks)
• The overseer must be implemented as a thread pool using POSIX Threads. All threads must be started when the overseer is launched. The size of the thread pool must be fixed at 5.
• When the overseer accepts a connection, it must append to a global queue (implemented as a linked list) the request from the controller.
• After appending the request to the queue, one thread must be signalled, via a condition variable, to process the next request in the queue. Handling a request involves everything required by the overseer, including executing the process, redirecting output, logging, and signalling (if section D is implemented).
• Mutexes must be used to synchronize access to the queue, avoiding all race conditions.
Memory regulation (8 marks)
The process information pseudo-filesystem proc enables exploration of various kinds of information associated with any given process. Each process has a directory under this file system located at /proc/[pid]. One such file is /proc/[pid]/maps which lists the mapped memory regions of pid at any moment in time. You can find the detailed description of this file by searching for /proc/[pid]/maps in the man page. By summing the amount of memory mapped at each entry, one can determine the amount of memory a process is using at any time. Note that you must only count the entries with an inode of 0, as the others are memory-mapped files.
• Every second, for each running process, an entry must be appended to a global linked list where each entry contains the process’s PID, the current time, and the memory (in bytes) used by the process. If you have implemented section C, this necessarily involves an additional mutex.
This Engineering Assignment has been solved by our Engineering Experts at onlineassignmentbank. Our Assignment Writing Experts are efficient to provide a fresh solution to this question. We are serving more than 10000+ Students in Australia, UK & US by helping them to score HD in their academics. Our Experts are well trained to follow all marking rubrics & referencing style.
Be it a used or new solution, the quality of the work submitted by our assignment experts remains unhampered. You may continue to expect the same or even better quality with the used and new assignment solution files respectively. There’s one thing to be noticed that you could choose one between the two and acquire an HD either way. You could choose a new assignment solution file to get yourself an exclusive, plagiarism (with free Turnitin file), expert quality assignment or order an old solution file that was considered worthy of the highest distinction.
© Copyright 2026 My Uni Papers – Student Hustle Made Hassle Free. All rights reserved.