Commit Graph

354 Commits

Author SHA1 Message Date
sBubshait
e047e7aa45 Maintain a reference to the frame allocated in the SPT 2024-12-06 02:15:51 +00:00
Saleh Bubshait
b2b3f77a91 Merge branch 'vm/frame-pinning' into 'vm/virtual-memory/saleh'
Implement frame-pinning to protect against eviction leading to deadlocks

See merge request lab2425_autumn/pintos_22!58
2024-12-05 21:55:43 +00:00
sBubshait
6da855fe47 Implement validation of pointers and strings in syscalls with pinning and unpinning to protect against eviction 2024-12-05 21:12:31 +00:00
sBubshait
e03273756d Update frame table to add a pinned flag and protect those from being evicted 2024-12-05 17:52:01 +00:00
EDiasAlberto
5cf79b5389 fix: add check to mmap to ensure file isn't mapped over stack segment 2024-12-05 16:05:08 +00:00
EDiasAlberto
e779e8ac7c fix: modify stack growth to use frame allocation to allow for page swapping 2024-12-05 04:39:50 +00:00
sBubshait
16db01d3d8 Refactor: Check if page is in a swap in fetch_page instead of the page fault handler 2024-12-05 03:17:18 +00:00
sBubshait
c12cd95093 Fix issues with merging, duplicate references and definition of VM 2024-12-05 02:27:48 +00:00
sBubshait
f13fd435cd Merge remote-tracking branch 'origin/vm/page-swap-synch' into vm/virtual-memory/saleh
# Conflicts:
#	.gitlab-ci.yml
#	src/Makefile.build
#	src/threads/thread.c
#	src/userprog/exception.c
#	src/userprog/process.c
#	src/vm/frame.c
#	src/vm/page.c
#	src/vm/page.h
#	src/vm/stackgrowth.c
#	src/vm/stackgrowth.h
2024-12-05 02:21:53 +00:00
EDiasAlberto
ac31fb1e1e feat: set accessed bit to allocated frames in page_load and get_usr_kpage 2024-12-05 01:41:23 +00:00
sBubshait
1a8eb1bbe5 Merge branch 'vm/memory-mapped-files' into vm/virtual-memory/saleh 2024-12-05 01:24:50 +00:00
sBubshait
52ec8fe779 Fix Bug: Grow stack if necessary in case of a page fault in the kernel context 2024-12-05 01:15:46 +00:00
sBubshait
f171a05108 Merge branch 'vm/stack-growth/saleh' into vm/virtual-memory/saleh
# Conflicts:
#	src/userprog/exception.c
#	src/userprog/process.c
#	src/userprog/syscall.c
#	src/vm/frame.c
#	src/vm/page.c
#	src/vm/page.h
2024-12-05 00:51:03 +00:00
Demetriades, Themis
f06c91cf0d ci: include linear page tests in VM test pipeline 2024-12-05 00:29:49 +00:00
sBubshait
5265fed288 Refactor stack growth to be helper functions in exception for easier merging 2024-12-05 00:27:40 +00:00
Themis Demetriades
19d5b02341 fix: remove use of USERPROG compiler flag specific code when the flag is disabled 2024-12-04 23:48:51 +00:00
Themis Demetriades
0288e13206 fix: don't discriminate between user and kernel page fault contexts for stack growth, lazy loading, and swapping 2024-12-04 23:46:31 +00:00
Themis Demetriades
60faf995ea fix: lazy load executable files of user processes even when accessed in a kernel context 2024-12-04 22:21:31 +00:00
sBubshait
61f6374006 Update gitlab CI to only run the tests associated with this feature (mmapped-files). 2024-12-04 22:06:09 +00:00
sBubshait
26a2d40325 Implement implicitly unmapping all mmapped files when a process exits. Refactor to reduce duplication 2024-12-04 22:00:59 +00:00
sBubshait
806d6bc19e Refactor: Move destroying mmap data into process_exit instead of thread 2024-12-04 21:59:38 +00:00
Themis Demetriades
723055f485 fix: only use lazy loading if VM flag is enabled 2024-12-04 21:33:21 +00:00
Themis Demetriades
1e236a5c47 Merge branch 'vm/lazy-loading' into vm/page-swap-synch 2024-12-04 19:11:37 +00:00
sBubshait
ecbb4e74a5 Implement the unmap system call, writing back to the file if a page is dirty before removing from SPT 2024-12-04 19:07:28 +00:00
sBubshait
02b79d1934 Update mmap to add temporarily page_set_swap until swap is implemented 2024-12-04 18:13:07 +00:00
sBubshait
857cae3578 Update mmap to add a get helper function to find a mmap entry from its mapping 2024-12-04 18:08:05 +00:00
sBubshait
941e1e067a Update SPT page entry to change type from EXECUTABLE to PAGE_FILE to capture mmaps in addition to executables 2024-12-04 17:51:30 +00:00
sBubshait
ad6e4b4059 Implement syscall_mmap to validate and then map all file data into a user address in memory 2024-12-04 17:42:53 +00:00
sBubshait
72fa0c1bbb Fix Bug: Initialise the mmap table for the newly created thread rather than the current thread 2024-12-04 17:41:14 +00:00
Themis Demetriades
4bf6914cfa feat: incorporate lazy-loading data & helpers into supplemental page table 2024-12-04 16:45:36 +00:00
Themis Demetriades
fb73d694bf fix: frame allocation now invalidates the victim process page directory, not the caller's 2024-12-04 16:41:13 +00:00
sBubshait
67f16cb2a6 Update syscall.c to allow mmap and unmap system calls through helper handler functions for each 2024-12-04 15:31:53 +00:00
sBubshait
6b0f708d8f Update mmap to add an insert helper function to allocate and add new mmap entries to the hash table 2024-12-04 15:26:00 +00:00
sBubshait
6e838aa06a Fix Bug in thread.c: Only initialise and destroy mmap files table if VM is defined 2024-12-04 15:24:11 +00:00
sBubshait
a2f46f3b72 Add a mmap destroy function to cleanup all mmap hash table entries upon thread exit 2024-12-04 15:14:02 +00:00
sBubshait
1ce09a49a1 Add helper functions to initialise the memory-mapped files table and counter 2024-12-04 15:08:43 +00:00
Themis Demetriades
1b73e415d7 fix: invalidate PTEs of evicted pages before eviction occurs to prevent modificationof pages mid-eviction 2024-12-04 15:02:49 +00:00
sBubshait
b3042b5aa6 Update thread structure to add mmap files table and a counter for mappings of the thread 2024-12-04 14:56:52 +00:00
sBubshait
85aabd86cd Update gitlab ci file to include mmap tests in the automated testing pipeline 2024-12-04 14:55:28 +00:00
sBubshait
acc768e177 Add mmap module in vm defining mmap_entry structure and some helper functions 2024-12-04 13:01:01 +00:00
Themis Demetriades
47a7dfae04 refactor: add comments describing each type of page fault dealt by the page fault handler 2024-12-03 21:47:59 +00:00
EDiasAlberto
9a3c8a1c38 fix: grow stack upon page fault in kernel context to support syscall stack growth 2024-12-03 20:56:10 +00:00
Themis Demetriades
08eafcf7ef feat: implement page swapping 2024-12-03 16:53:47 +00:00
Themis Demetriades
df7d847978 fix: remove stack fault checks for page faults outside user non-present addresses 2024-12-02 21:07:17 +00:00
Demetriades, Themis
fbcd3c9f19 ci: include dynamic stack growth tests in VM test pipeline 2024-12-02 20:57:05 +00:00
Themis Demetriades
6190d1bee6 fix: disable dynamic stack growth when VM flag is disabled 2024-12-02 20:44:54 +00:00
Themis Demetriades
6adf2e743b refactor: dynamic stack growth functions to follow code style 2024-12-02 19:50:40 +00:00
Themis Demetriades
05a48cf9c6 refactor: page fault exception handler follows code style 2024-12-01 23:36:55 +00:00
Themis Demetriades
bb16abdc0d refactor: supplemental page table helper functions follow code style 2024-12-01 23:30:50 +00:00
Demetriades, Themis
8e278b349a Merge branch 'page-swap-helpers' into 'virtual-memory'
Implement helper functions for managing the supplemental page table

See merge request lab2425_autumn/pintos_22!55
2024-12-01 21:47:30 +00:00