Lines Matching refs:is

6 Demand paging provides a mechanism where data is only brought into physical
7 memory as required by current execution context. The physical memory is
16 there is a free page frame. If there is no more free page frames,
17 the eviction algorithm is invoked to select a data page to be paged out,
19 page has been modified after it is first paged in, the data will be
20 written back into the backing store. If no modifications is done or
21 after written back into backing store, the data page is now considered
22 paged out and the corresponding page frame is now free. The paging code
25 page into the free page frame. Now the data page is in physical memory
31 in anticipation that they are required in the near future. This is used to
43 A data page is a page-sized region of data. It may exist in a page frame,
50 A page frame is a page-sized physical memory region in RAM. It is a
51 container where a data page may be placed. It is always referred to by
53 addresses. For every page frame, a ``struct k_mem_page_frame`` is instantiated to
56 * ``K_MEM_PAGE_FRAME_FREE`` indicates a page frame is unused and on the list of
57 free page frames. When this flag is set, none of the other flags are
60 * ``K_MEM_PAGE_FRAME_PINNED`` indicates a page frame is pinned in memory
66 * ``K_MEM_PAGE_FRAME_MAPPED`` is set when a physical page is mapped to
69 * ``K_MEM_PAGE_FRAME_BUSY`` indicates a page frame is currently involved in
79 This is used as an intermediate page for page in/out operations. This
82 address space. If this page is provided as-is to backing store,
84 implications as the data page is no longer read-only to other parts of
91 :kconfig:option:`CONFIG_DEMAND_PAGING_TIMING_HISTOGRAM_NUM_BINS` is enabled:
96 if :kconfig:option:`CONFIG_DEMAND_PAGING_THREAD_STATS` is enabled
99 :kconfig:option:`CONFIG_DEMAND_PAGING_TIMING_HISTOGRAM` is enabled, and
100 :kconfig:option:`CONFIG_DEMAND_PAGING_TIMING_HISTOGRAM_NUM_BINS` is defined.
101 Note that the timing is highly dependent on the architecture,
102 SoC or board. It is highly recommended that
119 The eviction algorithm is used to determine which data page and its
124 * :c:func:`k_mem_paging_eviction_init()` is called to initialize
125 the eviction algorithm. This is called at ``POST_KERNEL``.
127 * :c:func:`k_mem_paging_eviction_add()` is called each time a data page becomes
130 * :c:func:`k_mem_paging_eviction_remove()` is called when a data page is no
132 pinned, gets unmapped or is about to be evicted.
134 * :c:func:`k_mem_paging_eviction_select()` is called to select
135 a data page to evict. A function argument ``dirty`` is written to
137 since it is first paged in. If the ``dirty`` bit is returned
143 There is one additional function which is called by the architecture's memory
145 :c:func:`k_mem_paging_eviction_accessed()`. This is used by the LRU algorithm
151 sample. This is a very simple algorithm which ranks data pages on whether
152 they have been accessed and modified. The selection is based on this ranking.
154 * An LRU (Least-Recently-Used) eviction algorithm is also available. It is
155 based on a sorted queue of data pages. The LRU code is more complex compared
156 to the NRU code but also considerably more efficient. This is recommended for
161 If :kconfig:option:`CONFIG_EVICTION_TRACKING` is enabled for an algorithm,
169 Backing store is responsible for paging in/out data page between
173 * :c:func:`k_mem_paging_backing_store_init()` is called to
176 * :c:func:`k_mem_paging_backing_store_location_get()` is called to
178 This ``location`` token is passed to
182 * :c:func:`k_mem_paging_backing_store_location_free()` is called to
186 * :c:func:`k_mem_paging_backing_store_location_query()` is called to obtain
199 * :c:func:`k_mem_paging_backing_store_page_finalize()` is invoked after