Составители:
Рубрика:
}
proc write(count, buffer) {
if ([ блок не находится в кэш-памяти]) {
[выбрать блок в кэш-памяти для использования];
# предполагается освободить место ...
if ([необходимо записать выбранный блок])
FileServer.writeblk(...);
}
[блок кэш памяти = count байт из buffer];
}
end FileCache
ФАЙЛОВЫЙ СЕРВЕР
В РАСПРЕДЕЛЕННОЙ ФАЙЛОВОЙ СИСТЕМЕ
module FileServer # находится на файловом сервере
op readblk (int fileid, offset; result char blk[1024]);
op writeblk (int fileid, offset; char blk[1024]);
body
[кэш-память дисковых блоков];
[очередь запросов на доступ к диску];
[семафоры для синхронизации доступа
к кэш-памяти и к очереди];
proc readblk(fileid, offset, blk) {
if ([нужный блок не находятся в кэш-памяти]) {
[сохранить запрос на чтение в очереди диска];
[ждать выполнения операции чтения];
}
blk=[подходящий дисковый блок];
}
proc writeblk(fileid, offset, blk) {
[выбрать блок из кэш-памяти];
if ([необходимо записать выбранный блок]) {
[сохранить запрос на запись в очереди диска];
[ждать записи блока на диск];
}
[блок кэш-памяти]=blk;
78
Страницы
- « первая
- ‹ предыдущая
- …
- 75
- 76
- 77
- 78
- 79
- …
- следующая ›
- последняя »