# UPEM / System programming / Project: Memory paging simulator This file document explains the motivation behind implementation choices that have been made during the development of this paging simulator. ## Language choice This program has been implemented in Python. This language choice has been approved by Sylvain Cherrier on 2018-03-17. Python has been chosen for its conciseness, expressiveness, object and inheritance support and its various libraries easing the development of the interactive command line interface and swappable algorithms. The simplicity of this language enabled the developers to focus on the different paging strategies and their algorithmic value, freeing them from string management in the context of a simulator. Of course, a real paging system implementation would have been made in a lower level programming language, or even been made at the hardware level. ## Architecture The different paging algorithms all satisfy an implicit interface in the simulator. Possibility is offered to the user to select a paging algorithm of their choice. ## Page replacement algorithms ### Available strategies The following paging algorithms have been implemented and shortly described in the attached man pae: * FIFO (clock-variant) * random * LRU * second chance The following algorithms have NOT been implemented, but can easily be added: * NRU * NFU * aging * LDF ### Observations No useful conclusion regarding the efficiency of each algorithm could have been drawn from the use of the manually, user-operated simulator. Real-world in-context use is required.