Введение

Командная строка и текстовый редактор Candé, французская коммуна Maine et Loire техническое общество IEEE CANDE (Command AND Edit) - это командная строка и текстовый редактор операционной системы MCP (Master Control Program), которая работает на серии мейнфреймов Unisys Clearpath. Первоначально реализованный на крупных системах Burroughs, он имеет ряд функций для взаимодействия с средой исполнения операционной системы, ориентированных на выполнение, редактирование и компиляцию программ, а также создание, копирование, перемещение, переименование и удаление файлов в целом. Его полное название - CANDE MCS. MCS, или Подсистема управления сообщениями, является общей формой системной программы в архитектуре Burroughs (кроме MCP, Главной программы управления или основной ОС). Как MCS, CANDE - это не просто редактор, поскольку он обеспечивает общий контроль сети пользователей. Возможности редактирования CANDE являются анахроническими для случайного (в отличие от скриптового) редактирования, поскольку они предшествуют полноэкранным и графическим редакторам. CANDE также использовался в модельном ряду Burroughs CMS (мини-компьютер), с очень похожим синтаксисом. В современных MCP CANDE в основном используется через ODT (терминал отображения оператора) и MARC (контроль ресурсов с помощью меню) на эмуляторах оригинальных терминалов, ориентированных на символы, как и с другими интерфейсами мейнфреймов, такими как ISPF.

Реализация

Для дополнительной скорости CANDE реализовал переключение пользовательского контекста путем обмена блоком в верхней части стека. Этот новый метод нарушил несколько допущений, встроенных в дизайн больших систем Burroughs, в частности, обработку дескрипторов виртуальной памяти, и означал, что CANDE должен был быть написан на DCALGOL с привилегиями системного уровня. Архитектурно CANDE разделен на две основные части: первичный, одноинстанционный основной процесс, первоначально поддерживающий до 255 одновременных пользователей, и один или несколько стеков рабочих. Основной процесс называется BUMP. Он принимает все входные сообщения, включая входные сообщения от пользователей. Простые запросы, которые могут быть выполнены без задержки и не включают в себя какие-либо вводы/выводы, такие как доступ к диску, обрабатываются немедленно. Другие запросы добавляются в очередь работы и обрабатываются одним из рабочих процессов. Рабочий процесс называется GRIND; в любой момент времени может быть один или несколько экземпляров. Каждый процесс GRIND имеет по умолчанию пять псевдопотоков, которые фактически выполняют работу. Внутренняя модель потоковой передачи для переключения контекста выбирает один из рабочих псевдопотоков для каждого процесса GRIND и делает его контекстом выполнения. Это достигается путем копирования его в верхнюю часть стека. Когда рабочему процессу необходимо выполнить ввод/вывод или другую асинхронную деятельность, он инициирует действие, отмечает то, что он ждет, и вызывает функцию переключения контекста, которая выбирает другой контекст для выполнения. CANDE работает без внутренних замков, тщательно разделяя данные. Каждому возможному пользовательскому соединению (или станции) присваивается индекс в основной массив, называемый массивом станций, или STA ("stay"). Индекс текущей станции называется STAX (произносится "stay x"). На станции есть несколько слов данных о состоянии, но они хранятся со всеми первыми словами вместе, за которыми следуют все вторые слова и т. д. Это позволяет CANDE индексировать массив, используя только сложение, а не умножение (что обеспечивало более быструю работу на жестких проводных процессорах эпохи). "КАНДА" была написана в 1973 году Даррелом Ф. Хайом. Он был передан Рэндаллу Гелленсу в 1984 году, в этот момент рутинные процедуры обслуживания библиотеки (копирование файлов, перемещение, переименование и удаление) были переписаны, чтобы обеспечить значительно расширенные возможности, было добавлено множество утилит с использованием "?" синтаксис (позволяя им использоваться даже во время выполнения программы), и было сделано несколько архитектурных улучшений. Позже он был переведен на завод в Санта-Барбаре, а затем в Индию. "?" - это "?" Синтаксис, первоначально позволяющий контролировать выполнение программы (когда вход обычно направляется в программу), вырос, чтобы включать в себя ряд утилит.