ступом (с помощью соответствующих операций).
Замечание. Здесь предполагается, что myid принимает значения
от 0 до n-1.
§ 4. Распределенная файловая систем а
Пусть прикладной процесс вызывает файл процедурой read или
write в локальном модуле FileCache.
Локальный модуль FileCache, вообще говоря, получает данные
от модуля FileServer, который управляет блоками данных, распо-
ложенных на диске. Для того, чтобы прочитать или записать файл
на д иск модуль FileCache должен вызвать процедуры readblk или
writeblk.
Естественно, если FileCache имеет у себя требуемые данные, то
он может быстро обработать запрос клиента, иначе ему придется
обратиться к модулю FileServer.
Иногда FileCache может производить упреждающие чтение или
запись с диска в свою память, если по характеру запросов видно,
что делаются последовательные обращения к файлу.
ФАЙЛОВЫЙ КЭШ
В РАСПРЕДЕЛЕННОЙ ФАЙЛОВОЙ СИСТЕМЕ
module FileCache # рабочая станция без диска
op read (int count; result char buffer[*]);
op write (int count; char buffer[ ]);
body
[кэш файловых блоков];
[переменные для хранения информации дескриптора файла];
[семафоры для синхронизации доступа к кэш-памяти];
proc read(count, buffer) {
if ([нужные данные не находятся в кэш-памяти]) {
[выбрать блок кэш-памяти для использования];
# предполагается освободить место ...
if ([необходимо записать блок кэш-памяти])
FileServer.writeblk(...);
FileServer.readblk(...);
}
buffer=[количество count байт блока кэш-памяти];
77