Commit Graph

335 Commits

Author SHA1 Message Date
7f2e50a7d1 fix: free non-shared pages that are in swap + utility functions for frame owners. 2024-12-05 15:25:47 +00:00
71d91994c1 feat: allow frames to have multiple owner threads. 2024-12-05 14:44:59 +00:00
598189fddb Merge branch 'vm/page-swap-synch' into vm/shared-read-only-executables 2024-12-05 02:12:12 +00:00
Demetriades, Themis
f06c91cf0d ci: include linear page tests in VM test pipeline 2024-12-05 00:29:49 +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
4efc9c8e3e feat: add sanity checks to update branch of page_insert 2024-12-04 22:04:27 +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
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
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
c0ff53beff feat: proper cleanup for shared pages 2024-12-04 12:27:39 +00:00
f2aba977b4 fix: extract supplemental and shared_files initialisation 2024-12-04 11:17:46 +00:00
10bfffc4b0 fix: clear shared pages to avoid freeing them 2024-12-04 11:03:35 +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
6218b5e80d fix: invert result of file_compare for shared_file_less 2024-11-30 11:49:19 +00:00
EDiasAlberto
94adc11f03 Feat: implement page_get_swap and page_set_swap functions 2024-11-30 03:21:34 +00:00
sBubshait
dca773addc Update Exception To Debug Shared files, w/ G 2024-11-30 03:00:17 +00:00
EDiasAlberto
40c553d68b Merge stack growth functions 2024-11-30 01:54:28 +00:00
sBubshait
0b08893aaf Update page_load to create and use the shared read-only pages of executables, w/ G 2024-11-30 01:54:10 +00:00
sBubshait
f4910bdefb Initialised shared_files global hash table, w/ G 2024-11-30 01:23:33 +00:00
sBubshait
ba72345f96 Add data structures for shared executable files along with helper methods for them, w/ G 2024-11-30 01:15:50 +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