This programming assignment is meant to:
1. Demonstrate ability to create a memory allocation program that determines the number of frames that are needed by a requesting client and assigns pages to available frames using a client-server architecture.
2. Demonstrate understanding of address translation used in a paged memory allocation scheme.
Part One:
Implement a paged memory allocation scheme. The server receives a memory request from each of several clients through the common FIFO. Each request will consist of an integer value that represents the size of the client's program, in memory units, and the client's process id (pid). The server continues to receive requests from clients until a request is made which cannot be granted, based on the available main memory. Print a message that denies the request and indicates that memory is full. Frames are selected on the basis of a free frame list.
Other responsibilities of the server:
• Print a "representation" of main memory showing which frames are allocated to which clients after each request is granted.
• Create and display a job table that keeps track of the processes.
• Respond to the client with the frame numbers that were assigned to that client.
Part Two:
Implement memory translation capability in which the server receives a logical (virtual) address of an instruction for a selected client and responds with the corresponding physical address. Your program will simulate the address translation process in the server. Continue to receive logical addresses until the user wishes to stop. At that point, shut down the server.