- •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. Системные журналы и анализ производительности процесса.
21. Переназначение стандартного ввода/вывода.
- stdin;
- stdout;
- stderr.
Часто возникают ситуации, когда в некоторм модуле, который подключается, используются стандартные потоки ввода-вывода. А исходный модуль использует передачу данных с помощью каналов.
В этом случае удобно переназначить стандартный ввод – вывод и ассоциировать конец канала со стандартным вводом, а другой – с выводом.
Достигнем этого с помощью системных вызовов:
1) close(0) - закрывает стандартный ввод.
2) dup(p[0]) – наименьший доступный дескриптор файла и конец канала р для ввода становится синонимами.
3) close(p[0]) – дескриптор закрывается, так как ни один процесс не будет читать из канала р.
После этого для работы с каналом могут использоваться стандартные функции scanf, printf и другие.
23. Программные каналы как средство синхронизации процессов.
Канал – однолинейное сонхронное средство связи, которое используется для обмена данными (двумя процессами), а также для синхронизации друг друга.
Канал имеет один конец для записи данных и другой для чтения.
Канал – своеобразный файл, который имеет два дескриптора:
один – для записи в канал;
другой – для чтения из канала.
Синхронизация процессов с помощью каналов происходит в виду их свойств:
1) попытка записать данние в полный канал приводит к приостановке записи до тех пор, пока другой процесс не считает данние из канала, тем самым освободив его.
2) попытка чтения данных из пустого канала приводит к приостановке процесса до тех пор, пока другой процесс не заполнит канал данными.
22.Использование канала fifo
FIFO имеют имена, которые позволяют независимым процессам получить к этим объектам доступ. Поэтому иногда FIFO также называют именованными каналами. FIFO являются средством UNIX
После создания FIFO может быть открыт на запись и чтение, причем запись и чтение могут происходить в разных независимых процессах.Каналы FIFO работают по следующим правилам:
1. При чтении меньшего числа байтов, чем находится в канале илиFIFO, возвращается требуемое число байтов, остаток сохраняется дляпоследующих чтений.
2. При чтении большего числа байтов, чем находится в канале или FIFO,возвращается доступное число байтов. Процесс, читающий из канала,должен соответствующим образом обработать ситуацию, когда прочитано меньше, чем заказано.
3. Если канал пуст и ни один процесс не открыл его на запись, при чтении из канала будет получено 0 байтов. Если один или более процессов открыли канал для записи, вызов будет заблокирован допоявления данных
4. Запись числа байтов, меньшего емкости канала или FIFO, гарантированно атомарно. Это означает, что в случае, когда несколько процессов одновременно записывают в канал, порции данных от этих процессов не перемешиваются.
5. При записи большего числа байтов, чем это позволяет канал илиFIFO, вызов блокируется до освобождения требуемого места.
mkfifo - создает особый FIFO-файл (именованный канал)
24.Сигналы в unix
Сигналы посылаются процессу с целью сообщения о возникновении каких-то асинхронных событий.
Сигналы посылаются процессу либо:
- ядром
- от другого процесса, с помощью системного вызова kill.
Сигналы деляться на группы:
1) сигналы, посылаемые в случае завершении процесса
2) сигналы, посылаемые в случае возникновения особых ситуаций (обращение к адресу за педлами доступной памяти)
3) сигналы, посылаемые во время выполнения системной функции (к несуществующей функции).
signal - работа с сигналами ANSI C
СИНТАКСИС
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
ОПИСАНИЕ
Системный вызов signal() устанавливает новый обработчик сигнала с номером signum в соответствии с параметром sighandler, который может быть функцией пользователя, SIG_IGN или SIG_DFL. При получении процессом сигнала с номером signum происходит следующее: если устанавливаемое значение обработчика равно SIG_IGN, то сигнал игнорируется; если оно равно SIG_DFL, то выполняются стандартные действия, связанные с сигналом. Наконец, если обработчик установлен в функцию sighandler, то сначала устанавливает значение обработчика в SIG_DFL или выполняется зависимая от реализации блокировка сигнала, а затем вызывается функция sighandler с параметром signum.
Использование функции-обработчика сигнала называется "перехватом сигнала". Сигналы SIGKILL и SIGSTOP не могут быть "перехвачены" или игнорированы.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция signal() возвращает предыдущее значение обработчика сигнала или SIG_ERR при ошибке.
