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


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


Находящаяся в блоке информация может быть использована, если ее предварительно поместить в память словом BLOCK, с этого момента с ней можно обращаться как с данными, находящимися в памяти. Например, вот определение слова LIST: : LIST ( n - ) CR BLOCK 16 0 DO I 2 .R SPACE DUP I 64 * + 64 -TRAILING TYPE CR LOOP DROP ; Вам нетрудно понять, как оно работает. Мы должны здесь упомянуть, что в некоторых версиях Форта имеются операторы, позволяющие обмениваться содержимым блоков не в буферах, а в специально выделенной области памяти. Так, в MMSFORTH 50 PAD RBLK считает в память информацию, содержащуюся в блоке 50, помещая ее в память, начиная с адреса PAD, в то время как 50 PAD WBLK запишет 1024 байта из памяти с адреса PAD в блок 50. С помощью этих двух слов в MMSFORTH описываются слово BLOCK и некоторые другие слова для обращения с буферами блоков.

Предлагаем вам поэкспериментировать с внесением изменений содержимого блоков в нескольких упражнениях, но сначала мы должны описать, как работает блочный буфер. Выберите два блока для вывода (назовем их n1 и n2). Теперь напечатайте n1 LIST, а после этого n2 LIST. Понаблюдайте за поведением дисковода, следя за обращением к нему, и снова напечатайте n1 LIST. Вывод листинга произойдет без участия дисковода. Почему? В Форт-системе имеется по крайней мере два буфера блока (а в некоторых и больше). Один из блоков вы загрузили в буфер с помощью nl LIST, другой командой n2 LIST - в следующий буфер. Когда во второй раз вы напечатали nl LIST, Форт быстро определил, что этот блок уже находится в памяти, поэтому он не сделал попытки загрузить его снова с диска. Если блок уже помещен в память словами BLOCK, LIST, LOAD и т. п., то он будет загружаться только в том случае, если его еще нет в памяти. Подобное использование буферов блока называется иногда хранением в виртуальной памяти, поскольку в некотором смысле диск является частью памяти компьютера. Способ использования буферов диска называют также кэшированием т.е. хранением в памяти часто используемой информации с диска, не без загрузки ее с диска каждый раз, когда требуется доступ к этим данным.


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