Flex Computer System была разработана Майклом Фостером и Яном Карри из Royal Signals and Radar Establishment (RSRE) [1] в Малверне , Англия, в конце 1970-х и 1980-х годах. Она использовала схему хранения с тегами для реализации архитектуры возможностей и была разработана для безопасной и эффективной реализации строго типизированных процедур.
Аппаратное обеспечение было индивидуальным и микропрограммируемым, с операционной системой, (модульным) компилятором, редактором, сборщиком мусора и системой хранения файлов, написанными на ALGOL 68RS .
Существовало (по крайней мере) два воплощения Flex, реализованных с использованием оборудования с записываемым микрокодом . Первое было предоставлено Logica для разработки RSRE, [2] а второе использовало ICL PERQ . [3] [4] Только микрокод отвечал за распределение памяти, освобождение памяти и сборку мусора. Это немедленно исключило целый класс ошибок, возникающих из-за неправильного использования (преднамеренного или случайного) указателей.
Примечательной особенностью Flex было помеченное хранилище файлов с однократной записью. Это позволяло прозрачно записывать и извлекать произвольный код и структуры данных, не прибегая к внешним кодировкам. Таким образом, данные можно было безопасно передавать из программы в программу.
Аналогичным образом удаленные возможности позволяли получать доступ к данным и процедурам на других машинах через сетевое соединение, опять же без участия прикладной программы во внешнем кодировании данных, параметров или значений результатов.
Вся схема позволяла безопасно реализовывать абстрактные типы данных , поскольку элементы данных и процедуры, которым разрешен доступ к ним, могли быть связаны вместе, а полученная возможность свободно передавалась. Возможность предоставляла доступ к процедурам, но не могла быть использована каким-либо образом для получения доступа к данным.
Другой примечательной особенностью Flex было понятие шатких указателей, в последнее время часто называемых слабыми ссылками , которые указывают на блоки памяти, которые могут быть освобождены при следующей сборке мусора . Это используется, например, для кэшированных дисковых блоков или списка свободных рабочих пространств процедур . [5]
COMFLEX, сеть пакетной коммутации, способная передавать данные со скоростью магнитного диска, была разработана вместе с Flex. Она сделала возможным использование удаленных файловых хранилищ, удаленных возможностей и удаленных вызовов процедур . [6]
{{cite report}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite report}}
: CS1 maint: несколько имен: список авторов ( ссылка )[ мертвая ссылка ]{{cite report}}
: CS1 maint: несколько имен: список авторов ( ссылка )[ мертвая ссылка ]