Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7752119
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T11:43:04+00:00 2026-06-01T11:43:04+00:00

I have a project where I am asked to develop an application to simulate

  • 0

I have a project where I am asked to develop an application to simulate how different page replacement algorithms perform (with varying working set size and stability period). My results:

  • Vertical axis: page faults
  • Horizontal axis: working set size
  • Depth axis: stable period

Are my results reasonable? I expected LRU to have better results than FIFO. Here, they are approximately the same.

For random, stability period and working set size doesnt seem to affect the performance at all? I expected similar graphs as FIFO & LRU just worst performance? If the reference string is highly stable (little branches) and have a small working set size, it should still have less page faults that an application with many branches and big working set size?

More Info

My Python Code | The Project Question

  • Length of reference string (RS): 200,000
  • Size of virtual memory (P): 1000
  • Size of main memory (F): 100
  • number of time page referenced (m): 100
  • Size of working set (e): 2 – 100
  • Stability (t): 0 – 1

Working set size (e) & stable period (t) affects how reference string are generated.

|-----------|--------|------------------------------------|
0           p        p+e                                  P-1

So assume the above the the virtual memory of size P. To generate reference strings, the following algorithm is used:

  • Repeat until reference string generated
    • pick m numbers in [p, p+e]. m simulates or refers to number of times page is referenced
    • pick random number, 0 <= r < 1
    • if r < t
      • generate new p
      • else (++p)%P

UPDATE (In response to @MrGomez’s answer)

However, recall how you seeded your input data: using random.random,
thus giving you a uniform distribution of data with your controllable
level of entropy. Because of this, all values are equally likely to
occur, and because you’ve constructed this in floating point space,
recurrences are highly improbable.

I am using random, but it is not totally random either, references are generated with some locality though the use of working set size and number page referenced parameters?

I tried increasing the numPageReferenced relative with numFrames in hope that it will reference a page currently in memory more, thus showing the performance benefit of LRU over FIFO, but that didn’t give me a clear result tho. Just FYI, I tried the same app with the following parameters (Pages/Frames ratio is still kept the same, I reduced the size of data to make things faster).

--numReferences 1000 --numPages 100 --numFrames 10 --numPageReferenced 20

The result is

enter image description here

Still not such a big difference. Am I right to say if I increase numPageReferenced relative to numFrames, LRU should have a better performance as it is referencing pages in memory more? Or perhaps I am mis-understanding something?

For random, I am thinking along the lines of:

  • Suppose theres high stability and small working set. It means that the pages referenced are very likely to be in memory. So the need for the page replacement algorithm to run is lower?

Hmm maybe I got to think about this more 🙂

UPDATE: Trashing less obvious on lower stablity

enter image description here

Here, I am trying to show the trashing as working set size exceeds the number of frames (100) in memory. However, notice thrashing appears less obvious with lower stability (high t), why might that be? Is the explanation that as stability becomes low, page faults approaches maximum thus it does not matter as much what the working set size is?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T11:43:05+00:00Added an answer on June 1, 2026 at 11:43 am

    These results are reasonable given your current implementation. The rationale behind that, however, bears some discussion.

    When considering algorithms in general, it’s most important to consider the properties of the algorithms currently under inspection. Specifically, note their corner cases and best and worst case conditions. You’re probably already familiar with this terse method of evaluation, so this is mostly for the benefit of those reading here whom may not have an algorithmic background.

    Let’s break your question down by algorithm and explore their component properties in context:

    1. FIFO shows an increase in page faults as the size of your working set (length axis) increases.

      This is correct behavior, consistent with Bélády’s anomaly for FIFO replacement. As the size of your working page set increases, the number of page faults should also increase.

    2. FIFO shows an increase in page faults as system stability (1 – depth axis) decreases.

      Noting your algorithm for seeding stability (if random.random() < stability), your results become less stable as stability (S) approaches 1. As you sharply increase the entropy in your data, the number of page faults, too, sharply increases and propagates the Bélády’s anomaly.

      So far, so good.

    3. LRU shows consistency with FIFO. Why?

      Note your seeding algorithm. Standard LRU is most optimal when you have paging requests that are structured to smaller operational frames. For ordered, predictable lookups, it improves upon FIFO by aging off results that no longer exist in the current execution frame, which is a very useful property for staged execution and encapsulated, modal operation. Again, so far, so good.

      However, recall how you seeded your input data: using random.random, thus giving you a uniform distribution of data with your controllable level of entropy. Because of this, all values are equally likely to occur, and because you’ve constructed this in floating point space, recurrences are highly improbable.

      As a result, your LRU is perceiving each element to occur a small number of times, then to be completely discarded when the next value was calculated. It thus correctly pages each value as it falls out of the window, giving you performance exactly comparable to FIFO. If your system properly accounted for recurrence or a compressed character space, you would see markedly different results.

    4. For random, stability period and working set size doesn’t seem to affect the performance at all. Why are we seeing this scribble all over the graph instead of giving us a relatively smooth manifold?

      In the case of a random paging scheme, you age off each entry stochastically. Purportedly, this should give us some form of a manifold bound to the entropy and size of our working set… right?

      Or should it? For each set of entries, you randomly assign a subset to page out as a function of time. This should give relatively even paging performance, regardless of stability and regardless of your working set, as long as your access profile is again uniformly random.

      So, based on the conditions you are checking, this is entirely correct behavior consistent with what we’d expect. You get an even paging performance that doesn’t degrade with other factors (but, conversely, isn’t improved by them) that’s suitable for high load, efficient operation. Not bad, just not what you might intuitively expect.

    So, in a nutshell, that’s the breakdown as your project is currently implemented.

    As an exercise in further exploring the properties of these algorithms in the context of different dispositions and distributions of input data, I highly recommend digging into scipy.stats to see what, for example, a Gaussian or logistic distribution might do to each graph. Then, I would come back to the documented expectations of each algorithm and draft cases where each is uniquely most and least appropriate.

    All in all, I think your teacher will be proud. 🙂

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

For a project I am working on, I have been asked to create an
I am currently working on a project. In this project I have set of
I have been asked to lend a hand on a hobby project that a
I have been asked to help with a C# project where the source code
I have project that I'm working on that is going to require a webserver.
I have project Emle in Launchpad . I set it to import from emle.svn.sourceforge.net
I have a project that I'm currently working on but it currently only supports
I've just be asked to work on a large portal project and have been
I have been asked to develop a system that collects data from a Sql
I have a page in my project that's using the google maps api along

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.