diff --git a/code/lab2/kern/mm/memlayout.h b/code/lab2/kern/mm/memlayout.h index 12af91c..1e58466 100644 --- a/code/lab2/kern/mm/memlayout.h +++ b/code/lab2/kern/mm/memlayout.h @@ -104,8 +104,8 @@ struct Page { }; /* Flags describing the status of a page frame */ -#define PG_reserved 0 // the page descriptor is reserved for kernel or unusable -#define PG_property 1 // the member 'property' is valid +#define PG_reserved 0 // if this bit=1: the Page is reserved for kernel, cannot be used in alloc/free_pages; otherwise, this bit=0 +#define PG_property 1 // if this bit=1: the Page is the head page of a free memory block(contains some continuous_addrress pages), and can be used in alloc_pages; if this bit=0: if the Page is the the head page of a free memory block, then this Page and the memory block is alloced. Or this Page isn't the head page. #define SetPageReserved(page) set_bit(PG_reserved, &((page)->flags)) #define ClearPageReserved(page) clear_bit(PG_reserved, &((page)->flags)) diff --git a/code/lab3/kern/mm/memlayout.h b/code/lab3/kern/mm/memlayout.h index f0c6816..33b4ea4 100644 --- a/code/lab3/kern/mm/memlayout.h +++ b/code/lab3/kern/mm/memlayout.h @@ -107,8 +107,8 @@ struct Page { }; /* Flags describing the status of a page frame */ -#define PG_reserved 0 // the page descriptor is reserved for kernel or unusable -#define PG_property 1 // the member 'property' is valid +#define PG_reserved 0 // if this bit=1: the Page is reserved for kernel, cannot be used in alloc/free_pages; otherwise, this bit=0 +#define PG_property 1 // if this bit=1: the Page is the head page of a free memory block(contains some continuous_addrress pages), and can be used in alloc_pages; if this bit=0: if the Page is the the head page of a free memory block, then this Page and the memory block is alloced. Or this Page isn't the head page. #define SetPageReserved(page) set_bit(PG_reserved, &((page)->flags)) #define ClearPageReserved(page) clear_bit(PG_reserved, &((page)->flags)) diff --git a/code/lab4/kern/mm/memlayout.h b/code/lab4/kern/mm/memlayout.h index b6b4094..af1fcb9 100644 --- a/code/lab4/kern/mm/memlayout.h +++ b/code/lab4/kern/mm/memlayout.h @@ -100,16 +100,15 @@ struct e820map { struct Page { int ref; // page frame's reference counter uint32_t flags; // array of flags that describe the status of the page frame - unsigned int property; // used in buddy system, stores the order (the X in 2^X) of the continuous memory block - int zone_num; // used in buddy system, the No. of zone which the page belongs to + unsigned int property; // the num of free block, used in first fit pm manager list_entry_t page_link; // free list link list_entry_t pra_page_link; // used for pra (page replace algorithm) uintptr_t pra_vaddr; // used for pra (page replace algorithm) }; /* Flags describing the status of a page frame */ -#define PG_reserved 0 // the page descriptor is reserved for kernel or unusable -#define PG_property 1 // the member 'property' is valid +#define PG_reserved 0 // if this bit=1: the Page is reserved for kernel, cannot be used in alloc/free_pages; otherwise, this bit=0 +#define PG_property 1 // if this bit=1: the Page is the head page of a free memory block(contains some continuous_addrress pages), and can be used in alloc_pages; if this bit=0: if the Page is the the head page of a free memory block, then this Page and the memory block is alloced. Or this Page isn't the head page. #define SetPageReserved(page) set_bit(PG_reserved, &((page)->flags)) #define ClearPageReserved(page) clear_bit(PG_reserved, &((page)->flags)) diff --git a/code/lab5/kern/mm/memlayout.h b/code/lab5/kern/mm/memlayout.h index 825dd66..aa6a4ce 100644 --- a/code/lab5/kern/mm/memlayout.h +++ b/code/lab5/kern/mm/memlayout.h @@ -129,16 +129,15 @@ struct e820map { struct Page { int ref; // page frame's reference counter uint32_t flags; // array of flags that describe the status of the page frame - unsigned int property; // used in buddy system, stores the order (the X in 2^X) of the continuous memory block - int zone_num; // used in buddy system, the No. of zone which the page belongs to + unsigned int property; // the num of free block, used in first fit pm manager list_entry_t page_link; // free list link list_entry_t pra_page_link; // used for pra (page replace algorithm) uintptr_t pra_vaddr; // used for pra (page replace algorithm) }; /* Flags describing the status of a page frame */ -#define PG_reserved 0 // the page descriptor is reserved for kernel or unusable -#define PG_property 1 // the member 'property' is valid +#define PG_reserved 0 // if this bit=1: the Page is reserved for kernel, cannot be used in alloc/free_pages; otherwise, this bit=0 +#define PG_property 1 // if this bit=1: the Page is the head page of a free memory block(contains some continuous_addrress pages), and can be used in alloc_pages; if this bit=0: if the Page is the the head page of a free memory block, then this Page and the memory block is alloced. Or this Page isn't the head page. #define SetPageReserved(page) set_bit(PG_reserved, &((page)->flags)) #define ClearPageReserved(page) clear_bit(PG_reserved, &((page)->flags)) diff --git a/code/lab6/kern/mm/memlayout.h b/code/lab6/kern/mm/memlayout.h index 825dd66..aa6a4ce 100644 --- a/code/lab6/kern/mm/memlayout.h +++ b/code/lab6/kern/mm/memlayout.h @@ -129,16 +129,15 @@ struct e820map { struct Page { int ref; // page frame's reference counter uint32_t flags; // array of flags that describe the status of the page frame - unsigned int property; // used in buddy system, stores the order (the X in 2^X) of the continuous memory block - int zone_num; // used in buddy system, the No. of zone which the page belongs to + unsigned int property; // the num of free block, used in first fit pm manager list_entry_t page_link; // free list link list_entry_t pra_page_link; // used for pra (page replace algorithm) uintptr_t pra_vaddr; // used for pra (page replace algorithm) }; /* Flags describing the status of a page frame */ -#define PG_reserved 0 // the page descriptor is reserved for kernel or unusable -#define PG_property 1 // the member 'property' is valid +#define PG_reserved 0 // if this bit=1: the Page is reserved for kernel, cannot be used in alloc/free_pages; otherwise, this bit=0 +#define PG_property 1 // if this bit=1: the Page is the head page of a free memory block(contains some continuous_addrress pages), and can be used in alloc_pages; if this bit=0: if the Page is the the head page of a free memory block, then this Page and the memory block is alloced. Or this Page isn't the head page. #define SetPageReserved(page) set_bit(PG_reserved, &((page)->flags)) #define ClearPageReserved(page) clear_bit(PG_reserved, &((page)->flags)) diff --git a/code/lab7/kern/mm/memlayout.h b/code/lab7/kern/mm/memlayout.h index 825dd66..aa6a4ce 100644 --- a/code/lab7/kern/mm/memlayout.h +++ b/code/lab7/kern/mm/memlayout.h @@ -129,16 +129,15 @@ struct e820map { struct Page { int ref; // page frame's reference counter uint32_t flags; // array of flags that describe the status of the page frame - unsigned int property; // used in buddy system, stores the order (the X in 2^X) of the continuous memory block - int zone_num; // used in buddy system, the No. of zone which the page belongs to + unsigned int property; // the num of free block, used in first fit pm manager list_entry_t page_link; // free list link list_entry_t pra_page_link; // used for pra (page replace algorithm) uintptr_t pra_vaddr; // used for pra (page replace algorithm) }; /* Flags describing the status of a page frame */ -#define PG_reserved 0 // the page descriptor is reserved for kernel or unusable -#define PG_property 1 // the member 'property' is valid +#define PG_reserved 0 // if this bit=1: the Page is reserved for kernel, cannot be used in alloc/free_pages; otherwise, this bit=0 +#define PG_property 1 // if this bit=1: the Page is the head page of a free memory block(contains some continuous_addrress pages), and can be used in alloc_pages; if this bit=0: if the Page is the the head page of a free memory block, then this Page and the memory block is alloced. Or this Page isn't the head page. #define SetPageReserved(page) set_bit(PG_reserved, &((page)->flags)) #define ClearPageReserved(page) clear_bit(PG_reserved, &((page)->flags)) diff --git a/code/lab8/kern/mm/memlayout.h b/code/lab8/kern/mm/memlayout.h index 825dd66..aa6a4ce 100644 --- a/code/lab8/kern/mm/memlayout.h +++ b/code/lab8/kern/mm/memlayout.h @@ -129,16 +129,15 @@ struct e820map { struct Page { int ref; // page frame's reference counter uint32_t flags; // array of flags that describe the status of the page frame - unsigned int property; // used in buddy system, stores the order (the X in 2^X) of the continuous memory block - int zone_num; // used in buddy system, the No. of zone which the page belongs to + unsigned int property; // the num of free block, used in first fit pm manager list_entry_t page_link; // free list link list_entry_t pra_page_link; // used for pra (page replace algorithm) uintptr_t pra_vaddr; // used for pra (page replace algorithm) }; /* Flags describing the status of a page frame */ -#define PG_reserved 0 // the page descriptor is reserved for kernel or unusable -#define PG_property 1 // the member 'property' is valid +#define PG_reserved 0 // if this bit=1: the Page is reserved for kernel, cannot be used in alloc/free_pages; otherwise, this bit=0 +#define PG_property 1 // if this bit=1: the Page is the head page of a free memory block(contains some continuous_addrress pages), and can be used in alloc_pages; if this bit=0: if the Page is the the head page of a free memory block, then this Page and the memory block is alloced. Or this Page isn't the head page. #define SetPageReserved(page) set_bit(PG_reserved, &((page)->flags)) #define ClearPageReserved(page) clear_bit(PG_reserved, &((page)->flags))