Changeset 623 for trunk/kernel/mm/ppm.h
- Timestamp:
- Mar 6, 2019, 4:37:15 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/mm/ppm.h
r611 r623 3 3 * 4 4 * Authors Ghassan Almaless (2008,2009,2010,2011,2012) 5 * Alain Greiner (2016,2017,2018 )5 * Alain Greiner (2016,2017,2018,2019) 6 6 * 7 7 * Copyright (c) UPMC Sorbonne Universites … … 37 37 * This structure defines the Physical Pages Manager in a cluster. 38 38 * In each cluster, the physical memory bank starts at local physical address 0 and 39 * contains an integer number of pages, defined by the <pages_nr> field in the39 * contains an integer number of small pages, defined by the <pages_nr> field in the 40 40 * boot_info structure. It is split in three parts: 41 41 * 42 42 * - the "kernel_code" section contains the kernel code, loaded by the boot-loader. 43 * It starts at PPN = 0 and the size is defined by the <pages_offset> field in the44 * boot_info structure.45 * - the "pages_tbl" section contains the physical page descriptors array. It starts46 * at PPN = pages_offset, and it contains one entry per small physical page in cluster.43 * It starts at local PPN = 0 and the size is defined by the <pages_offset> field 44 * in the boot_info structure. 45 * - the local "pages_tbl" section contains the physical page descriptors array. 46 * It starts at local PPN = pages_offset, and it contains one entry per small page. 47 47 * It is created and initialized by the hal_ppm_create() function. 48 48 * - The "kernel_heap" section contains all physical pages that are are not in the 49 * kernel_code and pages_tbl sections, and that have not been reserved by the 50 * architecture specific bootloader. The reserved pages are defined in the boot_info 51 * structure. 49 * "kernel_code" and "pages_tbl" sections, and that have not been reserved. 50 * The reserved pages are defined in the boot_info structure. 52 51 * 53 52 * The main service provided by the PMM is the dynamic allocation of physical pages … … 60 59 * 61 60 * Another service is to register the dirty pages in a specific dirty_list, that is 62 * also rooted in the PPM, in order to be able to s ave all dirty pages on disk.61 * also rooted in the PPM, in order to be able to synchronize all dirty pages on disk. 63 62 * This dirty list is protected by a specific remote_queuelock, because it can be 64 63 * modified by a remote thread, but it contains only local pages. … … 198 197 * . if page already dirty => do nothing 199 198 * . it page not dirty => set the PG_DIRTY flag and register page in PPM dirty list. 200 * - it releases the busylock prot cting the page flags.199 * - it releases the busylock protecting the page flags. 201 200 * - it releases the queuelock protecting the PPM dirty_list. 202 201 ***************************************************************************************** … … 214 213 * . if page not dirty => do nothing 215 214 * . it page dirty => reset the PG_DIRTY flag and remove page from PPM dirty list. 216 * - it releases the busylock prot cting the page flags.215 * - it releases the busylock protecting the page flags. 217 216 * - it releases the queuelock protecting the PPM dirty_list. 218 217 *****************************************************************************************
Note: See TracChangeset
for help on using the changeset viewer.