Commit Graph

378 Commits

Author SHA1 Message Date
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
Demetriades, Themis
9d35beb2e4 Merge branch 'virtual-memory' into 'page-swap-helpers'
# Conflicts:
#   src/vm/frame.c
#   src/vm/page.c
2024-12-01 21:44:17 +00:00
Themis Demetriades
7ce512305e fix: remove DVM flag when compiling outside of vm directory 2024-12-01 00:41:09 +00:00
Demetriades, Themis
775b73a3e9 Merge branch 'ethan-stack-growth' into 'virtual-memory'
Implement dynamic stack growth

See merge request lab2425_autumn/pintos_22!54
2024-11-30 23:21:33 +00:00
Demetriades, Themis
d8edc6d3fe Merge branch 'virtual-memory' into 'ethan-stack-growth'
# Conflicts:
#   src/Makefile.build
2024-11-30 23:21:16 +00:00
Demetriades, Themis
5682974f9d Merge branch 'vm/supplemental-page-table' into 'master'
Implement frame table & page eviction algorithm

See merge request lab2425_autumn/pintos_22!53
2024-11-30 23:01:04 +00:00
Themis Demetriades
6f85d7642d feat: implement clock (second-chance) page eviction algorithm 2024-11-30 22:40:13 +00:00
EDiasAlberto
94adc11f03 Feat: implement page_get_swap and page_set_swap functions 2024-11-30 03:21:34 +00:00
EDiasAlberto
40c553d68b Merge stack growth functions 2024-11-30 01:54:28 +00:00
EDiasAlberto
13de832586 Refactor stack growth code to remove messy conditions 2024-11-29 23:52:05 +00:00
EDiasAlberto
5c661c2e24 Feat: pointer validation checks string across multiple pages and handle kernel page faults 2024-11-29 23:49:49 +00:00
EDiasAlberto
5f40d83e66 Implement MMU-based user memory validation 2024-11-29 23:03:31 +00:00
Themis Demetriades
149bb42889 feat: implement clock (second-chance) page eviction algorithm 2024-11-29 19:30:47 +00:00
sBubshait
8047c65227 Update syscall handling of invalid pointers by preloading pages using the helper try_fetch_page 2024-11-29 18:55:28 +00:00
sBubshait
d047a3c242 Update Userprog Makefile to include vm files 2024-11-29 18:49:26 +00:00
sBubshait
c8b93c57ee Fix: Update writability of the last page after loading as a workaround to calculating the offset, w/ G 2024-11-29 15:45:44 +00:00
sBubshait
92d0b68243 Fix: Avoid closing the file after loading segments to be able to lazily load from file without opening, w/ G 2024-11-29 14:32:55 +00:00
sBubshait
801fd7d310 Implement page fault for lazy loading executables, w/ G 2024-11-28 20:03:50 +00:00
sBubshait
df20e0fdfe Update load_segment to load only the metadata of the pages to the SPT, w/ G 2024-11-28 18:35:49 +00:00
sBubshait
97e6e0fb1e Add SPT Helper Functions: Insert, Get, Cleanup w/ G 2024-11-28 18:18:52 +00:00
sBubshait
14fc96febf Implement Supplemental Page Table (SPT) per thread along with structure for its entries, w/ G 2024-11-28 17:54:15 +00:00
EDiasAlberto
4f84a83611 Refactor: abstract new page allocation to one general function and make helper functions static 2024-11-27 19:41:22 +00:00
EDiasAlberto
c74a8c55aa Implement stack growth for system calls and add stack pointer tracking to thread 2024-11-27 19:21:43 +00:00
EDiasAlberto
c670c29e47 update stack growth header to fit virtual memory naming format 2024-11-27 18:57:20 +00:00
Themis Demetriades
1e6b90da0d Implement skeleton for swapping frames into disk 2024-11-26 18:59:46 +00:00
Themis Demetriades
ea2725f606 feat: implement frame table without thread safety 2024-11-26 15:17:11 +00:00
EDiasAlberto
af7f2ba873 Fix: Magic number in stackgrowth.c 2024-11-26 04:54:00 +00:00