From 853cce9bb24aa6e699ea3906be1e4979c4e57c46 Mon Sep 17 00:00:00 2001 From: pacien Date: Tue, 1 May 2018 16:18:41 +0200 Subject: Add report --- report.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 report.md diff --git a/report.md b/report.md new file mode 100644 index 0000000..83c893f --- /dev/null +++ b/report.md @@ -0,0 +1,45 @@ +# 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. -- cgit v1.2.3