- •Список тем к курсу Red Hat Enterprise Linux
- •Уровни работы ос: уровень ядра и пользователя
- •Назначение и функции ядра ос и системные компоненты (модули ядра, библиотеки и драйвера)
- •Файловая система как способ организации данных на диске
- •Назначение и содержимое супер-блока
- •Индексный узел (I-node). Файлы и каталоги.
- •Жесткие (hard) и символные (symbolic) ссылки
- •Файлы устройств
- •Дерево каталогов: корень и стандартные папки. Содержимое и назначение стандартных каталогов
- •Виды устройств: символьные, блочные. Стандартные устройства: console, null, random, stdin, stdout, stderr
- •Монтирование и работа с mount, umount, fstab
- •Виртуальная файловая система (vfs): назначение и организация
- •Страничная организация памяти и виртуальная память процессов
- •Процесс и контекст процесса: pid, ppid, process state, uid, priority. Потоки
- •Механизм создания процессов и потоков (функция fork)
- •Разделяемая память
- •Переменные окружения
- •Сигналы
- •Shell: назначение, приглашение
- •Shell: логические функции и спец. Символы &&, ||. Возвращаемые программами значения
- •Пользователи и группы. Uid, gid, euid, основная группа в которую входят пользователи.
- •Безопасность в Linux. Права доступа к файлам.
- •Авторизация и аутентификация. Процесс входа пользователя в систему.
- •Пользователь root
- •Конфигурационные файлы. Примеры, формат и назначение.
- •Системные службы (демоны): локальные и сетевые
- •Службы syslog и cron
- •Сетевая подсистема Linux. Сетевой интерфейс, сокеты, стек tcp/ip. Службы dns, dhcp. Файлы hosts, resolv.Conf и настройки сетевых адаптеров. Маршрутизация.
- •Работа со справкой: справка самих команд (вызов с аргументов --help), работа с man, info и whatis
- •Работа с текстовым редактором VI
- •Процесс загрузки ос. Mbr, Загрузочные скрипты, загрузчик, уровни загрузки.
- •Программа init, inittab и другие настройки загрузки.
- •Команды ls, cd, cp, mv, rm, ln, touch, cat, find, mkdir, tar gzip
- •Команды , echo, more, less, tail, head, file
- •Команды useradd, userdel, groupadd, groupdel, usermod, passwd, groupmod
- •Команды ps, top, nice, kill, killall
- •Команды chmod, chown, chgrp
- •Команды ifconfig, ping, route, netstat, traceroute
Сигналы
Сигналы — одно из традиционных средств межпроцессного взаимодействия в UNIX. Сигнал может быть отправлен процессу операционной системой или другим процессом. Операционная система использует сигналы для доставки процессу уведомлений об ошибках и неправильном поведении.
При получении сигнала исполнение процесса приостанавливается и запускается специальная подпрограмма — обработчик сигнала. Обработчики сигналов могут быть явно определены в исходном тексте исполняемой программы, если же они отсутствуют, а также в некоторых специальных случаях используется стандартный обработчик, определённый операционной системой.
Каналы
Канал — поток данных между двумя или несколькими процессами, имеющий интерфейс, аналогичный чтению или записи в файл. Каналы бывают одно- и двунаправленными. В UNIX каналы, как и многие другие системные объекты, представлены в виде файлов, вся работа с ними производится через базовый файловый интерфейс — открытие и закрытие файла, чтение и запись данных и т. п. В этом смысле каналы можно представлять в виде специализированных файлов, которые не хранят информацию, а лишь накапливают её до следующей операции чтения из канала другим процессом, образуя очередь.
По умолчанию в UNIX каждому процессу при запуске ставится в соответствие три открытых файла: стандартного ввода, стандартного вывода и стандартного вывода для ошибок. С помощью средств командной строки (см. подробнее в «Терминал и командная строка») такие потоки для разных процессов могут быть объединены так, что, к примеру, вывод одного процесса будет подаваться на ввод другого (см. рисунок Рисунок 1.47, «Неименованный канал между двумя процессами». То есть процесс работает с тремя потоками данных одинаково вне зависимости от того, обычные это файлы или же кананлы. В более общем смысле такие потоки называют неименованными каналами. Канал создаётся по запросу и существует только в ходе работы двух процессов, другие процессы в системе не могут обратиться к этому каналу. Если процесс на одной из сторон канала завершается и закрывает канал, другому процессу посылается специальный сигнал — SIGPIPE.
Другой вид каналов в UNIX — именованные каналы — представляют собой особый тип файлов. Эти файлы располагаются в файловой системе и могут быть открыты любым процессом (если это позволяется правами доступа, см. раздел «Введение в безопасность UNIX»). Одни процессы записывают данные в канал, другие — читают из него, данные продвигаются по каналу в порядке очереди (FIFO).
Каналы широко используются в UNIX, как при запуске программ в командной строке, так и при взаимодействии системных процессов. Главное достоинство каналов — простота и удобство использования привычного файлового интерфейса. С другой стороны, данные в каналах передаются в одном направлении и последовательно, что ограничивает сферу применения каналов.
Сокеты
Сокеты предоставляют альтернативный интерфейс обмена данными как в рамках одной системы, так и между процессами, запущенными на разных машинах в сети.
Интерфейс сокетов позволяет явно разделить во взаимодействии двух процессов серверную и клиентскую часть. Серверный процесс инициализирует сокет и ждёт входящих соединений от других процессов. Клиентский процесс устанавливает соединение, и с этого момента по образовавшемуся каналу можно передавать поток данных в обе стороны. Такие сокеты называются потоковыми. Другой тип сокетов, датаграммный, позволяет отправлять сообщения (длиной не более 64 кбайт) между процессами, привязанными к данному сокету.
Интерфейс сокетов впервые появился в операционной системе BSD и использовался для связи компьютеров через сеть Internet по протоколам TCP (потоковые сокеты) и UDP (датаграммные сокеты), о чём подробнее рассказывается в разделе «Сеть в UNIX». Это основное применение сокетов, и до настоящего времени они являются стандартным средством взаимодействия процессов в сети. Кроме того, существует локальный вариант взаимодействия через сокеты, в котором обмен данными происходит через специальные файлы, расположенные в файловой системе (фактически, это аналог именованных каналов, но с интерфейсом сокетов).
