aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ens.fr>2015-02-20 15:47:51 +0100
committerAlex Auvolat <alex.auvolat@ens.fr>2015-02-20 15:47:51 +0100
commit9ba449a6e5f9db20923fb9802eefe0f090ba5fff (patch)
treef0f58bfa44a30e61e30caf08af1cdf03bef822f0 /README.md
parent2d4d64189501c253ed6a5b5ff5e27da1cb34407a (diff)
downloadkogata-9ba449a6e5f9db20923fb9802eefe0f090ba5fff.tar.gz
kogata-9ba449a6e5f9db20923fb9802eefe0f090ba5fff.zip
Change mode of operation for mmap_file (see readme)
Diffstat (limited to 'README.md')
-rw-r--r--README.md17
1 files changed, 16 insertions, 1 deletions
diff --git a/README.md b/README.md
index 282054c..b74eeef 100644
--- a/README.md
+++ b/README.md
@@ -93,7 +93,22 @@ running the tests):
### Things to design
-* Cache architecture
+* Cache architecture :
+ - A RAM file is basically a bunch of pages that contain the data (rather than a segment of
+ malloc()'ed memory)
+ - A framebuffer device is basically a bunch of pages at a fixed hardware location, that cannot
+ grow
+ - In the two previous cases, the pages are never freed : they are not a cache, they are the
+ data itself.
+ - In the case of an on-disk file, the pages are a copy of the file's data that is originally
+ on-disk, and we might want to free these pages even while a process is using them, because
+ we can always reload them from the disk.
+ - An on-disk file with a page cache must be aware of all the places where the page is mapped,
+ so that it can unmap it when reclaiming pages.
+ - Simpler model : cached pages cannot be freed while the file is open with `FM_MMAP`
+* Reclaiming physical memory :
+ - Freeing some cached stuff, ie swapping pages from mmap regions
+ - Swapping pages from processes non-mmap regions (ie real data regions)
* IPC
* How does a process exit, what does it do, how do processes synchronize ?
* Have several threads in a single process