-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
110 lines (86 loc) · 2.9 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Extended the xv6 OS to include a Virtual Memory Manager with swapfile support and LRU cache. Supervised by Ed Jorgensen and Dr. Ajoy Datta in 2018 during my senior year at UNLV (RIP Dr. Datta :( )
Changes made:
console.c
---------
printaddr() method added
changed %p to print address instead of integer
defs.h
-------
Added struct vminfo_struct;
All new functions from kalloc.c
procsmemorystats() and find_proc_pte() from proc.c
vminfo and pgtabinfo internal functions from vm.c
swapfile functions from swap.c & usermode swapfile initialization in swapuser.c
exec.c
------
Removes LRU mappings from process before exec() overwrites page table
Debug output & new statistics for processes initialized
file.h & fs.c & fs.h
------
Support for double inode indirection added (for larger swapfile)
init.c
-------
init now spawns a temporary process to inititalize the swapfile before executing the shell
kalloc.c
---------
added statistical fields to kmem
kswapmem data structure
Added invoke_swapper(), kmaxprocsize(), kexistfreepages(), kfreepagecnt(), kallocatedpages(), kallocbeginning(), kgetfreelistptr()
freerange() debug info printing
kalloc() now invokes swapper to give a page, if none available
main.c
-------
Added kswapinit() step to initialize the swap space, just before userinit()
Makefile
--------
Now links swap.o
Now links swapuser.o (ULIB args)
Added 8MB SWAPFILE to fs.img
UPROGS now includes zeb_test
EXTRA now includes zeb_test.c, swap.c and swapuser.o
memlayout.h
------------
PHYSTOP changed to various values (commented out) for testing swapping
mkfs.c
-------
Debugging info added to main(), currently commented out (for doubly-indirect inodes)
balloc()/iappend() modified to allow doubly-indirect inodes
param.h
-------
FSSIZE increased from 1000 to 20985 for larger file system
printf.h
-------
printaddr() function added
%p and %x now print addresses, not integers
proc.h
-------
Statistical fields related to swapping and page faults added
swap.h, swap.c, swapuser.c (No modifications, files did not previously exist.)
------
Contains kernel & user swap/LRU API header & implementation
syscall.c & syscall.h & sysfile.c
---------
4 system calls added: vminfo, pgtabinfo, setswapfilefd, sbrk_force_swapout
sysproc.c
---------
sys_sbrk() modified for lazy allocation
sys_sbrk_force_swapout(), sys_vminfo(), and sys_pgtabinfo() added
trap.c
---------
Support for NULL reference protection, lazy allocation, swapping, and LRU added
types.h
---------
Added NULL constant and vminfo_struct data structure
user.h
-------
Added vminfo(), pgtabinfo(), setswapfilefd(), sbrk_force_swapout(), and swapinit() usermode API calls
usys.S
-------
Added vminfo, pgtabinfo, setswapfilefd, and sbrk_force_swapout system calls
vm.c
-----
Added support to copyuvm for lazy allocation, swapping, and LRU
Added vminfo_internal() & pgtabinfo_internal() methods
zeb_test.c
-----------
Various tests of functionality added for virtual memory