• Продажа растительного грунта

    продажа растительного грунта

    taxi-pesok.ru

  • Квартирные переезды поможем быстро

    Химки заказать квартирный переезд. Квартирные переезды поможем быстро.

    www.pereezd27.ru





Linux Kernel (Ядро линукса) (часть 1)


Кэш страничных кадров процессора

Как мы увидим далее в этой главе, ядро часто запрашивает и освобождает одиночные страничные кадры. Для повышения производительности в каждой зоне памяти определен кэш страничных кадров для каждого процессора. Это процессорный кэш содержит некоторое количество заранее выделенных страничных кадров, используемых для одиночных запросов на память, выдаваемых локальным процессором.

На самом деле, для каждого процессора в каждой зоне памяти существует два кэша: горячий”, со страницами, содержимое которых, весьма вероятно, будет занесено в аппаратный кэш процессора, и холодный.

Получение страничного кадра из горячего” кэша выгодно с точки зрения производительности системы, если либо ядро, либо процесс режима пользователя будут записывать информацию в этот кадр сразу после его выделения. Каждое обращение к ячейке памяти в страничном кадре на практике превращается в строчку аппаратного кэша, отобранную” у другого страничного кадра, конечно, если аппаратный кэш еще не содержит строчку, отображающую ячейку горячего” страничного кадра, к которому произошло обращение.

С другой стороны, получение страничного кадра из холодного” кэша удобно, если планируется заполнить страничный кадр операцией прямого доступа
к памяти. В этом случае процессор не задействуется, и ни одна строчка аппаратного кэша не будет изменена. Получение страничного кадра из холодного” кэша позволяет сберечь резерв горячих” страничных кадров для других видов запросов на выделение памяти.

Основной структурой, реализующей кэш страничных кадров процессора, является массив структур per_cpu_pageset, КОТОрЫЙ хранится В ПОЛе pageset дескриптора зоны памяти. Массив содержит по одному элементу для каждого процессора. Этот элемент состоит из двух дескрипторов per cpu pages, один из которых предназначен для горячего” кэша, а другой — для холодного”. Ядро ведет мониторинг размеров горячего” и холодного” кэшей при помощи двух отметок. Если количество страничных кадров в кэше опускается ниже отметки low, ядро пополняет кэш, выделяя batch одиночных страничных кадров из buddy-системы. Если же количество кадров переходит через отметку high, ядро освобождает batch страничных кадров кэша и возвращает их buddy-системе. Значения batch, low и high зависят от количества страничных кадров в зоне памяти.

Предыдущая страница | 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 | Следующая страница




Возможно, Вас также заинтересует:

ОС Knoppix - это Linux без проблем

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга для вас. А так как к книге прилагается компакт- диск с готовой к работе операционной системой Knoppix Live CD, то лишь достаточно вставить его в привод и перегрузить компьютер,...

Linux Kernel (Ядро линукса) (часть 1)

Спин-блокировкаСпин-блокировка необходима в многопроцессорной системе, потому что могут возникнуть другие прерывания того же типа, и другие процессоры могут приступить к их обработке. Без спин-блокировки к главному дескриптору прерывания могли бы обратиться сразу несколько процессоров. Как мы...

Linux Kernel (Ядро линукса) (часть 2)

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно неуклюже: получив системный вызов fork о, ядро в буквальном смысле дублировало все адресное пространство родителя и присваивало копию процессу-потомку. Такая операция...

Linux Kernel (Ядро линукса) (часть 3)

Буферы блоков и головы буферовУ каждого буфера есть дескриптор голова буфера, имеющий тип buffer head. Этот дескриптор содержит всю информацию, необходимую ядру для работы с блоком, так что перед обработкой блока ядро обязательно проверяет голову...