Язык Форт и его реализации



         

Работа с внешней памятью


В настоящее время в каждом языке программирования тем или иным способом решаются вопросы обмена с внешней памятью. Из-за огромного разнообразия внешних устройств и способов хранения информации на внешних носителях единый универсальный механизм обмена отсутствует. В каждом языке определяется своя, в известной мере универсальная файловая система, которая при реализации моделируется на реальной файловой системе конкретной операционной системы.

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

В языке Форт применяется механизм виртуальной внешней памяти, состоящей из блоков по 1 Кбайт каждый. Блок идентифицируется номером — числом в диапазоне от 1 до 32767. В адресном пространстве форт-системы выделяется память под буферный пул, рассчитанный на одновременное хранение одного или более блоков. Каждый буфер помимо памяти для хранения собственно блока данных содержит номер блока и признак его измененности.

Слово BUFFER (буфер), получив номер блока, ищет свободный буфер в пуле и возвращает его адрес, записывая в служебную ячейку буфера переданный номер блока. Тем самым найденный буфер приписывается данному блоку, однако содержимое буферной памяти пока остается прежним. Если свободного буфера не оказалось, то аналогичным образом используется один из занятых. Если при этом в служебной ячейке буфера был установлен признак измененности, то данные из буферной памяти переписываются во внешнюю, они заменяют там прежнее содержимое соответствующего блока.




Содержание  Назад  Вперед