Projects of the first period (IPC exercises)
Projects marked bold are more difficult. You must use c or c++ language to implement a project. Testing must include "stress test", meaning that we load the "server side" with many request, generated by programs. For example we start many clients simultaneously using a command file. (You can develop your software in LINUX- environment and port it easily to HP-UX or even demonstrate it using TELNET- connection from EVITECH).
One project (numbers from 1 to 36) is assigned to every sudent. The work must be ready at the end of the first period.
A simplified simulation of a data communication packet switch software
We simulate a packet switch node in UNIX environment. The packet switch is a UNIX process, which takes packets from simulated lines by and routes packets to lines using addresses in a packet header and a routing table in the packet node. For testing purposes we have to have programs to send (initiate) packet data to lines and programs to get and display data from lines. The switch problem generates the following different versions and project numbers:
A buffer allocation server
The server side of the system allocates (and releases) a fixed size buffer as an answer to a request of a client. The server sends to a client identification information necessary to access the right memory area ( Shared memory name and offset from the beginning). A client uses the buffer for testing purposes. Buffers are reserved from a UNIX shared memory segment. The problem generates the following different versions and project numbers:
A consumer/produced type disc buffering
We have program which read disk files and insert data to memory buffers. Consumer reads data and displays it for testing purposes. If all buffers are full produced waits if all buffers are empty consumed waits. The number of memory buffers is N and reading program(s) takes buffers on "first in first out basis". The disc data buffering area is UNIX- shared memory segment and "collisions" of programs are avoided by UNIX- semaphores. The problem generates the following different versions and project numbers:
Search server
We demonstrate a common client/server model. We have a server program which takes sorted integer set and value to be searched from a communication media and returns the order number of the found element or error indicator if the value to be searched is not in the set. Clients generate and send requests and display results. The server "deamon" "forks" individual server for every request. The individual server dies when the work has been done. The problem generates the following different versions and project numbers:
New "cron" service
UNIX has service "cron" which makes possible to start some command at a specified time. Our new simplified deamon (server) takes requests from a communication channel. A request has time interval in seconds from current time to the time to start the program and the name of the program to be started. The problem generates the following different versions and project numbers:
A simplified token ring simulation
We have set of programs simulating "token ring" local area network architecture. Programs has two parts: a connection to the ring and a user part of the ring (reading writing). A token travels whole time in the ring and if a node has something to send it inserts the data packet in the communication channel. The problem generates the following different versions and project numbers: