Commit Graph

258 Commits

Author SHA1 Message Date
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
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
d8edc6d3fe Merge branch 'virtual-memory' into 'ethan-stack-growth'
# Conflicts:
#   src/Makefile.build
2024-11-30 23:21:16 +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
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
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
EDiasAlberto
3ef5264b6e feat: allow stack to grow for process up to 8MB in size 2024-11-26 04:43:25 +00:00
aedb72246b fix: do not acquire filesys_lock for tell and seek 2024-11-24 15:41:18 +00:00
e1f0258f8e fix: handle malloc result in init_process_result 2024-11-24 15:09:32 +00:00
8567434231 Use a single exit_status instead of two 2024-11-15 17:28:04 +00:00
sBubshait
8f82f9d747 Fix Bug in fd_counter initialisation when USERPROG is not defined 2024-11-15 16:57:16 +00:00
2566948a32 Implement hash table for child process results 2024-11-15 16:45:04 +00:00
sBubshait
ea3b3594ea Update fd_hash to use the fd itself as the hash value for performance, w/ G & E 2024-11-15 15:53:01 +00:00
sBubshait
6b1dbdd34f Update thread and syscall to use local fd counter instead global one, preventing overflow 2024-11-15 15:48:56 +00:00
sBubshait
7daf4fb079 Refactor process_exit to add more comments for readability 2024-11-15 15:35:07 +00:00
sBubshait
a7f1d519da Refactor process_wait to add more comments and improve readability 2024-11-15 15:09:24 +00:00
sBubshait
0f1bce2e88 Refactor process_init_stack to add asserts and comments 2024-11-15 14:52:21 +00:00
sBubshait
f4c900e56c Refactor process.c for comments, clarity and readability 2024-11-15 14:37:38 +00:00
sBubshait
82d45880f7 Update validate_user_pointer to start from the beginning of the page rather than the given ptr 2024-11-15 13:51:10 +00:00
sBubshait
1c757ecdfe Update syscall to add more helpful comments for clarity and readability 2024-11-15 13:51:10 +00:00
sBubshait
6a1d10a19b Refactor synch to follow PintOS curly braces indentation style in if statements 2024-11-15 13:51:10 +00:00
Themis Demetriades
7947ac78e8 Remove args-ovf user program binary, replacing with source for testing 2024-11-15 13:40:21 +00:00
Themis Demetriades
eff0837fdc Update stack initialization code to handle all possible overflows and implement a user program to test this 2024-11-15 13:35:58 +00:00
Themis Demetriades
5e2e7199f2 Fix memory leak in start_process 2024-11-14 21:03:55 +00:00
Themis Demetriades
e4036c715f Refactor start_process to hold file system lock for less time 2024-11-14 16:05:15 +00:00
Themis Demetriades
3a46e0f73a Update user proc stack initialization comments to be more helpful 2024-11-14 15:54:34 +00:00
Themis Demetriades
8821851459 Refactor process_execute to remove use of 'goto' 2024-11-14 14:42:26 +00:00
Themis Demetriades
1a2ff35231 Refactor process_execute to pass process start data as a local reference rather than perform memory allocation on the heap 2024-11-14 14:32:48 +00:00
f5e498e0a9 explicit thread_exit () when process_start () fails 2024-11-13 21:58:41 +00:00
d02b956221 Merge branch 'system-calls' into 'userprog-oom'
Add Fixes to Memory Leaks, Memory Access Validation, Synchronised Processes and Refactoring

See merge request lab2425_autumn/pintos_22!38
2024-11-13 19:20:19 +00:00
sBubshait
fa2fb4a711 Refactor system call comments for accuracy and grammar 2024-11-13 18:48:23 +00:00
sBubshait
31ea215805 Refactor validate_user_string to remove unnecessary variable to track length of str 2024-11-13 18:30:24 +00:00
e7cb16b301 Fix child_results loop accessing next after free() 2024-11-13 18:29:05 +00:00
sBubshait
9549ca28e5 Refactor syscall: Use EXIT_FAILURE instead of magic numbers & close files on failure 2024-11-13 18:18:41 +00:00
sBubshait
b1c5819469 Avoid masking the struct syscall_arguments using typedef for consistency 2024-11-13 18:06:51 +00:00
sBubshait
287130ca7b Update syscall.c to use syscall_exit on failure instead of calling thread_exit directly 2024-11-13 18:02:08 +00:00
sBubshait
4f586bb4da Fix Bug: Free all entries in the fd hashtable when the process exits, w/ E 2024-11-13 17:42:25 +00:00
sBubshait
d890c2353e Add constant MAX_SYSCALL_ARGS to avoid magic numbers [Gleb] 2024-11-13 17:16:15 +00:00