CPSC 457 Assignment 3 Auther: Chenzhe Qian The file boot.sh is a script that initializes everything (i.e., copies files, compiles kernel, and starts UML) The file fork.c contains the new system call. The file user.c is a user-level C program that to call new-defined system call in UML. The file unistd_64.h contains the modified info that invokes the new system call The files sharedVmExample1.c and sharedVmExample1.c are two examples of processes sharing memory IMPORTANT: The bonus part is NOT successful. It would run into infinite loop and crash the system. The new system call scans the size of virtual memory used by a process The following is usage for this assignment: Set up UML: ./boot.sh Mount remote directory: mount none /home -t hostfs -o /[path of directory] Copy unistd.h to /usr/include/asm-x86_64: cp unistd.h /usr/include/asm-x86_64 Compile and run user level C program: gcc -o user user.c ./user [UID] --uid = -1 indicates to scan all users, -2 indicates to run bonus part Compile and run two shared memory example: gcc sharedVmExample1.c -o eg1 --eg1, create a process that sharing memory ./eg1 & gcc sharedVmExample2.c -o eg2 --eg2, create a process that releasing the shared memory by eg1 ./eg2 & For test results, see 457_Assignment3_test.txt