Вспомогательные функции кэша подкачки
Для работы с кэшем подкачки ядро пользуется несколькими функциями. Они, главным образом, основаны на функциях, Впоследствии мы покажем, как эти функции сравнительно низкого уровня вызываются функциями высокого уровня для выгрузки и загрузки страниц, когда это необходимо. Основные функции для работы с кэшем подкачки:
- lookup swap cache — находит страницу в кэше подкачки по идентификатору выгруженной страницы, переданному в качестве параметра, и возвращает адрес дескриптора страницы. Функция возвращает 0, если страница отсутствует в кэше. Чтобы найти требуемую страницу, функция вызывает функцию radix_tree_iookup, передавая ей в качестве параметров указатель на swapper space.page tree (базисное дерево для страниц в кэше подкачки) и идентификатор выгруженной страницы;
- add to swap cache — заносит страницу в кэш подкачки. Эта функция сначала вызывает функцию swap dupiicateO для проверки корректности страничного слота, полученного в качестве параметра, и для увеличения счетчика обращений страничного слота. Затем она вызывает функцию radix tree insert (), чтобы занести страницу в кэш подкачки. В конце работы она увеличивает счетчик ссылок страницы и устанавливает флаги
PG_swapcache И PG_locked;
- add_to_swap_cache — аналогична функции add_to_swap_cache , НО не
вызывает функцию swap dupiicateO перед занесением страницы в кэш подкачки;
- deiete from swap cache — удаляет страницу из кэша подкачки при помощи функции radix tree deiete , уменьшает соответствующий счетчик обращений в массиве swap map и уменьшает счетчик ссылок страницы;
- free page and swap cache — удаляет страницу из кэша подкачки, если никакой процесс режима пользователя, кроме процесса current, не ссылается на соответствующий страничный слот. Затем уменьшает счетчик ссылок страницы;
- f ree_pages_and_swap_cache — аналогична функции f ree_page_and_swap_ cache, но работает с набором страниц;
- free swap and cache — освобождает элемент подкачки и проверяет, находится ли в кэше подкачки страница, на которую ссылается этот элемент. Если никакой процесс режима пользователя, кроме процесса current, не ссылается на эту страницу, или более 50% элементов подкачки заняты, функция удаляет страницу из кэша подкачки.
Предыдущая страница | 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 111 | Следующая страница