
- •1.Структура ядра unix
- •2.Типы файлов в unix
- •3.Владельцы файлов
- •4.Права доступа к файлу
- •5.Атрибуты пользователя
- •6.Типы процессов
- •7.Атрибуты процесса
- •8.Жизненный путь процесса
- •9. Пользовательская среда в unix.
- •10. Подсистема управления процессом.
- •13 Пространство и контекст процесса
- •11. Инфраструктура процесса в unix.
- •12. Состояния процессов в unix.
- •14 Файловая система s5fs
- •15.Файловая система ffs
- •16.Примитивы доступа к файлам в ос unix
- •17.Параллельное программирование в unix.
- •18.Создание процесса с помощью fork
- •19.Приминение функции exec
- •20. Програмные каналы
- •21. Переназначение стандартного ввода/вывода.
- •23. Программные каналы как средство синхронизации процессов.
- •22.Использование канала fifo
- •24.Сигналы в unix
- •25.Обработка сигналов.
- •26. Использование обработчика сигналов для предотвращения появления процессов "зомби"
- •27. Посылка сигналов процессам.
- •29.Разделяемая память в unix
- •28.Завершение выполнения процесса.
- •Ожидание завершения выполнения процесса
- •30. Семафоры в unix
- •33. Cтандартный ввод стандартный вывод и стандартный вывод диагностики.
- •31. Очереди сообщения в unix
- •32.Блокировка записей
- •34. Cтандартная библиотека ввода/вывода.
- •35.Системное администрирование. Начальная загрузка ос
- •36.Взаимодействие пользователей с ос.
- •37. Задание системного времени(и даты).
- •38. Уровни выполнения: (команда init schutdown)
- •39.Системные каталоги и папки
- •41.Файл /etc/passwd/
- •43.Управление правами доступа
- •42. Управление пользовательской системной средой
- •40. Системные журналы и анализ производительности процесса.
8.Жизненный путь процесса
Процесс в UNIX создается системным вызовом Процесс, сделавший вызов fork(2) называется родительским, а вновь созданный процесс —дочерним. Новый процесс является точной копией породившего его процесса. Как это ни удивительно, но новый процесс имеет те же инструкциии данные, что и его родитель. Более того, выполнение родительского идочернего процесса начнется с одной и той же инструкции, следующей заfork(2). Единственно, чем они различаются — это идентификатором процесса PID. Каждый процесс имеет одного родителя, но можетиметь несколько дочерних процессов.Для запуска задачи, т. е. для загрузки новой программы, процесс должен выполнить системный вызов ехес(2). При этом новый процесс не порождается, а исполняемый код процесса полностью замещается кодом запускаемой программы. Тем не менее окружение новой программы во многомсохраняется, в частности сохраняются значения переменных окружения,назначения стандартных потоков ввода/вывода, вывода сообщений обошибках, а также приоритет процесса. В UNIX запуск на выполнение новой программы часто связан с порождением нового процесса, таким образом сначала процесс выполняет вызовfork(2), порождая дочерний процесс, который затем выполняетполностью замещаясь новой программой.Рассмотрим эту схему на примере.Допустим, пользователь, работая в командном режиме (в командном интерпретаторе shell) запускает команду Текущий процесс (shell) делаетвызов fork(2), порождая вторую копию shell. В свою очередь, порожденный shell вызывает ехес(2), указывая в качестве параметра имя исполняемогофайла, образ которого необходимо загрузить в память вместо кода shell.Код ls(l) замещает код порожденного shell, и утилита ls(l) начинает выполняться. По завершении работы ls(l) созданный процесс "умирает".Пользователь вновь возвращается в командный режим. Описанный процесс представлен на рис. 1.5. Мы также проиллюстрируем работу командного интерпретатора в примере, приведенном в главе 2. Описанная процедура запуска новой программы называется fork!and!exec.Однако бывают ситуации, когда достаточно одного вызова fork(2) без последующего ехес(2). В этом случае исполняемый код родительского процесса должен содержать логическое ветвление для родительского и дочернегоВсе процессы в UNIX создаются посредством вызова fork(2). Запуск навыполнение новых задач осуществляется либо по схеме fork!and!exec, либос помощью ехес(2). "Прародителем" всех процессов является процессназываемый также распределителем процессов. Если построитьграф "родственных отношений" между процессами, то получится дерево,корнем которого является Показанные на рис. 1.6 процессы schedи являются системными и формально не входят в иерархию (онибудут рассматриваться в следующих главах).
9. Пользовательская среда в unix.
Пользовательская среда UNIX представляет собой Графический многооконный нтерфейс, системы меню, техника drag-and-drop.
Базовая пользовательская среда – это алфавитно-цифровой терминал.
И программа - командный интерпретатор shell.
Все современные системы UNIX поставляются по крайней мере с тремя командными интерпретаторами: Bourne shell (/bin/sh), С shell(/bin/csh) и Korn shell(/bin/ksh).
Интерпретатор занимает важное место в операционной системе UNIX, прежде всего, благодаря следующим обстоятельствам:
1. Первая программа, с которой по существу начинается работа пользователя, — shell.
1.1 При включении терминала активизируется процесс который является сервером терминального доступа и запускает программу которая, в свою очередь, запрашивает у пользователя имя и пароль.
1.2 Если пользователь зарегистрирован в системе и ввел правильный пароль, запускает программу, указанную в последнем поле записи пользователя в файле /etc/passwd. В принципе это может быть любая программа, но в нашем случае — это командный интерпретатор shell.
1.3 Shell выполняет соответствующий командный файл инициализации, и выдает на терминал пользователя приглашение. С этого момента пользователь может вводить команды.
1.4 По окончании работы пользователь завершает работу с интерпретатором, вводя команду exit, и выходит из системы.
2. Командный интерпретатор является удобным средством программирования. Программы на языке shell часто называют скриптами или сценариями (script).