
- •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. Системные журналы и анализ производительности процесса.
Ожидание завершения выполнения процесса
С помощью ф-ции Wait() процесс продолжает выполнение (ожидает завершения процесса потомка).
Алгоритм функции wait():
Ядро ведет поиск потомков процессов и если их нету возвращает ошибку (-1), нечего не происходит.
В случаи обнаружения завершения потомка, ядро передает его код идентификатору и значение возвращается функцией exit процессу вызванным функцию wait.
Однако возможны ситуации, когда процесс не исчезает и в этом случае.
Это может произойти для следующих процессов:
Процессы зомби. Фактически процесса как такового не существует, осталась лишь запись в системной таблице процессов, поэтому удалить его можно только перезапуском операционной системы. Зомби в небольших количествах не представляют опасности, однако если их много, это может привести к переполнению таблицы процессов.
Процессы, ожидающие недоступные ресурсы NFS (Network File
System), например, записывающие данные в файл файловой системы
удаленного компьютера, отключившегося от сети. Эту ситуацию
можно преодолеть, послав процессу сигнал SIGINT или
Процессы, ожидающие завершения операции с устройством, например, перемотки магнитной ленты.
30. Семафоры в unix
Семафор – это ср-во синхр. Выполнения множества процессов. Семафоры объединены в группы, одну или более. Использование семафоров вместе с разделяемой памятью определяет мощное средство взаимодействия между процессами. В зависимости от своих прав процесс может либо только запрашивать значение семафора, либо также и изменять его.
Правила работы с семафорами:
Если процесс попытается уменьшить значение семафора до отрицательного значения, то эта операция и сам процесс будут приостановлены или заблокированны до тех пор, пока другой процесс не увеличит это значение до величины, достаточной для выполнения операции заблокированным процессом.
Если значение семафора положительное целое число, то процесс, который запрашивает нулевое значение семафора, блокируется, пока кто-то не обнулит значение семафора.
Процессы могут выполнить операцию не только над одним семафором, но и над группой семафоров. Если какая-то операция не может быть выполнена над одним семафором из группы, тоона считается неудачной и для других семафоров, и значения семафоров остаются прежними.
Набор семафоров однозначно определяется положительным числом, называемым (идентификатором набора семафоров semid). У каждого набора семафоров имеется структура данных struct semid_ds, определенная в <sys/sem.h>и состоящая из следующих полей:
struct ipc_perm sem_perm;
{ time_t sem_otime;/* время последней операции */
time_t sem_ctime;/* время последнего изменения */
ushort sem_nsems;/* количество семафоров в наборе */
} sem_perm;
SEMCTL - производит операции управления семафорами. Функция semctl позволяет выполнять операции, определенные в cmd над набором семафоров, указанным в semid или над семафором с номером semnum из этого набора.
SEMGET - считывает идентификатор набора семафоров. Системный вызов возвращает идентификатор набора семафоров, связанный с аргументом key. Создается новый набор из семафоров nsems , если значение key равно IPC_PRIVATE или c ключом key не связано ни одного существующего набора семафора, а выражение semflg & IPC_CREAT истинно.
SEMOP - операции над семафорами. Функция производит операции над выбранными элементами из набора семафоров semid. Каждый из элементов nsops в массиве sops определяет операцию, производимую над семафором в структуре struct sembuf.