3d6e30119b
refactor: rename lru_lock to ftable_lock for greater clarity, and update comments to reflect this
Themis Demetriades
2024-12-06 15:31:27 +00:00
4104d2c852
fix: always add to frame owners when installing existing shared page.
Gleb Koval2024-12-06 15:23:41 +00:00
9ffcde6089
fix: implement ptable_lock for synchronising the SPT structure for insertions/accesses
vm/merged/themis-fix
Themis Demetriades
2024-12-06 14:12:28 +00:00
d389c15828
fix: acquire lru_lock before pinning frames to avoid race condition with eviction
EDiasAlberto
2024-12-06 13:20:43 +00:00
8ac34063d7
fix: disable 'shareable' flag to probe race conditions
Themis Demetriades
2024-12-06 10:56:38 +00:00
a34bbbed08
Update frame: When evicting an mmapped file page, write it back to the file if it is dirty
vm/mmap-write-back-on-eviction
sBubshait
2024-12-05 22:53:48 +00:00
833c1b0520
fix: only swap out shared pages once
Gleb Koval2024-12-05 22:37:14 +00:00
9aa9cdb91e
feat: implement proper destruction of pages, including for shared pages
Gleb Koval2024-12-05 22:23:50 +00:00
2811ea0eb3
fix: SPT never removes entries until process termination or special case
Themis Demetriades
2024-12-05 22:05:02 +00:00
6da855fe47
Implement validation of pointers and strings in syscalls with pinning and unpinning to protect against eviction
vm/frame-pinning
sBubshait
2024-12-05 21:12:31 +00:00
4dd6b6e928
fix: do not leak when inserting the same page twice, just update
Gleb Koval2024-12-05 19:38:27 +00:00
598189fddb
Merge branch 'vm/page-swap-synch' into vm/shared-read-only-executables
Gleb Koval2024-12-05 02:12:12 +00:00
ac31fb1e1e
feat: set accessed bit to allocated frames in page_load and get_usr_kpage
vm/page-swap-synch
EDiasAlberto
2024-12-05 01:41:23 +00:00
1a8eb1bbe5
Merge branch 'vm/memory-mapped-files' into vm/virtual-memory/saleh
sBubshait
2024-12-05 01:24:50 +00:00
52ec8fe779
Fix Bug: Grow stack if necessary in case of a page fault in the kernel context
sBubshait
2024-12-05 01:15:46 +00:00
f171a05108
Merge branch 'vm/stack-growth/saleh' into vm/virtual-memory/saleh
sBubshait
2024-12-05 00:51:03 +00:00
f06c91cf0d
ci: include linear page tests in VM test pipeline
Demetriades, Themis
2024-12-05 00:29:49 +00:00
5265fed288
Refactor stack growth to be helper functions in exception for easier merging
vm/stack-growth/saleh
sBubshait
2024-12-05 00:27:40 +00:00
19d5b02341
fix: remove use of USERPROG compiler flag specific code when the flag is disabled
Themis Demetriades
2024-12-04 23:48:51 +00:00
0288e13206
fix: don't discriminate between user and kernel page fault contexts for stack growth, lazy loading, and swapping
Themis Demetriades
2024-12-04 23:46:31 +00:00
60faf995ea
fix: lazy load executable files of user processes even when accessed in a kernel context
Themis Demetriades
2024-12-04 22:21:31 +00:00
61f6374006
Update gitlab CI to only run the tests associated with this feature (mmapped-files).
vm/memory-mapped-files
sBubshait
2024-12-04 22:06:09 +00:00
4efc9c8e3e
feat: add sanity checks to update branch of page_insert
Gleb Koval2024-12-04 22:04:27 +00:00
26a2d40325
Implement implicitly unmapping all mmapped files when a process exits. Refactor to reduce duplication
sBubshait
2024-12-04 22:00:59 +00:00
806d6bc19e
Refactor: Move destroying mmap data into process_exit instead of thread
sBubshait
2024-12-04 21:59:38 +00:00
723055f485
fix: only use lazy loading if VM flag is enabled
Themis Demetriades
2024-12-04 21:33:21 +00:00
ecbb4e74a5
Implement the unmap system call, writing back to the file if a page is dirty before removing from SPT
sBubshait
2024-12-04 19:07:28 +00:00
02b79d1934
Update mmap to add temporarily page_set_swap until swap is implemented
sBubshait
2024-12-04 18:13:07 +00:00
857cae3578
Update mmap to add a get helper function to find a mmap entry from its mapping
sBubshait
2024-12-04 18:08:05 +00:00
941e1e067a
Update SPT page entry to change type from EXECUTABLE to PAGE_FILE to capture mmaps in addition to executables
sBubshait
2024-12-04 17:51:30 +00:00
ad6e4b4059
Implement syscall_mmap to validate and then map all file data into a user address in memory
sBubshait
2024-12-04 17:42:53 +00:00
72fa0c1bbb
Fix Bug: Initialise the mmap table for the newly created thread rather than the current thread
sBubshait
2024-12-04 17:41:14 +00:00
4bf6914cfa
feat: incorporate lazy-loading data & helpers into supplemental page table
Themis Demetriades
2024-12-04 16:45:31 +00:00
fb73d694bf
fix: frame allocation now invalidates the victim process page directory, not the caller's
Themis Demetriades
2024-12-04 16:41:13 +00:00
67f16cb2a6
Update syscall.c to allow mmap and unmap system calls through helper handler functions for each
sBubshait
2024-12-04 15:31:53 +00:00
6b0f708d8f
Update mmap to add an insert helper function to allocate and add new mmap entries to the hash table
sBubshait
2024-12-04 15:26:00 +00:00
6e838aa06a
Fix Bug in thread.c: Only initialise and destroy mmap files table if VM is defined
sBubshait
2024-12-04 15:24:11 +00:00
a2f46f3b72
Add a mmap destroy function to cleanup all mmap hash table entries upon thread exit
sBubshait
2024-12-04 15:14:02 +00:00
1ce09a49a1
Add helper functions to initialise the memory-mapped files table and counter
sBubshait
2024-12-04 15:08:43 +00:00
1b73e415d7
fix: invalidate PTEs of evicted pages before eviction occurs to prevent modificationof pages mid-eviction
vm/page-swap
Themis Demetriades
2024-12-04 15:02:49 +00:00
b3042b5aa6
Update thread structure to add mmap files table and a counter for mappings of the thread
sBubshait
2024-12-04 14:56:52 +00:00
85aabd86cd
Update gitlab ci file to include mmap tests in the automated testing pipeline
sBubshait
2024-12-04 14:55:28 +00:00
acc768e177
Add mmap module in vm defining mmap_entry structure and some helper functions
sBubshait
2024-12-04 13:00:16 +00:00