Блоковая память

Перейти вниз

Блоковая память

Сообщение автор Gudleifr в Вт Окт 03, 2017 4:45 pm

Концепция блоков - один из тех механизмов FORTH, которые а) реализованы по принципу наибольшей простоты реализации в любой вычислительной системе; б) полностью заключают в себе какую-то полезную компьютерную абстракцию. Абстракцией в данном случае является понятие "дисковой памяти". В смысле, НЕ-оперативной памяти, большой и медленной, а совсем не диска, файла или чего-то еще.

СЛОВАРЬ БЛОКОВ ПО МУРУ
Изначально Мур предложил организовывать блоковую память, как расширение словаря. Если лексему не удавалось распознать, ни как имя словарной статьи, ни как литерал, оно считалось именем числовой константы, определенной в дисковой памяти. Его следовало искать в в индексных таблицах диска. Результат успешного поиска давал число: маленькое или большое.
Большое число интерпретировалось как номер блока дисковой памяти, подлежащего немедленной интерпретации (т.е. блоки должны быть написаны на FORTH-языке). Маленькое число определяло значение переменной "контекста" - смещение применяемое для "уточнения" последующих больших чисел. Т.е. к значению прочитанного большого числа прибавлялось последнее из прочитанных маленьких, умноженное на некий масштабный множитель (размер страницы, сегмента).
Это давало возможность установки "контекста" блоковых слов. Например, можно обеспечить использование разных блоков с одинаковыми "именами" для разных пользователей.
***

Основное свойство предложенной схемы - минимальное влияние на синтаксис языка. Пользователь даже может не знать, что обращается не к словарю, а к диску.
***

В отличие от более поздних концепций блоков, такой подход наводит на мысль о блоках, как о средстве реализации отложенных вычислений. Или об отличном от более поздних (общепринятых) способе организации процессов, контекстов, замыканий - при помощи "стека блоков".
avatar
Gudleifr
Admin

Сообщения : 931
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Блоковая память

Сообщение автор Gudleifr в Вт Окт 03, 2017 4:47 pm

НУМЕРОВАННЫЕ БЛОКИ

Недостатком предложенный выше схемы было то, что единственной операцией было "чтение-загрузка". При необходимости производить с блоками более чем одну операцию (не только читать, но и редактировать, копировать и т.д.) требуется более универсальный синтаксис:

номер-блока операция

Для этого не нужно никакого отдельного поиска (индексные таблицы, если надо, пользователь может создать и в своем словаре). Т.к. для того, чтобы считать блок, нужно, что бы его кто-то записал, т.е. одной операцией никак не обойдешься, то идея Мура становится только забавным экспериментом, не получившим развития.
Идея же же нумерованных блоков прожила достаточно долго: пока более простым не стало гарантируемое всеми операционными системами переключение потоков ввода-вывода на файл.
Последней уступкой минимализму FORTH по Муру, долго оставалось автоматическое переключение текущего словаря на словарь редактора при выдаче блока на консоль.
avatar
Gudleifr
Admin

Сообщения : 931
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Блоковая память

Сообщение автор Gudleifr в Вт Окт 03, 2017 4:48 pm

БЛОКИ ПО БРОУДИ

Блоковая организация дисковой памяти позволяла реализовать множество трюков: от хранения Баз Данных до иерархического построения программ.

Броуди, например, выделял следующие программные "единицы":
- Блоки - минимальные кирпичики программы;
- Лексиконы - от одного до трех блоков. Слова, сгруппированные по назначению;
- Главы - наборы лексиконов, решающие определенную задачу;
- Блоки Загрузки - блоки, управляющие загрузкой нужных глав.

Появилось две стратегии связывания блоков в лексиконы: применением блоков загрузки - внешняя; и путем связующего слова --> ("считать следующий блок") - внутренняя.
Для комментирования появились специальные слова: "обратная-косая" - комментарий до конца строки; и "обратная-косая-S" - комментарий до конца блока. Первую строку блока стало принято отводить под краткий комментарий и указание версии. Появились теневые блоки комментариев - параллельно загружаемым блокам создавали такую же последовательность блоков целиком из комментариев, поясняющих определяемые в загружаемых блоках слова.
***

Как крайний случай появилась идея битовых (не текстовых) блоков для сохранения дампов части словаря.
avatar
Gudleifr
Admin

Сообщения : 931
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Блоковая память

Сообщение автор Gudleifr в Вт Окт 03, 2017 4:51 pm

ПОЧЕМУ БЛОКИ НЕ ФАЙЛЫ?

В основном потому, что само понятие файла гораздо шире, чем то, к какому мы привыкли в MS-DOS и, затем, в MS Windows. В ориентированных на процессы Операционных Системах файлы, это не "просто место на диске". Там файлы - каналы связи между процессами. Большинство из них существовало только в памяти компьютера. И, изначально, все они работали исключительно последовательно. Один процесс писал туда символ за символом, другой - читал оттуда также символ за символом, обеспечивая синхронизацию обмена. Файл на диске - только частный случай "замороженного до востребования" потока.
И только техническая потребность привела к появлению блоковых файлов - которые можно читать/писать не посимвольно, а некоторыми блоками из произвольного места файла. В первую очередь - дисков в целом и каталогов на дисках. Такое расширение понятия файла было достаточно условным.
***

"Большая медленная память" FORTH в такую концепцию "канала" никак не вписывается. Получается как и с вводом/выводом: принят механизм, который легко реализовать в любой Операционной Системе (например, выделив блоковый файл), но который не позволяет воспользоваться всеми благами, предоставляемыми Операционной Системой.
С другой стороны, просто "научить" FORTH пользоваться Операционной Системой недостаточно, блоки позволяют много еще чего...
Кстати, концепция MS Windows файлов, отображаемых целиком в память, гораздо ближе к идее блоковой памяти, ведь она также родилась из идеи "большой медленной памяти".
***

В целом же, получилось, что БЛОКИ стало реализовать труднее, чем работу с файлами, и большинство фортеров смирилось с тем, что от многих интересных возможностей пришлось отказаться.
avatar
Gudleifr
Admin

Сообщения : 931
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Блоковая память

Сообщение автор Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения