- •Вычислительные Системы
- •I. Структура и основные компоненты вычислительной системы
- •Аппаратные средства.
- •Управление физическими устройствами.
- •Управление логическими устройствами.
- •Прикладное программное обеспечение.
- •Операционная система Назначение и основные функции операционной системы.
- •Многоуровневое планирование
- •Ос реального времени
- •Файловые системы (фс)
- •Операционная система unix.
- •Файловая система ос unix.
- •Структура фс на диске.
- •Рабочие файлы
- •Каталоги
- •Специальные файлы (или файлы устройств)
- •Внешние устройства
- •Организация планирования в unix
- •Организация свопинга.
- •Понятие процесса
- •Порождение процесса
- •Начальная загрузка. Точка нулевого и первого процесса.
- •Операции ввода/вывода
- •Программные каналы
- •Сигналы
- •2) Установка реакции на сигнал.
- •Нелокальные переходы
- •Межпроцессорное взаимодействие (ipc)
- •Очередь сообщений
- •1. Создание общей памяти.
- •2. Доступ к разделяемой памятию
- •3. Открепление разделяемой памяти:
- •4. Управление разделяемой памятью:
- •5. Функция управления массивом семафоров.
- •Системы программирования
- •Средства трансляции
- •1. Схема организации отладки
- •2. Внутри процесса отладки
- •Функция ptrace
- •Командный интерпретатор shell (командные языки и интерфейс работы с пользователем)
- •Аргументы и параметры команд.
- •Многомашинные ассоциации
- •Семейство протоколов tcp/ip
- •Ip адресация
- •Механизм сокетов
- •Создание сокетов.
- •Связь с сокетом
- •Прием и передача данных
- •Функции закрытия сокета
- •Пример работы с локальными сокетами.
- •Пример работы с сокетами в рамках сети.
Командный интерпретатор shell (командные языки и интерфейс работы с пользователем)
Для многих пользователей программного обеспечения основным и единственным свойством, на которое обращает внимание пользователь, является не внутреннее устройство системы, а тот интерфейс, который предоставляется системой пользователю. В UNIX существует много интерфейсов (алфавитно - цифровой, графический).
Лицо, паспорт системы - это командно - пользовательский интерфейс. В UNIX существует группа интерпретаторов команд (производные SHELL).
При выполнении команд мы имеем дело с буфером интерпретатора команд, а не с ядром. Интерпретатор - это обычная программа, которая не принадлежит ядру UNIX и ее можно заменить, т.е. написать свой собственный интерпретатор.
П ользователь SH ядро
Интерпретатор - командный язык, средство, которое разбирает строку. С другой стороны - это язык программирования, который каждый раз инициализирует запуск команд. В этом случае можно использовать переменные разного типа, управляющие конструкции, управлять и влиять на возможности системы.
SHELL обеспечивает интерфейс пользователя с ОС. Команды поступают с терминала вместе с файлами. Пользователь может строить командные файлы, системные каталоги. Строим удобную операционную среду.
Первый процесс SHELL запускается при входе пользователя в систему. Второй - запускается только один раз.
ОС UNIX поддерживает любое количество интерпретаторов команд. В файле /etc/passwd/ одно из полей, относящихся к данному пользователю, содержит полное имя интерпретатора команд, который должен быть запущен при входе пользователя в систему. В общем случае, при входе пользователя в систему может быть запущена абсолютно любая программа.
После входа в систему пользователя в систему порождается процесс, выполняющий интерпретатор команд по схеме fork-exec.
If (fork()==0)
execlp()(“bin/sh”, “sh”, “-c”, commandl, 10, 0);
wait();
Стоит ожидание ввода команды с терминала, когда ввод завершен, управление передается процессу SHELL. Далее командная строка анализируется и преобразуется для последующего использования exec. Если выполнение команды fork произошло успешно, то начинается выполнение самой программы. Далее опять организовано ожидание. Эта схема универсальна.
Интерпретация
Shell разделяет имя команды и аргументы на строки. Command arg1 arg2 (анализ и выполнение). Далее ожидание следующего ввода. Задача. 1 Переориентация ввода, вывода (login открывает 3 файла - 0, 1, 2) => ls > file или => ls < file. 2. Организация конвейера (несколько команд связать в одну команду) => who sort. 3. Различают понятие метасимвола -
> - в файле;
< - из файла.
Рассмотрим примеры записей.
- a;b - сначала происходит выполнение команды a, затем - выполнение команды b.
- A&B - вторая команда запустится, не дожидаясь завершения первой команды.
- * - произвольное количество символов.
- ? - один символ.
- ‘ ‘ - непосредственное использование записи, заключенной в апострофы.
- echo - повторить свои аргументы.
Как имея набор команд создать новые команды со своими именами?
Пример. Сосчитать число пользователей при помощи конвейера.
who wc -l. who - определяет имя того, кто работает в системе, wc считает число строк для каждого файла. Первый шаг. Необходимо создать обычный файл A, который содержит в себе смысл этого конвейера или этой цепочки.
echo who: wc -l>a
sh<a
Интерпретатор берет входной поток из файла, однако каждый раз вызывать sh неудобно. Если файл предназначен для выполнения и содержит текст, то интерпретатор считает, что файл состоит из команд, следовательно - это командный файл. .В этом случае интерпретатор считывает строки из командного файла и выполняет их так, если бы они вводились с терминала.