Архитектура системы МТС
![]() Экран приветствия МТС через 3270 эмулятор терминала . | |
Разработчик | Мичиганский университет и еще 7 университетов США, Канады и Великобритании. |
---|---|
Написано в | различные языки, в основном 360/370 Assembler |
Рабочее состояние | Исторический |
Первоначальный выпуск | 1967 |
Последний выпуск | 6.0/1988 (финал) |
Доступно в | Английский |
Платформы | IBM S/360-67, IBM S/370 и его преемники |
По умолчанию пользовательский интерфейс | Интерфейс командной строки |
Лицензия | Бесплатно ( CC BY 3.0 ) |
Официальный сайт | archive.michigan-terminal-system.org |
Системная архитектура MTS описывает организацию программного обеспечения Michigan Terminal System , с разделением времени компьютерной операционной системы , использовавшейся с 1967 по 1999 год на IBM S/360-67 , IBM System/370 и совместимых компьютерах.
Обзор
[ редактировать ]Состояние | Режим [2] | ВМ | Прерывания | |
---|---|---|---|---|
Пользовательские программы | проблема | пользователь | на | на |
Подсистемы командного языка (CLS), Процедуры поддержки устройств (DSR), Системные подпрограммы |
система | |||
Программы работы (MTS, PDP, DMGR, RM или HASP, ...) | вкл или выкл | |||
Супервайзер (УММПС) | руководитель | н/д | выключенный | выключенный |
Аппаратное обеспечение S/360-67 или S/370 |
Супервайзер по мультипрограммированию Мичиганского университета (UMMPS) полностью контролирует аппаратное обеспечение и управляет набором рабочих программ. [3] Одной из рабочих программ является МТС, программа трудоустройства, с которой взаимодействует большинство пользователей. [4] MTS работает как совокупность подсистем командного языка (CLS). Один из CLS позволяет выполнять пользовательские программы. MTS предоставляет набор системных подпрограмм , доступных CLS, пользовательским программам и самому MTS. [5] [6] Помимо прочего, эти системные подпрограммы обеспечивают стандартный доступ к процедурам поддержки устройств (DSR), компонентам, которые выполняют зависящий от устройства ввод/вывод.
Организация
[ редактировать ]Система организована как набор независимых компонентов с четко определенными интерфейсами между ними. [3] Эта идея, конечно, не нова и не уникальна; но компоненты MTS, как правило, больше, интерфейсы между компонентами более жесткие, и компонент взаимодействует с меньшим количеством других компонентов, чем во многих системах. В результате компоненты становятся более независимыми друг от друга, и их легче заменить, не затрагивая другие.
Интерфейс супервизора одинаков для всех компонентов, допускается очень мало особых случаев; например, все операции ввода/вывода выполняются с использованием одних и тех же средств управления, независимо от того, предназначен ли ввод/вывод для устройства считывания карт, пейджингового устройства или любого другого устройства. Большая часть доступа к службам супервизора осуществляется через системные подпрограммы, которые выдают необходимые инструкции вызова супервизора (SVC), а не путем прямого использования SVC. Доступ к блокам управления осуществляется только косвенно посредством вызовов подпрограмм внутри компонента, который «владеет» блоком управления.
Интерфейсы, используемые пользовательскими программами, самые чистые из всех. Пользовательские программы никогда не могут напрямую обращаться к какому-либо блоку управления системой (ни для ссылки, ни для изменения), поскольку сегмент(ы) виртуальной памяти, содержащие блоки управления системой (системные сегменты), удаляются из виртуального адресного пространства задания, когда программа пользовательского режима бежит. Интерфейсы подпрограмм, доступные пользовательским программам, также используются большинством других частей системы (программы системного режима, CLS и т. д.), даже если компоненты, работающие в системном режиме, имеют доступ к «системным» сегментам виртуальной памяти. Переходы из пользовательского режима в системный и обратно управляются специальным защищенным набором подпрограммных интерфейсов, известных как «ворота» (первоначально разработанный в Университете штата Уэйн ). [2]
Программные усилия МТС разделены по вертикали, а не по горизонтали. Это означает, что один или два человека назначаются ответственными за компонент и затем следят за ним от проектирования до внедрения и обслуживания. Ответственное лицо имеет значительную свободу в проектировании внутренней структуры компонента и даже расширении интерфейсов при условии, что все соответствующие существующие интерфейсы остаются неизменными.
Языки программирования и отладка на уровне системы
[ редактировать ]Супервизор, большинство рабочих программ, большие части MTS, включая множество DSR и CLS, написаны на языке ассемблера 360/370. Некоторые рабочие программы и части MTS, включая некоторые DSR и CLS, написаны на языках более высокого уровня, таких как Plus или GOM . Пользовательские программы написаны на самых разных языках, от ассемблера до любого из доступных языков более высокого уровня.
Большинство компонентов системы, включая пользовательские программы, CLS и подпрограммы, загруженные в общую виртуальную память, можно отлаживать, а новые версии многих из них можно устанавливать во время работы системы, не требуя ее завершения. Возможна замена частной копией всех компонентов, кроме супервизора и частей некоторых рабочих программ. Доступна «тестовая» версия рабочей программы MTS (TMTS), позволяющая проводить тестирование в обычной производственной среде. SWAT — это интерфейс, который позволяет использовать систему символьной отладки, которая обычно используется для отладки пользовательских программ, для отладки MTS. [7] $PEEK — это привилегированная команда MTS, которая использует запись событий программы (PER) и другие средства для облегчения отладки одной программы задания от другой. [7] Компоненты, которые невозможно отладить таким способом, можно отладить, запустив на виртуальной машине МТС (пользовательскую программу).
супервайзер
[ редактировать ]Супервизор по мультипрограммированию Мичиганского университета (UMMPS) — имя супервизора МТС . [8] UMMPS — единственная часть системы, работающая в состоянии супервизора S/360. Он работает с отключенной виртуальной памятью (перемещением) и с отключенными аппаратными прерываниями . В многопроцессорных конфигурациях он может выполняться на нескольких процессорах одновременно. UMMPS — это то, что сегодня назвали бы микроядром , хотя UMMPS был разработан задолго до того, как этот термин стал широко использоваться.
Для заданий UMMPS является расширением аппаратного обеспечения S/360 или S/370 и отвечает за:
- распределение всех аппаратных ресурсов ( процессоры , реальная память , устройства ввода/вывода),
- планирование операций ввода-вывода ,
- обработка всех аппаратных прерываний , включая ошибки страниц и программные прерывания из-за ошибок в рабочих программах,
- реализация виртуальной памяти , включая:
- выделение адресов ВМ,
- управление таблицами сегментов и страниц,
- предоставление защищенной или постоянной памяти путем установки ключей хранения,
- управление обращением к памяти и битами изменения,
- управление именованными адресными пространствами (NAS),
- определение того, когда и какие страницы следует перемещать между реальной памятью и вторичным хранилищем для реализации подкачки по требованию ,
- предоставление услуг программам трудоустройства, которые осуществляют вызов супервизора (SVC) [9] и инструкции по мониторингу вызова (MC), включая:
- начало и прекращение работы,
- инициирование операций ввода/вывода (канальных программ),
- планирование прерываний по таймеру,
- общение с системным оператором,
- предоставление услуг межзадачной связи,
- разрешение заданиям приобретать и снимать программные блокировки,
- разрешение заданиям входить и выходить из пользовательского и системного режима, когда программы пользовательского режима не имеют доступа к некоторым сегментам виртуальной памяти и полному спектру SVC, [2]
- предоставление услуг, позволяющих синхронизировать рабочие программы,
- предоставление теневых сегментов и таблиц страниц и других сервисов, которые позволяют программам заданий предоставлять услуги виртуальных машин ,
- имитация нескольких машинных инструкций, которые присутствуют на некоторых, но не на всех моделях компьютеров S/360 или S/370,
- имитация псевдоинструкций перехода по прерыванию программы (BPI),
- восстановление ошибок проверки машины,
- запись дампов задания (создание моментального снимка текущего состояния выполнения задания путем записи всей реальной памяти, всей виртуальной памяти задания, общих регистров и слова состояния программы на магнитную ленту),
- отслеживание количества используемого процессорного времени и количества страниц для заданий,
- поддержание времени суток на часах и
- помощь в создании диагностических записей.
После инициализации UMMPS полностью управляется прерываниями. Прерывания могут быть вызваны супервизором (SVC). [9] или инструкции вызова монитора (MC), выдаваемые рабочими программами для запроса служб, прерывания из-за ошибки страницы для страниц виртуальной памяти, которые не находятся в реальной памяти, когда к ним обращается рабочая программа, программные прерывания, вызванные ненормальными условиями в рабочих программах, прерывания таймера от имени рабочих программ или используются внутри супервизора, прерывания от подсистемы ввода/вывода, прерывания проверки машины, внешние (инициируемые оператором) прерывания и прерывания от других процессоров в многопроцессорной конфигурации.
Программное прерывание в состоянии супервизора — это системный сбой, который приводит к созданию дампа супервизора (супердамп, при котором состояние машины и содержимое всей реальной памяти записывается на магнитную ленту) с последующим перезапуском системы (повторная IPL).
Ветка по прерыванию программы (BPI)
[ редактировать ]Псевдоинструкция перехода по прерыванию программы (BPI) обеспечивает простой способ сохранения управления последовательностью кода после прерывания программы. Это может быть полезно для проверки допустимых адресов в списке параметров, для обнаружения переполнения, потери памяти и других исключений во время вычислений или в любой ситуации, когда возможно прерывание программы. BPI можно использовать с очень низкими затратами для обычно более распространенного случая, когда нет прерывания программы.
UMMPS реализует псевдоинструкцию перехода по прерыванию программы (BPI), используя специальный тип инструкции NOP. [10] Форма инструкции BPI:
BPI M2,D2(B2) [RX]
или
BC 0,D2(M2,B2) [RX]
Op Code Mask1 Mask2 Base Displacement +--------------+-------+-------+-------+------------+ | x'47' | 0 | M2 | B2 | D2 | +--------------+-------+-------+-------+------------+ 0 8 12 16 20 31
Если Маска 1 всегда равна нулю, Маска 2 — это имя или значение, как описано в таблице ниже, а база и смещение указывают адрес ветвления. Несколько инструкций BPI могут быть переданы последовательно. Инструкция BPI доступна для использования как в состоянии проблемы, так и в состоянии супервизора (то есть внутри самого UMMPS).
Когда инструкция вызывает прерывание программы, проверяется следующая инструкция, чтобы определить, является ли она прерыванием программы. Инструкция БПИ. Если да, то тип произошедшего программного прерывания сравнивается с категориями типов. указанный в части маски 2 инструкции BPI. Если совпадение есть, код состояния устанавливается так, чтобы отразить произошедшее прерывание, и выполняется переход. В противном случае проверяется следующая инструкция, чтобы определить, является ли она инструкцией BPI и т. д. Если передача BPI не была выполнена (либо потому, что не было инструкции BPI, либо потому, что тип программного прерывания не соответствовал маске каких-либо присутствующих BPI ), происходит нормальная обработка программного прерывания.
Когда инструкция BPI выполняется нормально (когда нет программного прерывания по предыдущей инструкции), это инструкция NOP или «никогда не переходить».
Категории типов прерываний BPI:
Маска 2
ИмяМаска 2
ЦенитьПрерывать
ЧислоПрерывать
ИмяКод состояния
на филиалеОПКР 8 1 Операция 1 2 Привилегированная операция 2 3 Выполнять 3 ОПНД 4 4 Защита 0 5 Адресация 1 6 Спецификация 2 7 Данные 3 ОВДИВ 2 8 Исправлено переполнение 0 9 Фиксированное разделение 1 10 Десятичное переполнение 2 11 Десятичное деление 3 ФП 1 12 Переполнение экспоненты 0 13 Недополнение экспоненты 1 14 Значение 2 15 Деление с плавающей запятой 3
Программы трудоустройства
[ редактировать ]Все рабочие программы выполняются в состоянии проблемы S/360, могут работать с включенной или отключенной виртуальной адресацией и могут быть или не быть реентерабельными (более одного экземпляра рабочей программы может быть разрешено или не разрешено для выполнения). В многопроцессорных конфигурациях одно задание будет выполняться только на одном процессоре одновременно, но супервизор может назначить задание разным процессорам в разное время. [8]
Рабочая программа MTS — это та программа, с которой взаимодействует большинство пользователей, и она обеспечивает интерпретацию команд, контроль выполнения, управление файлами и устройствами, а также услуги бухгалтерского учета. [4] Другие рабочие программы помогают супервизору (Процессор устройства подкачки или PDP, задание консоли ОПЕРАТОРА, Диспетчер дисков или DMGR, ...), предоставляют общие или совместно используемые службы ( буферные локальные и удаленные пакетные службы через HASP и HASPlings или более поздние версии). Resource Manager или RM, который был разработан в Университете Британской Колумбии для замены HASP), или позволяет системным операторам отображать состояние и иным образом управлять системой (JOBS, UNITS, STOP, BLAST, GOOSE, STARTUP, SHUTDOWN, REW, WTM, ...).
Новые задания, кроме самого первого, запускаются запросами к UMMPS от других заданий, чаще всего задания OPERATOR. Самое первое задание, INIT, запускается сразу после IPL и инициализации супервизора.
24-, 31- и 32-битная адресация.
[ редактировать ]С самого начала и на протяжении большей части своего существования UMMPS и MTS работали с использованием 24-битной адресации. UMMPS никогда не использовал 32-битные адреса виртуальной памяти, доступные в IBM S/360-67. [11]
В августе 1982 года Университет Альберты изменил UMMPS для работы в 31-битном режиме адресации, чтобы можно было использовать более 16 МБ реальной памяти, хотя реальная память выше 16 МБ использовалась только для хранения страниц виртуальной памяти. Программы заданий и пользовательские программы продолжали использовать 24-битные адреса.
В 1985 году Политехнический институт Ренсселера (RPI) внес изменения в UMMPS для поддержки S/370-XA, который, среди прочего, позволял использовать 24- или 31-битную адресацию для рабочих программ и пользовательских программ, работающих под управлением MTS. Изменения были внесены в Мичиганском университете в 1990 году, чтобы обеспечить бесперебойную работу пользовательских программ, использующих 31-битные адреса: объектные модули можно было пометить как поддерживающие 31-битную адресацию (или нет), компиляторы и ассемблеры были изменены для предоставления правильных флагов. программы будут переключаться между 24- и 31-битным режимами адресации по мере необходимости при переходе между системным и пользовательским режимами.
Защита
[ редактировать ]MTS имеет надежную модель защиты, которая использует аппаратную часть виртуальной памяти, супервизор и состояния проблем аппаратного обеспечения S/360 и S/370, а с помощью программного обеспечения разделяет выполнение состояний проблемы на системный (привилегированный или незащищенный) и пользовательский (защищенный или непривилегированный) режимы. В состоянии супервизора выполняется относительно небольшой код. Например, процедуры поддержки устройств (DSR, также известные как драйверы устройств) не являются частью супервизора и запускаются в системном режиме в состоянии проблемы, а не в состоянии супервизора. [2] [12] [13]
Виртуальная память и подкачка
[ редактировать ]
Поддержка виртуальной памяти (VM) и подкачки по запросу была добавлена в UMMPS в ноябре 1967 года, что сделало MTS первой операционной системой, использующей функции динамической трансляции адресов (DAT), которые были добавлены в IBM S/360-67 . [3]
UMMPS использует страницы виртуальной памяти по 4096 байт и сегменты виртуальной памяти по 256 страниц. UMMPS можно было условно собрать с использованием небольших (64 страниц) сегментов, доступных на оборудовании S/370, но рабочие программы всегда представлялись с большими (256 страниц) сегментами. Поддерживаются ключи блочного хранения размером 2 КБ и 4 КБ.
Существует трехуровневая иерархия хранения: (1) реальная память, (2) высокоскоростные устройства подкачки и (3) диски подкачки. Высокоскоростные устройства подкачки включают IBM 2301 Drum , IBM 2305 с фиксированной головкой и различные «твердотельные» устройства ввода-вывода сторонних производителей, такие как STC 4305 и Intel 3805, которые имитируют вращающиеся диски или, что чаще, обеспечивают более эффективный фиксированный блок. доступ к архитектуре (FBA) к внешнему ОЗУ. [14] Высокоскоростные пейджинговые устройства подключаются с использованием «двухбайтовых» каналов ввода-вывода, работающих со скоростью до 3,0 МБ в секунду, когда это возможно. Диски подкачки были отделены от дисков, используемых для файловой системы, и использовались, если более высокоскоростные устройства подкачки заполнялись. Страницы виртуальной памяти мигрируют между реальной памятью и устройствами подкачки. В ранних версиях МТС страницы не переносились между отдельными пейджинговыми устройствами. В более поздних версиях менее часто используемые страницы переносились с высокоскоростных устройств подкачки на диски подкачки, когда высокоскоростные устройства были близки к заполнению. Позже система была изменена, чтобы использовать IBM S/370-XA Extended Storage как часть второго уровня иерархии хранения и использовать одни и те же диски для файловой системы и для подкачки.
Виртуальная память управляется UMMPS при помощи рабочей программы процессора устройства подкачки (PDP). UMMPS отвечает на запросы о выделении и освобождении виртуальных машин из рабочих программ, распределяет адреса виртуальных машин, выделяет реальную память, управляет таблицами сегментов и страниц, устанавливает ключи хранения, управляет битами ссылок и изменений, определяет, какие страницы виртуальной памяти следует выгружать или выгружать, а также общается с ПДП. Новые страницы виртуальной памяти инициализируются значением «ядерной константы» x'81' при первом обращении.
PDP — это настоящая программа работы с памятью. Он распределяет пространство на устройствах подкачки, инициирует все операции ввода-вывода на устройствах подкачки, отвечает за восстановление после ошибок ввода-вывода и обменивается данными с UMMPS.
Чтобы снизить вероятность сбоев, UMMPS использует «механизм больших заданий», который определяет задания с количеством реальных страниц, превышающим пороговое значение, ограничивает количество этих «больших» заданий, которые могут быть выполнены в данный момент времени, и дает большим заданиям расширенный интервал времени , когда они выполняются. Это позволяет большим заданиям накапливать больше страниц реальной памяти и лучше использовать эти страницы до того, как они достигнут конца временного интервала, но большие задания будут ждать дольше между временными интервалами, когда слишком много больших заданий конкурируют за ограниченные страницы реальной памяти. Количество страниц, которые может иметь задание, прежде чем оно будет считаться большим (порог большого задания или BJT), и количество больших заданий (NBJ), которые имеют право на выполнение, являются внешними параметрами, которые переоцениваются и устанавливаются вне супервизора каждые 20 секунд в зависимости от общей загрузки системы.
Помимо механизма больших заданий, хранилище UMMPS, процессор и планирование ввода-вывода независимы, при этом каждая область может «позаботиться о себе».
Виртуальная память разделена на регионы следующим образом:
- Сегмент 0: общая виртуальная память равна реальной памяти (только для чтения).
- Сегменты с 1 по 4: общая виртуальная память (только для чтения).
- Сегмент 5: частная виртуальная память (системный сегмент, доступный только программам системного режима (незащищенным)). [2]
- Сегменты с 6 по 12: частная виртуальная память (пользовательские сегменты, чтение и запись в любую программу) [5]
Разным регионам со временем было назначено разное количество сегментов, а с появлением 31-битной адресации и возможности использовать сегменты VM размером более 16 регионы были расширены следующим образом:
- Сегмент 0: общая виртуальная память равна реальной памяти (только для чтения).
- Сегменты с 1 по 5: общая виртуальная память (только для чтения).
- Сегменты 6–7: частная виртуальная память (системные сегменты, доступные только программам системного режима (незащищенным)).
- Сегмент 8: общая виртуальная память для подключения именованных адресных пространств (NAS) (только для чтения).
- Сегменты 9–55: частная виртуальная память (пользовательские сегменты, чтение и запись в любую программу)
- Сегменты 56–59: частная виртуальная память (системные сегменты, доступные только программам системного режима (незащищенным)).
- Сегменты 60–63: общая виртуальная память для подключения именованных адресных пространств (NAS) (только для чтения).
Некоторая реальная память не адресуется с использованием адресов виртуальной памяти и поэтому доступна только для UMMPS или программ заданий реальной памяти. Виртуальная память, доступная только для чтения, может быть изменена привилегированными программами, которые отключают защиту памяти (обычно на очень ограниченный период времени).
Именованные адресные пространства (NAS) позволяют подключать именованные сегменты виртуальной памяти. Это общие пространства виртуальной памяти, которые можно присоединять и отсоединять от виртуального адресного пространства данного задания, и одни и те же адреса могут иметь различное содержимое в зависимости от того, какие именно именованные адресные пространства присоединены. Поддержка NAS в основном используется MTS для подключения сегментов виртуальной машины, предварительно загруженных системными компонентами, как способ расширения общей виртуальной памяти без использования адресного пространства виртуальной машины ниже магической линии в 16 МБ и, таким образом, сохранения большей части этого ценного адресного пространства, доступного для использования 24-битными системами. пользовательские программы.
Вход в систему и идентификаторы проектов
[ редактировать ]Каждому, кто использует MTS, назначается идентификатор входа (также называемый идентификаторами пользователей или идентификаторами вычислительных центров, CCID). [4] Идентификаторы входа всегда имеют длину 4 символа. При необходимости более короткие идентификаторы автоматически дополняются справа строкой «.$.». Таким образом, идентификаторы «МТС.», «DAB.», «ME$.» или "C.$." можно записать как «МТС», «DAB», «ME» и «C» соответственно.
Идентификаторы входа защищены паролями, которые необходимо вводить в начале каждого сеанса (как часть или чаще сразу после команды $SIGNON ). Исключениями являются задания, отправленные через *BATCH* , которые выполняются под тем же идентификатором, который отправил новое задание, задания, запланированные для повторного запуска в определенное время или в определенный день, когда задания выполняются под тем же идентификатором, который их запланировал, или задания, инициированные из пульт оператора. Пароли имеют длину от 1 до 12 символов, строчные буквы преобразуются в прописные, допускаются специальные символы, кроме запятой и пробела. Пароли можно изменить с помощью команды $SET PW . Для изменения пароля из сеанса терминала требуется ввести исходный пароль, а новый пароль необходимо ввести дважды для проверки.
Ввод неверного пароля засчитывается и сообщается пользователю при следующем успешном входе в систему. Системному оператору сообщается о слишком большом количестве неудачных паролей без успешного ввода, а еще большее количество неудачных паролей без успешного ввода приведет к «блокировке» идентификатора входа до тех пор, пока он не будет сброшен сотрудниками бизнес-офиса. Между неудачными попытками ввода пароля вводится небольшая задержка, чтобы предотвратить быстрое «угадывание» большого количества паролей.
Физические лица могут иметь несколько идентификаторов входа для использования на разных курсах, в разных исследовательских проектах или с разными источниками финансирования (университет, правительство, некоммерческая организация, промышленность и т. д.). Совместное использование идентификаторов входа отдельными лицами не рекомендуется, но имеет место.
Идентификаторы входа сгруппированы в проекты. Каждый идентификатор входа является участником одного и только одного проекта. Идентификаторы проектов, как и идентификаторы входа, имеют длину 4 символа. Многие проекты контролируются идентификатором входа «Руководитель проекта», который может выделять ресурсы учетным записям, которые являются участниками проекта (в пределах ресурсов, выделенных для проекта), с помощью команды $ACCOUNTING MANAGEMENT .
Идентификаторы входа и проекта также используются для контроля доступа к файлам и отправки электронной почты.
За одним исключением, не существует идентификаторов входа со «специальными» привилегиями на основании самого идентификатора. Вместо этого можно установить флаги, которые позволяют определенным идентификаторам входа:
- создавать общедоступные файлы и устанавливать общедоступные программные ключи,
- работать с нулевым или отрицательным балансом счета,
- выполнять привилегированные операции, [2] включая:
- пометка файлов для запуска в системном (незащищенном) режиме, а не в пользовательском (защищенном) режиме по умолчанию,
- используйте параметры PROT=OFF в командах $SET и $RUN ,
- используйте подсистему тестового командного языка ( $#CLS ),
- используйте привилегированные параметры $SYSTEMSTATUS и других подсистем командного языка (CLS).
Исключением является идентификатор входа «MTS.», который может читать, но не изменять или разрешать любой файл в системе независимо от статуса владельца или разрешения. МТС. ID также может использовать опцию $SET FILEREF=OFF , которая предотвращает обновление дат ссылки на файлы (полезно при восстановлении после проблем с файловой системой или исследовании проблем безопасности).
Программа или пользователь не могут получить привилегии идентификатора входа, отличного от того, который использовался для входа в текущий сеанс. Вместо этого программам и файлам может быть разрешено использовать определенные идентификаторы входа, проекты и программные ключи или комбинации идентификаторов входа, проектов и программных ключей.
Терминальные, пакетные и серверные сеансы
[ редактировать ]MTS поддерживает терминальные, пакетные и серверные сеансы. [4] Все три используют один и тот же командный язык.
- Сеансы терминала являются интерактивными, и пользователь может реагировать на выводимые данные, включая сообщения об ошибках и подсказки.
- Пакетные задания не являются интерактивными, поэтому все входные данные должны быть подготовлены заранее, при этом у пользователя практически нет возможности изменить ввод (по крайней мере, без программирования) после начала выполнения пакетного задания.
- Сеансы сервера могут поддерживать взаимодействие пользователя с MTS или клиента с MTS, и хотя взаимодействие с пользователем возможно, команды MTS обычно считываются из командного файла, и пользователю вряд ли придется знать или вводить команды MTS. Сеансы сервера могут спонсироваться, и в этом случае они будут казаться пользователю бесплатными и не требуют от пользователя ввода идентификатора и пароля. За сеансы сервера также может взиматься плата, и для них требуется действительный идентификатор и пароль. Сеансы сервера можно инициировать из сети или из сеанса MTS с помощью команды $MOUNT .
В 1971 году Университет Альберты разработал пакетно-ориентированную программу для студентов, чтобы обеспечить быструю работу студентов старших курсов, обучающихся программированию на FORTRAN , ALGOL , PL/C и 360 Assembler . Это была специальная система ввода перфокарт и вывода на принтер, которая обеспечивала 5-минутную обработку и выполняла несколько тысяч заданий в неделю по фиксированной цене за задание (15 центов).
Командный язык
[ редактировать ]MTS считывает команды из псевдоустройства *SOURCE* , которым изначально является терминал пользователя или поток пакетного ввода. [4] Программы могут выполнять команды MTS, вызывая подпрограммы CMD, CMDNOE и COMMAND. [5]
Ведущие и конечные пробелы, а также нулевые и все пустые строки игнорируются. Строки, начинающиеся со звездочки ( * или $* ), считаются комментариями. Командные строки, заканчивающиеся символом продолжения (по умолчанию знаком минус), продолжаются на следующей строке. Командные строки могут иметь длину до 255 символов.
MTS использует команды, ориентированные на ключевые слова, и параметры команд. Командный глагол ( SIGNON , RUN , EDIT , ...) является первым ключевым словом в командной строке. Команды могут начинаться с необязательного знака доллара ( $SIGNON , $RUN , $EDIT , ...). В пакетных заданиях после недопустимых команд и некоторых других ошибок MTS ищет следующую строку, которая начинается со знака доллара ( $ ) в столбце 1, в качестве следующей команды для выполнения. Все команды и большинство параметров команды допускают начальные сокращения подстроки ( C для COPY , R для RUN , DEB для DEBUG , ...). Команды MTS и большинство параметров команд не чувствительны к регистру.
В MTS есть «одноразовые» команды ( CREATE , FILESTATUS , SIGNOFF , ...) и команды с режимами подкоманд ( EDIT , CALC , SYSTEMSTATUS , ...). Большинство команд с режимами подкоманд также можно вызывать как одноразовые команды, указав одну или несколько подкоманд в командной строке.
Все задания MTS начинаются с команды SIGNON и большинство заканчиваются командой SIGNOFF . Команды могут храниться в файлах и выполняться с помощью команды SOURCE . Команды могут храниться в файлах регистрации (sigfiles) или файлах регистрации проекта (projectsigfiles), которые всегда выполняются сразу после команды SIGNON . Выполнение сигфайлов может быть обязательным ( SIGFILEATTN=OFF ) или необязательным ( SIGFILEATTN=ON , по умолчанию).
Шаблоны имен файлов
[ редактировать ]Некоторые команды MTS, использующие имена файлов или списки имен файлов, позволяют использовать шаблоны имен файлов: COPY , DESTROY , DUPLICATE , EMPTY , EDIT , FILESTATUS , FILEMENU , LIST , LOCKSTATUS , PERMIT , RENAME , RENUMBER и TRUNCATE . Вопросительный знак ( ? ) — это символ соответствия шаблону. Один вопросительный знак, используемый в имени файла, будет соответствовать нулю или более символам. " ? " соответствует всем файлам для текущего идентификатора входа, " ?.S " соответствует всем файлам, которые заканчиваются на " .S ", " A?B " соответствует всем файлам, которые начинаются с " A " и заканчиваются на " B ", " A?B?C » соответствует всем файлам, которые начинаются с « A », заканчиваются на « C » и содержат « B ». Два или более последовательных вопросительных знака соответствуют символам « n -1». « ???.S » соответствует всем четырехсимвольным именам файлов, которые заканчиваются на « .S », а « ???? » соответствует всем трехсимвольным именам файлов. « W163:? » соответствует всем файлам с идентификатором входа « W163 », к которым у текущего пользователя есть доступ.
Командные макросы
[ редактировать ]Макропроцессор команд MTS позволяет пользователям определять свои собственные команды MTS. [15] Он предоставляет «сценарный» язык с условными командами и доступен для использования с любыми строками, считываемыми из *SOURCE* пользовательскими программами или подсистемами командного языка, а также с командами MTS. Строки макропроцессора обычно начинаются с префикса «больше» ( > ). Командный макропроцессор управляется с помощью команды $SET , а также модификаторов ввода-вывода в именах FD.
Префиксные символы
[ редактировать ]Чтобы помочь пользователям отслеживать, с какой командой, подсистемой команд или программой они работают, и когда ожидается ввод, MTS отображает префиксный символ или иногда строку префикса в начале каждой строки ввода и вывода, которую он записывает на терминал пользователя. Общие префиксы:
# MTS command mode #- MTS command continuation mode ? Prompts > COPY and LIST commands . Program loader blank User programs : Editor + Symbolic Debugging System (SDS) @ Message System ftp> FTP (File-Transfer)
Подсистемы командного языка
[ редактировать ]Программа задания MTS всегда выполняет одну из нескольких подсистем командного языка или CLS. Многие команды MTS встроены в MTS и выполняются как часть MTS CLS. Пользовательские программы выполняются как USER CLS. USER CLS имеет особое отношение к системе символической отладки (SDS CLS), когда отладчик активен. Другие команды MTS реализованы в виде отдельных модулей, которые также ошибочно называются подсистемами командного языка или CLS, которые могут выполняться из общей виртуальной памяти или загружаться из файлов.
Каждый из этих отдельных CLS имеет собственное четырехзначное имя и выполняется как отдельный CLS в первоначальном смысле этого слова. Многие, но не все, из этих CLS предоставляют собственный отдельный язык подкоманд. Существуют параметры команды $SET , позволяющие использовать старые или новые версии CLS, а не текущие версии. есть возможность В команде $UNLOAD выгрузить CLS (освободить используемую им виртуальную память, закрыть все имена FD и освободить все открытые устройства или псевдоустройства). [7]
Одновременно выполняется только один CLS, но один CLS каждого типа может быть активным, и можно переключиться с одного CLS на другой, не выходя и не выгружая исходный CLS, а затем позже вернуться к исходному CLS и продолжить работу с того места, где один остановился. CLS, которые имеют свои собственные подкоманды, обычно поддерживают команду STOP для выхода из CLS, команду MTS и/или RETURN для возврата в вызывающий командный режим CLS или MTS, а также команды, начинающиеся со знака доллара ( $ ). выполняются как команды MTS с немедленным возвратом к исходному CLS.
Все CLS, за исключением USER CLS, выполняются в системном режиме в состоянии проблемы.
Состояние ограниченного обслуживания
[ редактировать ]Сеансы MTS обычно работают в «состоянии полного обслуживания», но во время крайней перегрузки системы сеансы терминалов могут быть переведены в «состояние ограниченного обслуживания» (LSS). [4] Механизм LSS включается системным оператором вручную и обычно используется только тогда, когда аппаратная система работает с пониженной производительностью из-за неисправности.
Терминальный сеанс помещается в LSS, если LSS был включен системным оператором и система перегружена при входе в систему. Сеансы LSS могут выдавать только команды MTS и запускать программы с коротким местным ограничением по времени. Вместо того, чтобы снижать производительность всех пользователей, LSS ограничивает размер задач, которые могут выполнять некоторые пользователи, до относительно небольших задач, таких как редактирование файлов и чтение сообщений, чтобы позволить другим пользователям получать разумную производительность при выполнении более крупных задач. Пользователи могут запросить перевод своего сеанса в состояние полного обслуживания ( $SET LSS=OFF ), и такие запросы удовлетворяются, если система не перегружена во время запроса.
Статистика команд
[ редактировать ]Каждая выдаваемая команда MTS записывается сначала в файл на диске, а затем на магнитную ленту. Эта информация доступна только персоналу и используется для расследования проблем с программным обеспечением, проблем безопасности, запросов на скидки, а также для предоставления статистики об использовании командного языка.
Пользовательские программы
[ редактировать ]Пользовательская программа — это программа, запускаемая пользователем, которая не обязательно является программой, принадлежащей пользователю или созданной им. Пользовательские программы могут предоставляться в общедоступных файлах, в файлах, доступных под СТАРЫМ: или НОВЫМ: идентификаторами входа, в файлах, принадлежащих другим пользователям и разрешенных для использования другими, или пользовательские программы могут быть разработаны текущим пользователем в файлах, которыми он владеет. .
Пользовательские программы выполняются с помощью команд $RUN , $RERUN и $DEBUG или, реже, с помощью команд $LOAD и $START . Команда $RESTART может использоваться для возобновления выполнения программы после прерывания внимания, которое не было обработано программой, прерывания программы, которое не было обработано программой (хотя перезапуск после прерывания программы обычно не работает должным образом) или после явного возврата в MTS из вызова подпрограммы MTS.
MTS загружает программы с помощью загрузчика динамической компоновки (UMLOAD), который считывает записи загрузчика (ESD, TXT, CSI, RDL, LCS, END, ...) из файла или устройства, указанного пользователем, и выборочно включает подпрограммы из библиотек, предоставленных пользователя, из библиотек системных подпрограмм, таких как *LIBRARY , и из системных подпрограмм, предварительно загруженных в общую виртуальную память. MTS использует стандартные записи загрузчика OS/360, что позволяет MTS довольно легко использовать компиляторы, разработанные для использования в других операционных системах IBM. [3]
Когда программа начинает выполнение, количество логических модулей ввода-вывода будет установлено либо явно с помощью $RUN или другой команды, либо по умолчанию. Любая текстовая строка, следующая за ключевым словом PAR=, передается программе в качестве параметра.
По умолчанию пользовательские программы выполняются с программным ключом *EXEC можно установить другой программный ключ , но с помощью команды $CONTROL . [4] Программы могут вызывать системную подпрограмму, чтобы сократить используемый ими программный ключ, или переключиться на программный ключ *EXEC , тем самым временно предоставляя себе меньший доступ к файлам, устройствам и другим службам, управляемым с помощью программных ключей. Программы также могут вызывать системную подпрограмму для удлинения или восстановления своего программного ключа в соответствии с некоторыми заранее установленными правилами.
MTS использует стандартные последовательности вызова S-типа и, реже, R-типа, используемые в OS/360. [5]
По умолчанию пользовательские программы выполняются в пользовательском режиме в проблемном состоянии. [2] Программы пользовательского режима не имеют доступа к сегменту виртуальной памяти системы и, следовательно, не имеют доступа к блокам управления системой, не могут вызывать привилегированные системные подпрограммы и не могут выполнять вызовы привилегированного супервизора (SVC). Программы пользовательского режима могут выдавать непривилегированные SVC, но немногие программы делают это напрямую и вместо этого вызывают системные подпрограммы для получения системных служб. Программы пользовательского режима могут вызывать системные подпрограммы, которые переключаются в системный режим после проверки того, что защищенная служба разрешена для конкретного вызывающего абонента. При возврате системной подпрограммы происходит возврат в пользовательский режим.
Выбранные пользовательские программы могут быть помечены для запуска в системном, а не в пользовательском режиме сотрудниками с привилегированными идентификаторами входа в систему, или сотрудники с привилегиями могут запускать пользовательскую программу в системном режиме с помощью ключевого слова в команде $RUN или $SET . [7]
Независимый от устройства ввод/вывод
[ редактировать ]Все запросы ввода/вывода, как самой программой задания MTS, так и программой, работающей под управлением MTS, выполняются с использованием общего набора вызовов подпрограмм (GETFD, FREEFD, READ, WRITE, CONTROL, GDINFO, ATTNTRP, ...). Одни и те же подпрограммы используются независимо от того, какая программа выполняет ввод-вывод и какой тип файла или устройства используется (пишущая машинка или графический терминал, линейный принтер, перфорация карт , файл на диске, магнитная или бумажная лента и т. д.). . Для использования этих подпрограмм не требуется никаких знаний формата или содержимого блоков управления системой. Программы могут использовать специфические характеристики конкретного устройства, но такие программы будут несколько менее аппаратно-независимыми.
Вход/выход MTS ориентирован на запись или строку. Программы считывают строки с терминала, устройства чтения карт, файла на диске или ленты и записывают строки на терминал, принтер, файл на диске или ленту. Преобразование в ASCII / EBCDIC и обратно, а также конечная обработка обычно выполняются внешним процессором или процедурой поддержки устройств (DSR) и поэтому не являются проблемой большинства программ. Хотя можно выполнять символьный ввод-вывод на терминал путем чтения или записи строк из одного символа, чтение или запись множества таких очень коротких строк не очень эффективна.
Каждая прочитанная или записанная строка состоит из от 0 до 32 767 байт данных и связанного с ней номера строки (целого числа со знаком, масштабированного на 1000), указывающего местоположение строки. Длина каждой читаемой или записываемой строки задается явно, поэтому программам не нужно самостоятельно обрабатывать символы окончания строки (CR/LF, NL) или другие терминаторы (нуль). Некоторые устройства поддерживают линии нулевой длины, а другие — нет. Для многих файлов и устройств номер строки представляет собой просто последовательный подсчет прочитанных строк, в то время как некоторые типы файлов явно связывают определенный номер строки с каждой строкой файла, а в других случаях номер строки синтезируется из данных, которые появляются в начало входной строки или номер строки могут быть добавлены к выходной строке.
Имена файлов или устройств
[ редактировать ]Ввод/вывод осуществляется напрямую путем ссылки на файл или устройство по его имени (FDname) или косвенно путем ссылки на логический блок ввода-вывода ( SCARDS или IN PUT, SPRINT или PR INT, SPUNCH или OBJ ECT, GUSER , SERCOM , от 0 до 99 ). Имена FD назначаются логическим модулям ввода-вывода с использованием ключевых слов на командном языке или по умолчанию.
Имена FDname могут быть простым именем файла, например MYFILE , простым именем устройства с префиксом знака «больше», например >T901 , или именем псевдоустройства, например *PRINT* . Все имена FD перед использованием преобразуются в верхний регистр, поэтому, как и команды MTS, имена FD не зависят от регистра.
Модификаторы ввода-вывода, диапазоны номеров строк и явная конкатенация могут использоваться для создания сложных имен FD из простых имен FD. Например:
FILE1@-TRIM (I/O modifier that retains trailing blanks) FILE2(1,10) (line number range that reads lines from 1 to 10 inclusive) FILE3+*SOURCE* (explicit concatenation) FILE4(1,10)@-TRIM+*TAPE*@-TRIM (all of the above in a single complex FDname)
Псевдо-имена устройств
[ редактировать ]Имена псевдоустройств (PDN) начинаются и заканчиваются звездочкой (например, *имя*). К распространенным псевдоустройствам относятся:
- *SOURCE* стандартный ввод (обычно либо терминал, либо для пакетных заданий — очередь ввода);
- *SINK* стандартный вывод (обычно терминал или для пакетных заданий принтер);
- *MSOURCE* главный источник, не переназначаемый, обычно терминал или устройство считывания карт;
- *MSINK* главный приемник, не переназначаемый, обычно терминал или принтер;
- *BATCH* помещает входные данные в новое пакетное задание;
- *PRINT* выводит вывод из буфера на принтер, аналогично *MSINK* для пакетных заданий;
- *PUNCH* направлял выходные данные на перфорацию карты (пока перфорация карт не была прекращена); и
- *ДУММА* все записанные данные отбрасываются, и все операции чтения возвращают конец файла (очень похоже на /dev/null для UNIX); и
- *AFD* активный файл или устройство, установленное с помощью команды $GET . [7]
Команды $SOURCE и $SINK можно использовать для переназначения имен FD, присвоенных *SOURCE* и *SINK* . Команда $MOUNT присваивает псевдоимена устройств (например, *T22*, *NET*) таким устройствам, как магнитные и бумажные ленты, а также сетевым соединениям (включая соединения с сервером). Команду $CREATE можно использовать для создания псевдоимен псевдоустройств для использования при импорте и экспорте BITNET, для заданий печати в буфере и для фиктивных устройств.
Модификаторы ввода-вывода
[ редактировать ]Модификаторы ввода-вывода, возможно, отрицательные, могут быть связаны с именем FD для изменения поведения по умолчанию.
Модификатор ввода-вывода указывается путем добавления знака at, за которым следует имя модификатора, к имени FDname. Например, *SOURCE*@UC приведет к тому, что строки, прочитанные из *SOURCE* , будут преобразованы в верхний регистр, прежде чем они будут представлены программе, а MYFILE@UC@-TRIM приведет к тому, что строки, прочитанные из файла MYFILE, будут преобразованы в верхний регистр, и любые конечные пробелы в конце строки будут сохранены. Некоторые часто используемые модификаторы ввода-вывода: @S (последовательный), @I (индексированный), @FWD (вперед), @BKWD (назад), @EBCD ( EBCDIC ), @BIN (двоичный), @UC (прописные). , @CC (логическое управление кареткой), @MCC (машинное управление кареткой), @NOCC (без управления кареткой), @TRIM (обрезать все, кроме последнего обучающего пробела). Некоторые модификаторы ввода-вывода обрабатываются MTS независимо от устройства, а другие зависят от устройства и обрабатываются процедурами поддержки устройств (DSR).
Не все файлы или устройства поддерживают все модификаторы ввода-вывода. Разные файлы и устройства имеют разные модификаторы ввода-вывода по умолчанию, и некоторые значения модификаторов ввода-вывода по умолчанию можно изменить с помощью команды $SET .
Диапазоны номеров строк
[ редактировать ]На определенные части файла или устройства можно ссылаться, включая номера начальной и конечной строк и, возможно, приращение номера строки в круглых скобках, разделенных запятыми. Номера строк и приращение представляют собой целые числа, масштабированные на 1000, и могут быть положительными или отрицательными (± nnnnn . nnn ). Например, SIMPLE.F(-35,197.5) откроет файл SIMPLE.F , начиная с номера первой строки, большего или равного -35, и вернет «конец файла» вместо номера первой строки, превышающего 197,5. Можно также включить приращение номера строки — например: SIMPLE.F(2,200,2) вернет все (и только) четные номера строк от 2 до 200 (включительно).
Символические номера строк FIRST или *F , LAST или *L , MIN и MAX могут относиться к первой, последней, минимально возможной и максимально возможной строкам соответственно. Например, SIMPLE.F(*F,0) будет относиться к «отрицательным» строкам файла SIMPLE.F . Здесь программисты могут размещать самодокументацию для файла (часто двоичного), фактические данные в файле начинаются со строки номер 1.
Также можно выполнять простое сложение и вычитание с символьными номерами строк: FIRST± m , *F± m , LAST± m , *L± m , MIN+ m , MAX- m , где m — целое число с десятичной точкой или без нее. масштабируется на 1000 (± нннн . ннн ). Таким образом, чтобы добавить новые строки в конец существующего файла, можно использовать имя FD в форме SIMPLE.F(LAST+1) .
Объединение файлов или устройств
[ редактировать ]Явная конкатенация позволяет соединять имена FD с помощью знака плюс, например NAMEA + NAMEB . В этом случае MTS прозрачно возвращает содержимое NAMEA , за которым следует содержимое NAMEB , или записывает в NAMEB после того, как запись в NAMEA достигает конца файла или другого состояния ошибки.
Неявная конкатенация происходит, когда входная строка содержит строку:
$CONTINUE WITH FDname
МТС продолжит использовать имя FD в качестве нового источника данных. Или, если строка вида:
$CONTINUE WITH FDname RETURN
прочитано, MTS будет возвращать содержимое нового имени FD до тех пор, пока не будет достигнут конец файла, а затем вернет следующую строку исходного имени FD (обратите внимание, что файл, который продолжается сам с собой, вызывает бесконечный цикл, обычно это ошибка, но иногда используется с хорошим эффектом).
Хотя строка начинается со знака доллара, $CONTINUE With — это не команда MTS, а скорее разделитель.
Модификатор ввода-вывода @IC и команда $SET IC={ON | OFF} можно использовать для управления неявной конкатенацией.
строки $ENDFILE
[ редактировать ]Если строка содержит строку $ENDFILE , MTS возвращает «мягкий» конец файла.
Хотя строка начинается со знака доллара, $ENDFILE — это не команда MTS, а скорее разделитель.
Модификатор ввода-вывода @ENDFILE и команда $SET ENDFILE={ALWAYS | ИСТОЧНИК | NEVER} можно использовать для управления обработкой $ENDFILE .
Линии CONTROL стоимостью $9700 и $9700.
[ редактировать ]Строки, начинающиеся со строк « $9700 » или « $9700CONTROL », можно скопировать или записать в *PRINT* для управления параметрами печати на страничном принтере Xerox 9700 . Строки $9700 вступают в силу в том месте, где они встречаются, а строки $9700CONTROL применяются ко всему заданию печати, в котором они встречаются. Хотя эти строки имеют форму, аналогичную командам MTS, на самом деле они являются командами устройства, а не настоящими командами MTS.
Файлы
[ редактировать ]

Файлы MTS хранятся в виде «страниц» размером 4096 байт на одном или нескольких общедоступных или частных дисковых томах. [16] Тома имеют метки томов, номера томов и имена томов (обычно MTS001, MTS002, ..., MTSnnn). Дисковые тома хранятся на традиционных дисковых накопителях с цилиндрической записью и фиксированной блочной архитектурой (FBA) или единовременно в IBM 2321 Data Cell .
Отдельные файлы не занимают дисковые тома. Максимальный размер файла ограничен свободным пространством, доступным на томе диска, на котором он находится. По умолчанию файлы создаются размером в одну страницу, но можно указать больший размер, а также максимальный размер ( $CREATE name SIZE= n P MAXSIZE= n P ). Файлы будут автоматически расширяться до тех пор, пока не достигнут максимального размера или не будет превышен лимит дискового пространства для идентификатора входа владельца. Пользователи могут запросить создание файла на определенном томе диска ( $CREATE name VOLUME= name ).
Файлы MTS попадают в одну из трех категорий: общедоступные файлы , пользовательские файлы и временные файлы :
- Публичные файлы — это файлы, имена которых начинаются, но не заканчиваются звездочкой (например, *LIBRARY , *USERDIRECTORY ). Публичные файлы, часто называемые «звездными файлами», — это общедоступные файлы, содержащие программы и данные, широко доступные всем пользователям. Например, *LIBRARY — это библиотека часто используемых системных подпрограмм. На заре существования MTS общедоступные файлы были единственными файлами, которыми можно было делиться, да и то только как файлы, доступные только для чтения. Позже общедоступные файлы можно будет разрешить и совместно использовать так же, как и любые другие файлы.
- Пользовательские файлы — это файлы, имена которых не начинаются со звездочки или знака минус. Они должны быть явно созданы ( $CREATE ) и уничтожены ( $DESTROY ). Они принадлежат и изначально разрешены только тому пользователю, который их создал, но их можно разрешить использовать другим идентификаторам пользователя с помощью команды $PERMIT . Для ссылки на файл, принадлежащий другому пользователю, к имени файла добавляется идентификатор пользователя владельца, за которым следует двоеточие (например, W163:MYPROGRAM ). За объем используемого дискового пространства взимается плата, и большинство идентификаторов входа имеют максимальный предел дискового пространства.
- Временные файлы — это файлы, имена которых начинаются со знака минус (например, -TEMP ). Их имена уникальны в пределах одного сеанса. Они создаются неявно при первом использовании, за них не взимается плата, они не учитываются при ограничении дискового пространства идентификатора входа и автоматически уничтожаются при завершении терминального или пакетного сеанса.
MTS не реализует каталоги существует , но де-факто двухуровневая группировка файлов благодаря включению в имя файла четырехзначного идентификатора пользователя MTS его владельца.
Имена файлов, как и все имена FD, перед использованием преобразуются в верхний регистр и поэтому не учитывают регистр.
Типы файлов
[ редактировать ]MTS поддерживает три типа файлов: строчные файлы, последовательные файлы и последовательные файлы с номерами строк, но наиболее распространенными были строчные файлы:
Линейные файлы
[ редактировать ]Строковые файлы ( $CREATE name или $CREATE name TYPE=LINE ) — это построчно-ориентированные файлы, которые индексируются (и доступны случайным образом) по номеру строки. Разрешенные номера строк: ±2147483,647 — по сути, целое число со знаком, деленное на 1000, но ссылки в командной строке были ограничены ±99999,999. Регулярная запись в файл увеличивает номер строки на 1. Строки имеют переменную длину, и строку можно перезаписать на любую длину от 1 до предельной длины строки (первоначально 256, но позже было изменено на 32767), не затрагивая окружающие строки. Перезапись ранее существовавшей строки до нулевой длины удаляет эту строку, не затрагивая окружающие строки.
По умолчанию номер первой строки, записываемой в пустой файл, равен 1 и увеличивается на 1 при каждой последующей записи. По умолчанию чтение файла начинается с номера первой строки, равного 1 или выше, и продолжается чтением каждой строки в порядке возрастания номеров строк. Это означает, что отрицательные номера строк являются «невидимыми» частями файла, для чтения которых требуются определенные ссылки.
Существуют команды (и системные подпрограммы) для изменения нумерации строк. Непрерывный набор строк может быть перенумерован в любую комбинацию начала и приращения, если строки файла не перенумерованы. Например, если файл состоит из строк 10, 20, 30, 40 и 50, строки 30–40 можно перенумеровать на 35,36, но не на 135,136, так как это изменит последовательность строк.
Индекс строки и данные хранятся на отдельных страницах диска, за исключением самых маленьких (одна страница) файлов, где индекс строки и данные хранятся вместе.
Команда $CREATE по умолчанию создает файлы строк.
Побочным эффектом построчной файловой системы является то, что программы могут поэтапно читать и записывать отдельные строки. Если кто-то редактирует файл (обычно текстовый файл) с помощью редактора файлов MTS ( $EDIT ), любые изменения, внесенные в строки, записываются немедленно, как и вставки и удаления определенных строк. Это существенно отличает ее от большинства (байт-ориентированных) файловых систем, где файл обычно считывается и изменяется в памяти, а затем массово сохраняется на диске.
Из-за проблем с оборудованием или программным обеспечением строковые файлы могут быть повреждены. Программа *VALIDATEFILE проверяет структуру строковых файлов.
Последовательные файлы
[ редактировать ]Последовательные файлы ( $CREATE name TYPE=SEQ ) представляют собой построчно-ориентированные файлы, в которых номер первой строки неявно равен 1 и увеличивается на 1 для каждой строки. После записи длина строки (кроме последней строки файла) не может быть изменена, хотя любую строку можно заменить строкой той же длины. Последовательные файлы обычно доступны для чтения только последовательно от начала до конца или записываются путем добавления в конец. Однако можно запросить ссылку на текущую строку последовательного файла и использовать эту ссылку для повторного перехода к этому конкретному местоположению.
Последовательные файлы несколько более эффективны с точки зрения пространства, чем строковые файлы, а также могут быть более эффективными с точки зрения процессорного времени по сравнению с большими неорганизованными строковыми файлами. Но основная причина существования файлов SEQ заключается в том, что они поддерживали длинные строки (до 32 767 символов) раньше, чем строковые файлы. Последовательные файлы стали менее распространены, поскольку строчные файлы могли поддерживать длинные строки. Последовательные файлы также используются для принудительного добавления новых строк в конец файла без необходимости указывать диапазон номеров строк (LAST+1).
Последовательный с файлами номеров строк
[ редактировать ]Файлы с последовательным номером строки ( $CREATE name TYPE=SEQWL ) аналогичны последовательным файлам, за исключением того, что номера строк сохранялись явно. У них есть все ограничения последовательных файлов, за исключением того, что номер строки может быть указан специально при записи в файл (при условии, что он больше, чем номер последней строки, записанной в файл). В отличие от строковых файлов, первое чтение файла SEQWL возвращает первую строку файла, даже если она была отрицательной.
Файлы SEQWL использовались редко, официально не поддерживались или были удалены из документации некоторыми сайтами MTS. Поскольку строковые файлы не очень хорошо работали с ячейкой данных, файлы SEQWL были реализованы как способ, позволяющий использовать ячейку данных для более долгосрочного и менее затратного хранения файлов, сохраняя при этом номера строк.
Общие файлы
[ редактировать ]С течением времени обмен файлами между пользователями МТС развивался в четыре этапа. [17]
Первый этап допускал ограниченный общий доступ к файлам, при котором общедоступные файлы или файлы библиотек (файлы, имена которых начинаются со звездочки) были доступны для чтения всем пользователям, а все остальные файлы (пользовательские файлы) могли быть доступны только их владельцам. Общедоступные файлы принадлежали и обслуживались сотрудниками Вычислительного центра, поэтому на данном этапе общий доступ предоставлялся только к файлам Вычислительного центра. [18]
Второй этап разрешил ограниченный общий доступ к файлам, где программу *PERMIT можно было использовать для (i) сделать файл доступным только для чтения (RO) владельцу файла и всем другим пользователям MTS, (ii) сделать файл доступным для копирования участниками. того же проекта, что и владелец файла, с помощью программы *COPY, или (iii) сделать файл доступным для копирования всем остальным пользователям с помощью программы *COPY. Что касается первого этапа, то по умолчанию владельцы имели неограниченный доступ к своим файлам и файлы были недоступны другим пользователям. [19]
Третий этап разрешен для «действительно общих файлов», где команду $PERMIT или функцию PERMIT можно использовать для совместного использования файла различными способами со списками других пользователей, проектов, всех других пользователей или их комбинацией. Типы доступа, которые могут быть разрешены: чтение, расширение записи, запись-изменение или пустая запись, перенумерация или усечение, уничтожение и разрешение. Что касается первого и второго этапов, по умолчанию пользовательский файл разрешен с неограниченным доступом для его владельца и без доступа для других. Доступ владельца файла также можно изменить, хотя владелец всегда сохраняет разрешение на доступ. Команда $FILESTATUS или функции FILEINFO и GFINFO могут использоваться для получения статуса разрешения файла. [16] [20]
Четвертый этап добавил программные ключи (PKeys) в список того, что может быть разрешено для файла. Таким образом, файлы могут быть разрешены пользователям, проектам, всем остальным пользователям, программным ключам или их комбинации. Ключи программы были связаны с командами и файлами MTS, что позволяло разрешить использование файлов определенным программам или определенным командам MTS. Помимо прочего, это позволило создавать в MTS программы, предназначенные только для выполнения или только для запуска. [2]
Файлам также может быть разрешено использование начальной подстроки идентификатора пользователя, идентификатора проекта или ключа программы. В результате может случиться так, что один и тот же идентификатор пользователя, идентификатор проекта и программный ключ потенциально могут иметь более одного типа доступа. В таких случаях фактический доступ разрешается в соответствии со следующими правилами: (i) идентификаторы пользователей, отдельно или в сочетании с программными ключами, имеют приоритет над идентификаторами проектов и программными ключами, ii) идентификаторы проектов, отдельно или в сочетании с программными ключами, имеют приоритет. над программными ключами, (iii) более длинные совпадения подстроки имеют приоритет над более короткими совпадениями подстроки, и (iv) если нет конкретного совпадения идентификатора пользователя, проекта или ключа программы, то используется доступ, указанный для «других». [21]
Подпрограмму PKEY можно использовать для сокращения программного ключа текущей запущенной программы или переключения программного ключа текущей запущенной программы на *EXEC и последующего восстановления программного ключа, что позволяет программе добровольно ограничить доступ к файлам в силу своего программного ключа. [21]
Блокировка файлов
[ редактировать ]В рамках «действительно общих файлов» (третий этап выше) была введена блокировка файлов для контроля одновременного доступа к общим файлам между активными сеансами MTS (то есть между отдельными запущенными задачами или процессами). [2] Блокировка файлов не ограничивает и не блокирует доступ к файлам в рамках одного сеанса MTS (между подсистемами командного языка или пользовательскими программами, работающими в рамках одного сеанса MTS). [2] Блокировка файлов в МТС носит скорее обязательный, чем рекомендательный характер. Файлы блокируются неявно при первом использовании определенного типа доступа или явно с помощью команды $LOCK или функции LOCK. Файлы разблокируются неявно, когда последнее использование файла в задаче закрывается, или явно с помощью команды $UNLOCK или подпрограммы UNLK. Команда $LOCKSTATUS или функции LSFILE и LSTASK могут использоваться для получения текущего статуса блокировки файла или задачи. [21]
Файл может быть «открытым», «неоткрытым» или «ожидающим открытия» и «не заблокированным», «заблокированным для чтения», «заблокированным для изменения», «заблокированным для уничтожения», «ожидающим чтения», «заблокированным для изменения». ожидание изменения» или «ожидание уничтожения». Открытый статус файла не зависит от его статуса блокировки. Блокировка файла для изменения также блокирует файл для чтения, а блокировка файла для уничтожения также блокирует файл для изменения и чтения. Любое количество задач может заблокировать файл для чтения в любой момент времени, но только одна задача может заблокировать файл для изменения в любой момент времени, и то только в том случае, если ни для одной задачи файл не заблокирован для чтения или не заблокирован для уничтожения. Только одна задача может заблокировать файл для уничтожения в любой момент времени, и то только в том случае, если ни в одной задаче файл не открыт, не заблокирован для чтения или не заблокирован для изменения.
Если попытка заблокировать файл не может быть удовлетворена, вызывающая задача будет ждать либо неопределенное время, либо определенный период времени, пока другая задача разблокирует файл, либо пока не будет получено прерывание внимания. Если файл не может быть заблокирован, возвращается ошибка, указывающая на это. Программное обеспечение для блокировки файлов обнаруживает взаимоблокировки между задачами, используя алгоритм Уоршалла. [22] и возвращает индикацию ошибки, не блокируя файл и не дожидаясь.
Блокировка файла по сути означает блокировку имени этого файла. [21] Например, следующую последовательность команд можно выполнить, оставив ФАЙЛ1 заблокированным, даже если файл с именем ФАЙЛ1 не всегда существует:
$lock FILE1 RENAME $rename FILE1 as FILE2 $create FILE1
Позднее эта возможность блокировки имен позволила использовать процедуры блокировки «файлов» для реализации блокировки на уровне записей между задачами, обращающимися к централизованно управляемому файлу *MESSAGES, который использовался системой MTS $Messagesystem для хранения почтовых ящиков и сообщений для отдельных пользователей.
Добавление блокировки файлов позволило снять ограничение, согласно которому с одним идентификатором пользователя можно было войти только один раз. Вместо этого количество одновременных входов контролировалось максимумом, который мог быть установлен в учетной записи пользователя менеджером проекта или бизнес-офисом сайта.
Сохранение и восстановление файла
[ редактировать ]Файлы регулярно копируются на ленту, если только они не помечены как NOSAVE . Процесс сохранения файлов включает в себя полное и частичное резервное копирование. Полное сохранение обычно выполняется раз в неделю, при этом ни один пользователь не вошел в систему. При частичном сохранении сохраняются только те файлы, которые изменились с момента последнего полного или частичного сохранения, и обычно они выполняются один раз в день поздним вечером или ранним утром во время нормальной работы, когда пользователи вошли в систему.
В Мичиганском университете были сделаны две копии полных лент с сохранениями, и одна копия хранилась «вне офиса». Сохраненные ленты хранились в течение шести недель, а затем использовались повторно. Записи каждого шестого полного сохранения хранились «навечно».
Файлы сохраняются для возможности восстановления после «катастроф на диске», когда файловая система повреждается или повреждается, обычно из-за аппаратного сбоя. Но пользователи также могут восстанавливать отдельные файлы с помощью программы *RESTORE .
Терминальная поддержка
[ редактировать ]






На пике своего развития MTS в Мичиганском университете одновременно поддерживала более 600 терминальных сессий, а также несколько пакетных заданий. [4]
Терминалы подключаются к МТС через модемы с коммутируемым доступом, выделенные или выделенные каналы передачи данных, а также сетевые соединения. Протокол связи Мичигана (MCP), простой протокол формирования кадров для использования с асинхронными соединениями , который обеспечивает обнаружение ошибок и повторную передачу, был разработан для повышения надежности соединений терминала с MTS и компьютера с соединениями MTS. [23]
очень широкий спектр терминалов Поддерживается , включая Teletype Model 33 со скоростью 10 символов в секунду , LA-36 со скоростью 30 символов в секунду и LA-120 DECWriter со скоростью 120 символов в секунду, IBM 2741 со скоростью 14 символов в секунду , а также постоянно увеличивающиеся скорости до 56 000 бит. в секунду, дисплей VT100 , дисплей Visual 550, дисплеи Ontel OP-1 и OP-1/R, графические дисплеи серии Tektronix 4000 и персональные компьютеры Apple (AMIE для Apple ][), IBM (PCTie для DOS), а также другие, использующие программы эмуляции терминала , в том числе некоторые, специально разработанные для использования с MTS. Также поддерживается большинство терминалов, совместимых с любой из этих моделей.
MTS также поддерживает доступ с 10- или 12-кнопочных телефонов с тональным набором через аудиоответчик IBM 7772. [24] [25] а позже и Votrax Audio Response Unit, [26] [27] Консоли IBM 1052 , консольные дисплеи IBM 3066 и IBM 3270 семейство локально подключаемых дисплеев (блоки управления IBM 3272 и 3274, но не удаленные дисплеи 3270).
Внешние коммуникационные процессоры
[ редактировать ]MTS может использовать и использует коммуникационные контроллеры, такие как IBM 2703 и Memorex 1270, для поддержки терминалов с коммутируемым доступом и удаленных пакетных станций через коммутируемые и выделенные каналы передачи данных, но эти контроллеры оказались довольно негибкими и неудовлетворительными для подключения большого количества разнообразные терминалы, а затем и персональные компьютеры, на которых установлено программное обеспечение эмуляции терминала, на все более высоких скоростях передачи данных. Большинство сайтов MTS предпочитают создавать собственные интерфейсные процессоры или использовать интерфейсные процессоры, разработанные одним из других сайтов MTS, для обеспечения поддержки терминалов.
Эти интерфейсные процессоры, обычно DEC PDP-8 , PDP-11 или LSI-11 , основанные на специально разработанном на месте оборудовании и программном обеспечении, будут действовать как блоки управления IBM, подключенные к каналам ввода-вывода IBM с одной стороны, а также к модемам и телефонные линии с другой. В Мичиганском университете внешний процессор был известен как концентратор данных (DC). [28] DC был разработан в рамках проекта CONCOMP Дэйвом Миллсом и другими и был первым устройством стороннего производителя, разработанным для подключения к каналу ввода-вывода IBM. [29] Первоначально это была система на базе PDP-8, DC был модернизирован для использования оборудования PDP-11, а также был разработан удаленный концентратор данных (RDC), в котором использовалось оборудование LSI-11, которое подключалось обратно к DC по цепи синхронных данных. Университет Британской Колумбии (UBC) разработал две системы на базе PDP-11: машину хост-интерфейса (HIM) и машину сетевого интерфейса (NIM). Университет Альберты использовал интерфейсный процессор на базе PDP-11.
Эти интерфейсные системы поддерживают собственный командный язык «команд устройства», обычно строки с префиксом специального символа, такого как знак процента (%), чтобы позволить пользователю настраивать соединения и управлять ими. [30] Команда $CONTROL и программы, работающие на MTS, могут использовать подпрограмму CONTROL для подачи команд устройства внешним и сетевым блокам управления.
Сетевая поддержка
[ редактировать ]Со временем некоторые внешние интерфейсы были развиты и стали обеспечивать настоящую поддержку сети, а не просто поддержку подключений к МТС.
параллельно предпринимала усилия В Мичиганском университете (UM) и Государственном университете Уэйна (WSU) компания Merit Network по развитию сетевой поддержки. Узлы Merit были основаны на PDP-11 и использовали специальное аппаратное и программное обеспечение для обеспечения интерактивных соединений между хостами между системами MTS, а также между MTS и системой CDC SCOPE/HUSTLER в Университете штата Мичиган (MSU). Узлы Merit были известны как коммуникационные компьютеры (CC) и действовали как блоки управления IBM с одной стороны, обеспечивая связь с другими CC с другой стороны. Первоначальные интерактивные соединения между хостами были дополнены немного позже соединениями между терминалами (TL), а еще позже — пакетными соединениями между хостами, которые позволяли удаленным заданиям, отправленным из одной системы, выполняться (EX) на другой с распечатанным (PR) ) и выход перфокарты (PU) возвращаются в передающую систему или на другой хост в сети. Удаленные пакетные задания можно отправлять с реального устройства считывания карт или через *BATCH* с использованием #NET. «карточка» перед заданием.
Компания Merit переименовала свои коммуникационные компьютеры в первичные коммуникационные процессоры (PCP) и создала вторичные коммуникационные процессоры (SCP) на базе LSI-11. PCP составляли ядро сети и подключались друг к другу через Ethernet и выделенные каналы синхронной передачи данных. SCP были подключены к PCP по синхронным каналам передачи данных. PCP и SCP в конечном итоге будут включать в себя интерфейсы Ethernet и поддерживать подключения к локальной сети (LAN). PCP также будут служить шлюзами к коммерческим сетям, таким как компании GTE Telenet (позже SprintNet), Tymnet и Autonet ADP , обеспечивая доступ к национальной и международной сети МТС. Еще позже PCP предоставили услуги шлюза для сетей TCP/IP , которые стали сегодня Интернетом .
PCP и SCP Merit в конечном итоге заменили концентраторы данных и удаленные концентраторы данных в Мичиганском университете. На пике своего развития было установлено более 300 компьютеров Merit PCP и SCP, поддерживающих более 10 000 терминальных портов.
Виртуальные среды
[ редактировать ]UMMPS предоставляет средства, позволяющие создавать виртуальные среды, виртуальные машины или виртуальные операционные системы. Оба реализованы как пользовательские программы, работающие под управлением МТС.
Первоначальная работа над первой виртуальной машиной MTS была проведена в Мичиганском университете для моделирования IBM S/360-67 и обеспечения возможности отладки UMMPS и MTS. Позже Университет Британской Колумбии провел первоначальную работу по созданию виртуальной машины S/370 MTS. Теоретически эти виртуальные машины можно использовать для запуска любой системы S/360 или S/370, но на практике виртуальные машины использовались только для отладки MTS, поэтому могут существовать тонкие функции, которые не используются MTS и которые не полностью или не используются. правильно реализовано. Виртуальная машина MTS никогда не обновлялась для поддержки архитектуры S/370-XA (вместо этого для отладки MTS использовались другие инструменты, такие как SWAT и PEEK, а IBM VM/XA или VM/ESA для отладки UMMPS использовались ).
В начале 1970-х годов в Государственном университете Уэйна проводилась работа по запуску версии OS/MVT на модифицированной виртуальной машине (VOS) под управлением MTS в качестве производственной услуги. [31]
«Студенческие» виртуальные машины в МТС также созданы как средства обучения. Здесь ОС, работающая на виртуальной машине (написанной студентом), использует смоделированные устройства и вообще не имеет связи с «реальным» внешним миром (за исключением, возможно, консоли).
Помимо виртуальных машин, МТС предоставляет две программы, реализующие виртуальные среды операционной системы. [32] *FAKEOS , разработанный в Университете Альберты, позволяет запускать программы из OS/360 в качестве пользовательских программ в MTS. *VSS , разработанный в Университете Британской Колумбии, позволяет запускать программы из OS/VS1 и MVS/370 в качестве пользовательских программ в MTS. [33] Ни одна из программ на самом деле не запускает операционную систему IBM, вместо этого они моделируют операционную среду в достаточной степени, чтобы позволить запускать отдельные программы, разработанные для этих операционных систем. Обе программы можно запускать напрямую, но часто они запускаются из файлов драйверов, которые создают у конечного пользователя впечатление, что они запускают обычную пользовательскую программу MTS.
Электронная почта
[ редактировать ]как минимум три различные реализации электронной почты В МТС в разное время были доступны :
- *MAIL от NUMAC, но доступно не на всех сайтах МТС;
- CONFER , система компьютерных конференций, написанная Робертом Парнсом из UM; и
- $MESSAGESYSTEM от Вычислительного центра Мичиганского университета. [4] [34]
CONFER и *MAIL только отправляют и получают почту «локальным» пользователям и от них.
Доступен пользователям в июле 1981 г. [35] $MESSAGESYSTEM — последняя из трех реализованных систем, которая стала наиболее широко используемой. В период с 1981 по 1993 год он использовался для отправки и получения более 18 миллионов сообщений в Мичиганском университете. [36] Он может отправить:
- локальные и сетевые сообщения электронной почты,
- рассылки (немедленные сообщения, отображаемые на терминале другого пользователя, если рассылки не были заблокированы другим пользователем),
- бюллетени (сообщения, отправляемые оператором системы конкретным пользователям, доставляемые автоматически в начале сеанса МТС) и
- входные сообщения (сообщения, рассылаемые оператором системы всем пользователям, доставляемые автоматически перед началом сеанса МТС).
Некоторые примечательные особенности $MESSAGESYSTEM включают в себя возможность:
- отправлять отдельным лицам по идентификатору входа или имени, группам лиц по идентификатору входа, идентификатору проекта или имени группы или оператору системы;
- отправить в список, хранящийся в файле;
- использовать программу *USERDIRECTORY для создания и ведения базы данных имен электронной почты для отдельных лиц и групп, включая имена и группы, включающие удаленных или сетевых пользователей;
- для отзыва/удаления сообщений, которые еще не были прочитаны;
- добавлять или удалять получателей сообщений после их отправки;
- отображать историю сообщений в цепочке писем без необходимости включать текст из старых сообщений в каждое новое сообщение;
- устанавливать срок действия и удерживать до даты и времени для сообщений электронной почты;
- для отображения статуса входящих и исходящих сообщений;
- для получения входящих и исходящих сообщений с использованием модели базы данных (входящие, исходящие, новые, старые/просмотренные, получателям , от получателей , номер сообщения, дата отправки, срок действия, ...);
- разрешить использование почтового ящика с идентификаторами входа, отличными от владельца почтового ящика;
- автоматически пересылать сообщения из одного почтового ящика в другой;
- архивировать старые сообщения и
- отправлять и получать сообщения, используя интерфейс подпрограммы в дополнение к командам.
Приложение InfoX (также известное как MacHost) для Apple Macintosh было разработано для обеспечения современного интерфейса с системой сообщений MTS и *USERDIRECTORY .
В 1984 году МТС можно было использовать для отправки и получения удаленной электронной почты с более чем 300 сайтов по всему миру. [4]
Первая возможность отправлять и получать сообщения электронной почты от пользователей удаленных систем (удаленные сообщения или сетевая почта) была реализована в 1982 году. [35] в рамках проекта MAILNET, совместных усилий 16 университетов и EDUCOM (позже EDUCAUSE), поддерживаемых при финансовой поддержке Carnegie Corporation . MIT служил ретранслятором между сайтами MAILNET и шлюзом к CSNET , ARPANET и BITNET . MTS в Мичиганском университете использовала свои соединения с Merit Network и через Merit с GTE коммерческой сетью X.25 , Telenet (позже SprintNet), для связи с MIT. MTS в Мичиганском университете служил ретранслятором для других сайтов в кампусе UM, а также для других сайтов MTS, которые не имели прямого доступа к ретранслятору MAILNET в Массачусетском технологическом институте.
Удаленные адреса электронной почты пользователя МТС из Мичиганского университета:
- имя @UMich-MTS.Mailnet (с сайтов MAILNET и BITNET)
- имя % [адрес электронной почты защищен] (с сайтов CSNET и ARPANET)
- имя @UM (с других сайтов UM или МТС)
Для отправки электронной почты на удаленный сайт пользователи МТС в Мичиганском университете использовали адреса вида:
- name @CARNEGIE (Университету Карнеги-Меллона сайт MAILNET)
- имя @CARNEGIE.MAILNET (более официальное, но более длинное название CMU)
- name @WSU (для Государственного университета Уэйна и сайта МТС)
- имя @Wayne-MTS.Mailnet (более официальное, но более длинное название WSU)
- имя % [адрес электронной почты защищен] (Браунскому университету, сайту CSNET Phonenet)
- имя @cornell.ARPA (для сайта CSNET или ARPANET Корнельского университета)
- name @STANFORD.BITNET (сайт BITNET Стэнфордского университета)
Со временем, поскольку все больше и больше компьютеров имели прямое подключение к Интернету, подход ретрансляции MAILNET был заменен более прямой и надежной одноранговой доставкой электронной почты и стилем доменных адресов электронной почты, используемым сегодня ( имя @um. cc.umich.edu).
ИнфоX
[ редактировать ]
InfoX (произносится как «info-ex», первоначально InfoDisk) — программа для Apple Macintosh, разработанная Отделом информационных технологий Мичиганского университета. [34] Он предоставляет современный пользовательский интерфейс (меню, значки, окна и кнопки), который можно использовать для проверки электронной почты MTS, участия в конференциях CONFER II , доступа к каталогу пользователей MTS, а также для создания, редактирования и управления файлами. InfoX добавляет функции обработки текста в стиле Macintosh к более традиционным функциям редактирования, доступным в интерфейсах командной строки MTS, $Message, $Edit и CONFER. Можно использовать стандартные команды «Вырезать», «Копировать» и «Вставить» в меню «Правка» Macintosh для перемещения текста из любого файла Macintosh.
Учет и начисление
[ редактировать ]Каждому идентификатору входа выделяются ограничения ресурсов (деньги, дисковое пространство, время подключения и т. д.), которые контролируют объем и типы работы, которые может выполнять этот идентификатор. [4] Идентификаторы могут быть ограничены использованием только сеансов терминала или только пакетных заданий или ограничены работой в то время дня или дни недели, когда взимаемые тарифы ниже. Каждому идентификатору входа назначается дата истечения срока действия.
Ресурсы, за которые может взиматься плата, включают в себя:
- Время процессора — рассчитывается в секундах процессорного времени.
- Использование памяти — тарифицируется как интеграл CPU-VM... например, 40 страниц виртуальной памяти, использованные в течение 10 секунд, тарифицируются как 400 страничных секунд.
- Использование принтера — тарифицируется как количество страниц бумаги и строк вывода (для построчных принтеров) или страниц и листов (для страничных принтеров).
- Используемое дисковое пространство — оплата в странично-месяцах (одна страница = 4096 байт).
- Подключение к терминалу или сети с оплатой за считанные минуты
- Карты читаются и перфорируются - заряжаются картой
- Бумажная лента, перфорированная ногой
- Установленные ленты и время использования стримера рассчитывается в зависимости от количества установленных лент и минут использования.
- Дополнительная плата за программный продукт (взимается отдельно для каждой программы за определенные лицензионные программные продукты)
- Другие ресурсы (например, плоттеры, фотонаборные машины и т. д.)
Обратите внимание: хотя за используемую виртуальную память взимается плата, за используемую реальную память плата не взимается. Также обратите внимание, что никаких изменений в операциях постраничного ввода не произошло, хотя они включены в сводную информацию сеанса, которая сообщается при выходе из сеанса.
Различные тарифы могут быть изменены для разных классов проектов (внутренних, внешних, коммерческих и т. д.) и для разного времени суток или дней недели. В зависимости от политики и практики на разных сайтах, сборы могут взиматься за «настоящие деньги» или «мягкие деньги» (мягкие деньги иногда называют «забавными деньгами», хотя насколько они забавны, обычно зависит от того, кто платит, а кто нет. счета).
Пользователи могут отображать стоимость сеанса с помощью команды $DISPLAY COST , могут отображать балансы своих учетных записей с помощью команды $ACCOUNTING , а стоимость сеанса и оставшийся баланс учетной записи отображаются после завершения задания или сеанса. Существует также опция ( $SET COST=ON ), которая приведет к отображению дополнительной и совокупной стоимости сеанса после выполнения каждой команды MTS.
Чтобы предотвратить перерасход средств на счете пользователя, денежный лимит проверяется при попытке пользователя войти в систему. Если баланс счета равен нулю или отрицателен, вход в систему невозможен. Для пакетных заданий, если баланса счета недостаточно для покрытия расчетных расходов по заданию, задание не запускается. Для терминальных сессий, когда баланс счета падает ниже одного доллара, печатается предупреждение «У вас закончились деньги», за которым следует текущий баланс. Это сообщение «нет денег» повторяется через определенные промежутки времени, пока пользователь не выйдет из системы. Идентификаторы входа в систему могут иметь отрицательный баланс, но обычно небольшой или случайно. В зависимости от административной политики на конкретном объекте проектам часто приходится платить за используемые ресурсы, даже если они превышают разрешенную сумму.
Чтобы обеспечить дополнительную защиту от аварий, которые могут быстро использовать больше ресурсов, чем хотелось бы, пользователи могут также установить глобальные и локальные ограничения на использование времени ЦП. Глобальные ограничения по времени ( $SIGNON ccid T= maxtime ) применяются ко всему заданию или сеансу. К запуску отдельных программ применяются локальные ограничения по времени ( $RUN program T= maxtime ). Также могут быть установлены глобальные и локальные ограничения на количество печатаемых страниц и количество перфорируемых карт ( $SIGNON ccid P= maxpages C= maxcards и $RUN program P= maxpages C= maxcards ). Ограничение времени локального процессора по умолчанию можно установить с помощью команды $SET TIME= maxtime .
Ссылки
[ редактировать ]- ^ Лекция MTS 1 , транскрипция первой из серии лекций о внутреннем устройстве терминальной системы Мичигана, прочитанных Майком Александром, Доном Беттнером, Джимом Гамильтоном и Дугом Смитом, ок. 1972 год
- ^ Перейти обратно: а б с д и ж г час я дж «Защита информации в среде общего назначения с разделением времени» , Гэри К. Пиркола и Джон Сангинетти, Труды симпозиума IEEE по тенденциям и приложениям, 1977: Компьютерная безопасность и целостность , том. 10 нет. 4, стр. 106–114.
- ^ Перейти обратно: а б с д «Организация и особенности Мичиганской терминальной системы» , М.Т. Александр, с. 586, Материалы весенней совместной компьютерной конференции AFIPS в мае 1972 г.
- ^ Перейти обратно: а б с д и ж г час я дж к MTS Том 1: Терминальная система Мичигана , страницы 9, 13–14, ноябрь 1991 г., Вычислительный центр Мичиганского университета, Анн-Арбор, Мичиган.
- ^ Перейти обратно: а б с д MTS Том 3: Описания системных подпрограмм , Вычислительный центр Мичиганского университета, Анн-Арбор, Мичиган
- ^ Подсерия Michigan Terminal System (MTS) , публикации вычислительного центра, 1965–1999, Историческая библиотека Бентли, Мичиганский университет
- ^ Перейти обратно: а б с д и ж г час я дж к MTS Volume 1: Systems Edition, устаревшие и внутренние команды MTS , ноябрь 1991 г., Мичиганский университет, 60 стр.
- ^ Перейти обратно: а б «Программы супервизора с разделением времени» , заметки о сравнении программ супервизора CP-67 , TSS/360 , MTS и Multics Майкла Т. Александера, «Продвинутые темы системного программирования» (1970, переработка 1971 года), Летняя инженерная конференция Мичиганского университета.
- ^ Перейти обратно: а б Описания вызовов супервизора UMMPS D6.0 , ноябрь 1987 г., Мичиганский университет, 156 стр.
- ^ MTS Том 14: Ассемблеры 360/370 в MTS , Вычислительный центр Мичиганского университета, Анн-Арбор, Мичиган
- ^ Воспоминания разработчиков MTS, подкрепленные обзорами журналов обновлений, включенных в дистрибутивы MTS, в MTS (Michigan Terminal System), 1968–1996 гг. , Вычислительный центр (Мичиганский университет) записывает 1952–1996 гг., Историческая библиотека Бентли, Мичиганский университет
- ^ «Использование инструкции вызова монитора для реализации переключения доменов в архитектуре IBM 370» , Джон Сангинетти, Вычислительный центр Мичиганского университета, Обзор операционных систем ACM SIGOPS , том 15, выпуск 4 (октябрь 1981 г.), стр. 55-61
- ^ «Анализ проникновения терминальной системы Мичигана» , Б. Хеббард, П. Гроссо и др., Обзор операционных систем ACM SIGOPS , том 14, выпуск 1 (январь 1980 г.), стр. 7-20
- ^ «Эффект твердотельных устройств подкачки в большой системе с разделением времени» , Джон Сангинетти, Вычислительный центр Мичиганского университета, Обзор оценки производительности ACM SIGMETRICS , Том 10, выпуск 3 (осень 1981 г.), стр. 136–153, ISSN 0163-5999
- ^ MTS Том 21: Расширения команд MTS и макросы , Вычислительный центр Мичиганского университета, Анн-Арбор, Мичиган
- ^ Перейти обратно: а б «Файловая система для среды общего назначения с разделением времени» , Г. К. Пиркола, Труды IEEE , июнь 1975 г., том 63, вып. 6, стр. 918–924, ISSN 0018-9219.
- ^ «Эволюция файловой системы MTS» , Гэри Пиркола, Майк Александер и Джефф Огден, Архив терминальной системы Мичигана , по состоянию на 7 июня 2014 г.
- ^ MTS Volume I: Терминальная система Мичигана , второе издание, Вычислительный центр, Мичиганский университет, декабрь 1967 г., 415 страниц.
- ^ «Ответ Майка о *PERMIT и *COPY» , Майк Александер, Архив терминальной системы Мичигана , 24 мая 2014 г., по состоянию на 7 июня 2014 г.
- ^ «ОБЩИЕ ФАЙЛЫ — это настоящая вещь» , Информационный бюллетень вычислительного центра , Мичиганский университет, том 2, номер 15, 23 октября 1972 г., страница 1, по состоянию на 7 июня 2014 г.
- ^ Перейти обратно: а б с д MTS Volume 1: Терминальная система штата Мичиган , Вычислительный центр Мичиганского университета, ноябрь 1991 г., 382 страницы.
- ^ « Теорема о булевых матрицах », Стивен Уоршалл, Журнал ACM , Vol. 9, № 1 (январь 1962 г.), страницы 11–12, doi: 10.1145/321105.321107.
- ^ MTS Том 4: Терминалы и сети в MTS , Вычислительный центр Мичиганского университета
- ^ Руководство пользователя блока звукового ответа , Дуглас Б. Смит, Проект CONCOMP, Мичиганский университет, 1970 г.
- ^ «Голосовой вывод из IBM System/360» , AB Urquhart, IBM, afips, стр. 857, Труды осенней совместной компьютерной конференции , 1965 г.
- ^ "Аудиоответ Мичиганского университета Центр синтеза систем и речи», Эдвард Дж. Фрончак, Вторая Американо-Японская компьютерная конференция, материалы, стр. 380–84, 1975 г.
- ^ «Внутренний дизайн системы аудиоответа Мичиганского университета для генерации сегментных фонем из текста», Эдвард Дж. Фрончак и Джеймс Ф. Блинн, Труды Международного компьютерного симпозиума 1975 , стр. 404-10, Vol. 1 августа 1975 г.
- ^ Концентратор данных , специализированное периферийное устройство для подключения интерактивных терминалов к System/360 Model 67, обзор и фотографии Дэйва Миллса , руководителя проекта и главного дизайнера во время его разработки.
- ^ Концентратор данных , Дэвид Л. Миллс, Проект CONCOMP, Мичиганский университет, 1968 г.
- ^ Руководство пользователя концентратора данных , Дэвид Л. Миллс, Джек Л. Ди Джузеппе и В. Скотт Герстенбергер, Проект CONCOMP, Мичиганский университет, апрель 1970 г.
- ^ «Эффективная реализация виртуальной машины» , Р. Дж. Сродава и Л. А. Бейтс, Государственный университет Уэйна, afips, стр. 301, Труды Национальной компьютерной конференции , 1973 г.
- ^ MTS Том 2: Описания общедоступных файлов , Вычислительный центр Мичиганского университета, Анн-Арбор, Мичиган
- ^ MSC/NASTRAN является ранним, возможно, слишком ранним примером использования *VSS, см. MSC/NASTRAN в Мичиганском университете , Уильям Дж. Андерсон и Роберт Э. Сэндсторм, 1982, Инженерный колледж Мичиганского университета.
- ^ Перейти обратно: а б MTS, том 23: Обмен сообщениями и конференц-связь в MTS , Вычислительный центр Мичиганского университета, Анн-Арбор, Мичиган
- ^ Перейти обратно: а б «Хронология МТС» , Дайджест информационных технологий , Мичиганский университет, стр. 9–10, Том 5, № 5 (13 мая 1996 г.)
- ^ Письмо от 12 января 1993 г. Джеймса Дж. Дудерштадта, президента Мичиганского университета, Джиму Стеркену, бывшему сотруднику вычислительного центра UM и основному автору системы сообщений MTS.