DAY18 (Старые версии Машбука или нечто подобное)

2019-05-08СтудИзба

Описание файла

Файл "DAY18" внутри архива находится в следующих папках: Старые версии Машбука или нечто подобное, Лекции (Машечкин 1998). Документ из архива "Старые версии Машбука или нечто подобное", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "DAY18"

Текст из документа "DAY18"

4

Лекция №18

Лекция 18

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

Командные языки. Интерфейсы работы с пользователем

Одним достаточно важным с точки зрения обывателя критерием оценки операционной системы да и пожалуй всей вычислительной системы в целом является интерфейс, предоставляемый операционной системой для работы с пользователем. Вы имеете достаточно большой опыт по работе с интерфейсами. Вы, наверняка, пользовались интерфейсом MS DOS - командной строкой, работали с графическим, достаточно удобным интерфейсом MS Windows 95, который предоставляет разнообразные средства по работе с папками, файлами, DESKTOPом с использованием механизма ссылок, ассоциирования с различными графическими объектами.

В ОС UNIX есть целый спектр программных интерфейсов, обеспечивающих взаимосвязь пользователя с системой. Эти интерфейсы реализованы для различных аппаратных условий. Есть интерфейсы для работы в алфавитно-цифровом режиме, в котором контакт между пользователем и системой осуществляется в основном при помощи клавиатуры и дисплея. Есть интерфейсы, которые позволяют работать в графическом режиме. (Существуют UNIX-интерфейсы до мельчайших подробностей повторяющие интерфейсы Microsoft Windows 95. И неискушенному пользователю может показаться, что он работает в Windows.)

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

Возвратимся к ОС UNIX. Традиционными интерпретаторами команд в системе UNIX являются интерпретаторы CSH и BASH, которые произошли от классического, но давно устаревшего UNIX-интерпретатора SHELL (кратко SH). Интерпретатор команд в UNIX - это процесс, который запускается при входе пользователя в систему. ОС UNIX может поддерживать произвольное количество интерпретаторов команд. Конкретный тип интерпретатора размещается в информации о регистрации данного пользователя в системе в файле etc/passwd. В этом файле указывается полное имя одного из штатных стандартных интерпретатора команд или любое полное имя файла, который будет считаться интерпретатором.

Интерпретатор обеспечивает взаимосвязь между пользователем и системой. Он обеспечивает прием команд с клавиатуры и их обработку. Интерпретатор команд определяет правила работы процессов со стандартными устройствами.

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

  • команды, с которыми связаны исполнительные файлы;

  • команды, поддерживаемые интерпретатором команд.

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

На сегодняшней лекции мы коснемся концептуального рассмотрения CSH - командного интерпретатора ОС UNIX, но для хорошего ответа на экзамене по этому вопросу Вам необходимо чуть более подробно посмотреть некоторые моменты, о которых будет сказано несколько позже, в доступной литературе по UNIX.

К основным свойствам командной строки интерпретаторов можно отнести следующее:

  1. Интерпретатор команд имеет жесткий фиксированный формат командной строки, которая вводится пользователем. Командная строка имеет свою структуру. Она состоит из слов.

  2. Существуют символы, которые могут служить разделителями слов в командной строке, например, « », «,», «.». Также имеется возможность экранировать символы-разделители, т. е. имеется возможность специальным образом при помощи определенной последовательности символов отменять роль «специальных» служебных символов командной строки.

  3. В командной строке могут встречаться также метасимволы - это символы или комбинации символов из специального набора символов. Метасимволы интерпретируются предопределенным образом. (Пример который знают почти все: * - любое имя, ? - любой символ.) Соответственно, метасимволы тоже можно экранировать, указывая перед ними специальные символы. (Таким образом, в UNIX можно создать файл, содержащий в своем имени *).

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

Интерпретатор команд (Мы по-прежнему говорим о интерпретаторах команд типа CSH.) позволяет осуществлять группировку команд, за счет перенаправления или установки потоков входных/выходных данных и может включать в себя большое число команд. (Частный пример группировки - конвейеры.)

Переменные CHS

Поговорим немного о переменных CHS. Их суть заключается в том, что среди всех переменных, которые можно определить при написании программ на языке интерпретатора команд, имеется определенный набор имен, имеющих предопределенную интерпретацию в системе, мы назовем эти переменные специальными. В частности, мы с Вами говорили, что UNIX - демократичная система, открытая для развития, - ее можно обогащать своими командами. При этом возникает проблема: раз система «открыта», то команды не должны привязываться к определенному фиксированному местоположению, все команды должны быть равноправны. Существует решение этой проблемы - переменная интерпретатора команд path («дорожка»), представляющая собой массив текстовых строк, содержащая полные имена каталогов, в которых следует осуществлять поиск команд. Суть решения такова. Вы набираете некоторую команду, и у командного интерпретатора возникает делема: где искать соответствующую команду? Переменная path определяет каталоги, в которых будет осуществляться поиск и порядок, в котором он будет осуществляться. Можно установить разные режимы поиска, но основная суть алгоритма поиска такова: сначала идет поиск в домашнем каталоге пользователя, потом, если команда не найдена, в первом каталоге, указанном в path, затем в следующем каталоге из path и т. д. Если команда не найдена ни в одном из каталогов, то будет выдано соответствующее сообщение. Замечу, что полное имя домашнего каталога содержится в home - специальной переменной интерпретатора команд. Внимательные студенты наверное заметили, что таким образом можно «закрывать» или варьировать некоторые команды, т. е. при задании полного и краткого путей одна и та же команда может трактоваться по-разному.

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

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

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

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

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

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

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

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

Это все, что относится к командным языкам в части ОС UNIX. А теперь я уточню те аспекты этой темы, с которыми Вы должны разобраться самостоятельно, используя доступную литературу:

  1. Основные возможности интерпретатора команд (любого: CHS или BASH). Командная строка, структура команды, специальные символы, метасимволы.

  2. Группирование команд. Работа с журналом команд. История/предистория сеанса пользователя.

  3. Переменные CSH. Значения переменных. Построения выражений. Специальные переменные. Переменные окружения.

  4. Язык программирования CHS, основные конструкции и правила интерпретации.

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

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

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее