> > - второй для блокировки индекса страницы, пока она привязывается к
> > элементу кэша. Если два потока одноврененно начнут биндиться к одному
> > сегменту, то их нужно снхронизировать.
>
> Что значит "пока привязывается"???

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

Когда поток "заходит" в кэш с требованием "дай мне указатель на
элемент кэша для страницы P1", кэш (через второй внутренний менеджер
блокировок) пытается заблокировать P1 - это ему удается. Потом он
смело ищет P1 в кэше. Если не найдет - то будет пытаться выделить
новое, или выгрузит что-то очень старое. В течении этого процесса этот
поток будет работать с блокировками элементов кэша. И изредка
выполнять глобальную блокировку кэша (в моменты поиска по хешу и
перестройки списков).

Если другой поток, в это же самое время, тоже полезет в кэш за P1, то
в момент блокировки P1 он встанет в режим ожидания первого потока.
Если он полезет за P2, то его сразу пропустят.

Второй блокировщик (в отличии от основного) юзает аналог тривиальной
критической секции.

А основной блокировщик (для элементов кэша, то бишь самой оперативной
памяти) - замысловатый "Один писаталь, много читателей".

Коваленко Дмитрий.

Ответить