1.   Команды, которые реализованы в виде отдельных файлов. Это те команды, которые можно модифицировать или добавлять новые.

2.   Команды, которые встроены в интерпретатор команд, т.е. те команды, которые выполняет сам интерпретатор. К таким командам относится команда kill, по которой осуществляется передача соответствующего сигнала от имени интерпретатора. Есть также полезная команда alias, которая используется для переименования существующих команд.

Интерпретатор команд CSH позволяет осуществлять работу с предысторией. Он может организовать буферизацию N последних команд и организует доступ к списку последних команд. В частности, можно выполнять и редактировать командные строки из списка предыстории и снова их выполнять. CSH имеет возможность именовать строки из списка предыстории. Ссылка на соответствующую строку осуществляется с помощью команды, которая начинается с символа ! , за которым следует некоторая суффиксная часть . Ссылка !! выполняет последнюю команду. Ссылка вида !!N , где N - некоторое число, выполняет строку из с писка предыстории с номером N. Если N отрицательно, то номер строки отсчитывается с конца, к примеру, !!-1 означает выполнение последней команды. Кроме того, могут быть некоторые контекстные ссылки вида !<...>.

Переменные CSH

Интерпретатор команд предоставляет возможность программирования на уровне CSH. Для этого предусмотрена декларация переменных и возможность присвоения им значения, а также набор высокоуровневых операторов, которые по своей семантике похожи на операторы языка Си (отсюда и название интерпретатора CSH). CSH фактически есть высокоуровневый язык с операторами языка Си. Оперируя с переменными CSH можно составлять программы, которые выполняют некоторые действия.

Кроме всего прочего, имеются предопределенные имена, которые отвечают за настройку системы, в частности, о том, сколько строк предыстории сохраняются. Сохранение происходит в двух ипостасях: первое - это оперативное сохранение, есть параметр (переменная history), который определяет, сколько строк должно быть сохранено в течении последнего сеанса работы. Второе - есть возможность сохранения предыстории между сеансами, т.е. при очередном входе систему уже будет определен некоторый список предыстории (размер списка - в переменной savehistory).

Кроме переменных, с помощью которых осуществляется настройка, и имена которых определены, есть еще один класс переменных CSH - это т.н. внутренние переменные, которые также являются зарезервированными. Это переменные, которые имеют предопределенные имена и определяют свое значение через внутренние функции интерпретатора команд. В частности, есть переменная path, это есть текстовый массив, в котором находятся текстовые строки, содержащие полные имена некоторых каталогов. В соответствии с содержимым переменной path, CSH осуществляет поиск файлов, которые являются командами, введенными пользователями. Мы с вами говорили, что в UNIX (кроме встроенных команд) специальных команд нет, командой является любой исполняемый файл. Если пользователь ввел некоторое имя NAME, поиск исполняемого файла с именем NAME будет осуществляться, во-первых, в текущем каталоге, а во вторых, в каталогах, указанных в переменной path, в соответствующем порядке.

Переменная home - содержит имя домашнего каталога.

Переменная ignoreeof - это переменная, установка которой блокирует завершение сеанса работы по вводу символа ^D (Ctrl-D).

В системе можно варьировать вид приглашения (к вводу) с помощью переменной prompt, причем это приглашение может быть достаточно интеллектуальным. В нем, например, может присутствовать дата и т.п.

Мы с вами рассмотрели переменную path, она может определять много директорий. Представьте себе, что я ввожу некоторую командную строку NAME и в текущем каталоге соответствующего файла нет. Это означает, что будет осуществлен поиск файла с именем NAME по всем каталогам, записанным в переменной path (со всеми вытекающими последствиями). Это может быть долго. А если еще учесть, что вы работаете в многопользовательской системе, и каждый постоянно вводит какие-то команды, то накладные расходы получаются сумасшедшими. Система UNIX разумная система, и одним из правил, которых придерживались ее разработчики было то, что если где-то что-то можно оптимизировать, то надо это сделать. При входе пользователя в систему на основании значения переменной path формируется hash-таблица имен исполняемых файлов, находящихся во всех перечисленных каталогах (естественно, учитывается порядок каталогов). Поиск команды (если она не найдена в текущем каталоге) будет заключаться в просмотре этой быстрой hash-таблицы. За счет этого достигается ускорение доступа к команде, хотя при входе в систему возможна значительная задержка, которая вызвана формированием этой hash-таблицы.

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

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

CSH имеет возможность работы с переменными окружения (можно их просматривать, устанавливать и т.п.).

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

Специальные файлы

Любой командный язык имеет набор т.н. профайлов, или стартовых файлов. CSH имеет две разновидности этих файлов: это файлы, которые могут выполняться при старте CSH, и файлы, которые выполняются при завершении работы.

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

При завершении работы с CSH запускается файл с именем .logout в котором также может находиться некоторый набор команд.

Есть стандартный файл, который может образоваться в процессе работы - это файл .history. Если у вас определена возможность сохранения истории, то как раз в этом файле буферизуется предыстория вашей работы.

Теперь подведем итог, и я напомню в чем вы должны разобраться сами:

     CSH - как язык программирования. Типы переменных CSH. Программирование на CSH.

     Соглашения, которые определяет CSH при работе со строками. Разбиение командной строки на слова. Интерпретация метасимволов. Возможность ссылки на командные строки предыстории.

     Встроенные команды CSH.

     Специальные переменные CSH: внутренние переменные и переменные окружения.

     Специальные командные файлы CSH.


Лекция №22

Многомашинные ассоциации

Терминальные комплексы

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

Структуру терминального комплекса можно изобразить следующим образом:

Есть вычислительная система, имеется канал взаимодействия с внешним миром, к которому подключено устройство, называемое мультиплексор. Это устройство, которое обеспечивает взаимодействие группы внешних устройств с вычислительной системой (ВС) через один канал ввода/вывода. К каналам мультиплексора могут быть подключены локальные терминалы.

Кроме того может быть подключено устройство, называемое модемом. Модем позволяет выйти в телефонную или телеграфную сеть, работающую в аналоговом режиме, и передавать информацию (модему, в другой части сети). К модему подключается удаленный терминал. Модем преобразует дискретный сигнал, поступающий от ВС (или терминала), в аналоговый сигнал, который уже можно передавать по сети; и обратно - аналоговый в дискретный.

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

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

Линия связи, которая связывает один удаленный терминал с компьютером, называется линией связи типа точка-точка. Эта линия может быть либо арендуемой (мы договариваемся с телефонными станциями и фиксируем коммутацию), либо коммутируемой.

Канал может быть многоточечным. При этом на входе находится удаленный мультиплексор. Многоточечные каналы также могут быть либо арендуемыми, либо коммутируемыми.

Типы каналов связи:

1.   Симплексные каналы - каналы, по которым передача информации ведется в одном направлении.

2.   Дуплексные каналы - каналы, которые обеспечивают одновременную передачу информации в двух направлениях.

3.   Полудуплексные каналы - каналы, которые обеспечивают передачу информации в двух направлениях, но в каждый момент времени только в одну сторону (подобно рации).

ВС имеет комплекс программ, которые обеспечивают взаимодействие пользователей через всю коммуникационную среду, с ВС. В качестве локальных и удаленных терминалов могут присутствовать как реальные терминальные устройства, так и компьютеры, которые эмулируют работу терминала.

Многомашинные вычислительные комплексы

Многомашинные вычислительные комплексы (ММВК) - это программно аппаратное объединение группы вычислительных машин, в которых:


Информация о работе «Interprocess Communication»
Раздел: Информатика, программирование
Количество знаков с пробелами: 88065
Количество таблиц: 11
Количество изображений: 4

Похожие работы

Скачать
232852
0
0

... с приглашением по запросу (в машинной графике)required parameter обязательный параметрrequired space обязательный пробел (в системах подготовки текстов)requirements specification 1. техническое задание 2. описание требований к программному средствуrerun перезапуск, повторный запускreschedule переупорядочивать очередь (о диспетчере операционной системы)reschedule interval период переупорядочения ...

Скачать
225728
6
0

... ориентированы на 32 разрядные шинные архитектуры компьютеров с процессорами 80386, 80486 или Pentium. Фирма Novell также подготовила варианты сетевой ОС NetWare, предназначенные для работы под управлением многозадачных, многопользовательских операционных систем OS/2 и UNIX. Версию 3.12 ОС NetWare можно приобрести для 20, 100 или 250 пользователей, а версия 4.0 имеет возможность поддержки до 1000 ...

Скачать
38984
0
0

... было очень своевременным. Оно ознаменовало рождение операционной системы, распространяемой с открытыми исходными кодами. Р. Столлман, конечно, прав, когда настаивает на том, что операционная система Linux должна называться GNU/Linux. Но так уж сложилось, что название ядра стало служить названием всей операционной системы, и мы в этой книге будем поступать так же. 3 Основные характеристики ОС ...

Скачать
63665
1
3

... при создании и отличают ее до сих пор. Более того, несмотря на старания господина Гейтса, ситуация такова, что он повторяет те программные интерфейсы, которые используются для взаимодействия управления процессами, а не фирмы разработчики UNIX-ов повторяют те интерфейсы, которые появились в Windows. Первенство операционной системы UNIX очевидно. Мы говорили о том, что процесс в UNIX-е - это есть ...

0 комментариев


Наверх