Новые книги

Согласно расхожему мнению, человек, владеющий информацией, владеет миром. Интернет – гигантская информационная база современности, и необходимость освоения тонкостей работы в сети скоро станет насущной для всех – от специалистов по конкурентной разведке, маркетингу и PR, в жизни которых Интернет уже играет не последнюю роль, до рядовых служащих.

Как найти в Интернете информацию о конкретных людях, компаниях и товарах? Как организовать продвижение собственного предприятия в Сети? Как уберечься от хакеров и спрятать информацию на своем компьютере от посторонних? Как бороться с вирусами и вредоносными программами? Ответы на эти и многие другие вопросы вы найдете в нашей книге – подробном путеводителе по миру Интернета. Представленные здесь практические советы помогут вам не просто выстоять в конкурентной или информационной борьбе, но и победить в ней, изучив неизвестные рядовому пользователю возможности Всемирной паутины.

Издание представляет практический интерес для специалистов по бизнес-разведке, маркетингу, рекламе и PR, а также для директоров и менеджеров, желающих эффективно продвигать свое предприятие на современном рынке.
Эта книга содержит рекомендации и методы, основанные на научных исследованиях, экспериментах, опросах потребителей и статистики. Автор использует знания из математики, социальной психологии, меметики и других наук и объясняет, почему и, что еще важнее, каким образом следует адаптировать для достижения максимальных результатов свои стратегии интернет-маркетинга: ведение блога, присутствие в соцсетях, почтовый маркетинг и вебинары.

На русском языке публикуется впервые.

3.2 СТРУКТУРА ОБЛАСТИ БУФЕРОВ (БУФЕРНОГО ПУЛА)

 

3.2 СТРУКТУРА ОБЛАСТИ БУФЕРОВ (БУФЕРНОГО ПУЛА)

Ядро помещает информацию в область буферов, используя алгоритм поиска буферов, к которым наиболее долго не было обращений: после выделения буфера дисковому блоку нельзя использовать этот буфер для другого блока до тех пор, пока не будут задействованы все остальные буферы. Ядро управляет списком свободных буферов, который необходим для работы указанного алгоритма. Этот список представляет собой циклический перечень буферов с двунаправленными указателями и с формальными заголовками в начале и в конце перечня (Рисунок 3.2). Все буферы попадают в список при загрузке системы. Если нужен любой свободный буфер, ядро выбирает буфер из "головы" списка, но если в области буферов ищется определенный блок, может быть выбран буфер и из середины списка. И в том, и в другом случае буфер удаляется из списка свободных буферов. Если ядро возвращает буфер буферному пулу, этот буфер добавляется в хвост списка, либо в "голову" списка (в случае ошибки), но никогда не в середину. По мере удаления буферов из списка буфер с нужной информацией продвигается все ближе и ближе к "голове" списка (Рисунок 3.2). Следовательно, те буферы, которые находятся ближе к "голове" списка, в последний раз использовались раньше, чем буферы, находящиеся дальше от "головы" списка.


Рисунок 3.2. Список свободных буферов

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


Рисунок 3.3. Буферы в хеш-очередях

На Рисунке 3.3 изображены буферы в хеш-очередях: заголовки хеш-очередей показаны в левой части рисунка, а квадратиками в каждой строке показаны буферы в соответствующей хеш-очереди. Так, квадратики с числами 28, 4 и 64 представляют буферы в хеш-очереди для "блока 0 модуля 4". Пунктирным линиям между буферами соответствуют указатели вперед и назад вдоль хеш-очереди; для простоты на следующих рисунках этой главы данные указатели не показываются, но их присутствие подразумевается. Кроме того, на рисунке блоки идентифицируются только своими номерами и функция хеширования построена на использовании только номеров блоков; однако на практике также используется номер устройства.

Любой буфер всегда находится в хеш-очереди, но его положение в очереди не имеет значения. Как уже говорилось, никакая пара буферов не может одновременно содержать данные одного и того же дискового блока; поэтому каждый дисковый блок в буферном пуле существует в одной и только одной хеш-очереди и представлен в ней только один раз. Тем не менее, буфер может находиться в списке свободных буферов, если его статус "свободен". Поскольку буфер может быть одновременно в хеш-очереди и в списке свободных буферов, у ядра есть два способа его обнаружения. Ядро просматривает хеш-очередь, если ему нужно найти определенный буфер, и выбирает буфер из списка свободных буферов, если ему нужен любой свободный буфер. В следующем разделе будет показано, каким образом ядро осуществляет поиск определенных дисковых блоков в буферном кеше, а также как оно работает с буферами в хеш-очередях и в списке свободных буферов. Еще раз напомним: буфер всегда находится в хеш -очереди, а в списке свободных буферов может быть, но может и отсутствовать.

Предыдущая глава || Оглавление || Следующая глава