Язык программирования Форт


Глава 10. Хранение программ и данных - часть 13


Кэш-диск сокращает число обращений к дисковому устройству, значительно ускоряя исполнение программы, когда одни и те же данные требуются многократно. Во многих версиях Форта число буферов диска увеличено минимум на 2. Если вам придется работать с большим количеством часто используемых данных и вам не хватит двух буферов блоков, вы можете увеличить их число. Попробуем сделать несколько экспериментов, манипулируя с информацией из блоков, чтобы проследить, как используются буферы. Выберите три блока, содержимым которых вы не дорожите, и поэтому их можно переписывать (мы назовем их n1, n2 и n3 и будем считать, что у нас есть только два буфера блоков). Теперь попробуйте сделать 10 n1 BLOCK ! а потом n1 BLOCK @ . выведет на экран число 10. Первый элемент в блоке n1 вы изменили на 10. Теперь напечатайте 20 n2 BLOCK ! после этого 30 n3 BLOCK ! а затем n1 BLOCK @

Число 10, которое вы занесли в первый элемент блока n1, куда то пропало! Что произошло? Когда вы поместили число 30 в блок n3, то поскольку блок n3 был загружен с диска в первый блочный буфер, то его содержимое наложилось на содержимое ранее находившегося здесь блока n1. Поэтому перед извлечением первого элемента блока n1 произошла перезагрузка n1, но с его исходным содержимым, а не с числом 10 в первом элементе. Когда в блочный буфер вводится новый блок, то он попадает в последний использованный буфер. Как же в таком случае сохранить измененные данные из буфера на диске? Изменения в буферах диска могут быть сделаны постоянными, если вы используете слово UPDATE. Попробуйте проделать эксперимент заново, но после каждого изменения, внесенного оператором записи !, напечатайте UPDATE. Теперь, когда вы во второй раз введете n1 BLOCK @ . то увидите, что в первом элементе блока n1 было запомнено число 10, UPDATE помечает, что буфер нужно сохранить на диске, чтобы в противном случае на его содержимое не могло наложиться содержимое другого блока. Другими словами, оно делает произведенные изменения постоянными, так что если используемый в последний раз буфер будет переписываться, то перед этим его содержимое должно быть сохранено на диске.


- Начало -  - Назад -  - Вперед -