- •Раздел 1. Операционная система unix. Введение в операционную систему unix
- •Отличительные черты ос unix
- •Основы архитектуры операционной системы unix Модель системы unix.
- •Структура ядра ос unix.
- •Основы файловой системы ос unix
- •Типы файлов
- •Структура файловой системы unix
- •Владельцы файлов
- •Права доступа к файлу
- •Дополнительные атрибуты файлов
- •Устройства
- •Маска создания файла
- •Программы Oc unix
- •Процессы ос unix
- •Типы процессов
- •Атрибуты процесса
- •Процесс создания и запуска программ
- •Системный вызов завершения процесса exit
- •Системные функции типа exec
- •Обработка ошибок
- •Ограничения для процессов
- •Пользователи системы, Атрибуты пользователя
- •Средства ВзаимодействиЯ между процессАми
- •Сигналы
- •Посылка сигналов.
- •Int raise (int sig); // посылает сигнал вызывающему процессу (т.Е. Самому себе).
- •Обработка сигналов.
- •Набор сигналов.
- •Файловая подсистема ос unix
- •Индексный дескриптор
- •Блоки хранения данных
- •Недостатки и ограничения файловой системы s5fs
- •Файловая система ffs (Fast File System)
- •Основные отличия ffs от s5fs
- •Ограничения ffs
- •Каталоги ffs
- •Раздел 2. Взаимодействие процессов. Процесс, Понятие и классификация
- •Ресурсы, Понятие и классификация
- •Взаимодействие процессов Задача взаимного исключения
- •Integer очередь;
- •ОБобщенная задача взаимного исключения
- •Integer очередь;
- •Синхронизирующие примитивы (семафоры)
- •Процесс 1 :
- •Процесс 2 :
- •V(свободно);
- •Задача “производитель-потребитель” применение ОбщиХ семафорОв
- •Задача “производитель-потребитель” (буфер ограниченНый)
- •Взаимодействие через переменные состояния
- •Integer array желание[1:n], сп[1:n];
- •Integer чпб, бб, рб, чсеб, I;
- •Integer разм_п, n, max, nmax;
- •Проблема тупиков
- •Алгоритм банкира
- •Integer Св_Деньги; boolean Безопасно;
- •If ((Завершение_под_сомнением [I]) and
- •Применение алгоритма банкира
- •V(Взаимн_искл);
- •V(Возвращенные_Талеры[Номер_Клиента[m]]);
- •If (Попытка_выдать_талер_клиенту(h))
- •Монитороподобные средства синхронизации
- •Механизм типа «критическая область»
- •Механизм типа «условная критическая область»
- •Var s : semaphore; считывание : boolean; m : t;
- •Раздел 3. Вычислительные структуры. Машины, управляемые контроллерами (устройствами управления)
- •Усовершенствованная структура вычислительной машины, управляемой контроллерОм
- •Системы с операционным конвейером
- •Мультипроцессорные системы
- •Транспьютеры
- •Распределение памяти в транспьютерах
- •Диспетчеризация процессов
- •Организация ВводА / выводА в транспьютере.
- •Гарвардская архитектура на примере процессоров семейства adsp
Сигналы
Сигналы являются средством передачи уведомления о некотором произошедшем событии между процессами или между ядром системы и процессами. Сигналы рассматриваются как форма межпроцессорного взаимодействия, хотя, по сути, напоминают прерывания, генерируемые при возникновении определённых событий. Каждому типу сигналов присвоено мнемоническое имя, которое указывает, для чего обычно используется сигнал этого типа. Имена сигналов освещены в файле <signal.h>
Основные сигналы:
SIGABR (process abort signal) – сигнал прерывания процесса. Посылается процессу при вызове им функции abort. В результате произойдёт аварийное завершение процесса. Осуществится сброс образа памяти процесса (dump памяти) и выведется сообщение QUIT. Образ памяти процесса сохранится в памяти на диске. С ним можно работать с помощью отладчика.
SIGALRM (alarm clock) – сигнал таймера. Посылается процессу ядром при срабатывании таймера. Каждый процесс может установить не менее 3-ёх таймеров. 1-ый из них измеряет прошедшее и реальное время. Этот таймер устанавливается самим процессом при помощи системного вызова alarm.
SIGBUS (bus error) – сигнал ошибки на шине. Посылается при возникновении некоторой аппаратной ошибки. Например, обращение к некоторому виртуальному адресу, для которого нет соответствующего физического адреса. 1-ый и 3-ий сигналы вызывают аварийное завершение процесса.
SIGCHLD (child process terminated or stopped) – сигнал остановки или завершения дочернего процесса. Ядро сообщает родительскому процессу о том, что родительский процесс остаётся или завершается. По умолчанию родительский процесс игнорирует этот сигнал.
SIGCOOND (continue executing if stopped) – продолжение работы остановленного процесса. Сигнал управления процессом, который вызывает продолжение процесса, если тот был остановлен. В противном случае этот сигнал игнорируется. (Обратный сигнал SIGSTOP).
SIGHUP (hungup signal) – сигнал освобождения линии. Посылается ядром всем процессам, подключается к управляющему терминалу при отключении этого терминала. Это гарантирует, что если не предприняты специальные меры, то при выходе пользователя из системы завершаются все фоновые процессы, запущенные этим пользователем.
SIGILL (illegal instruction) – недопустимая команда процессора. Результат – аварийное завершение программы.
SIGINT (interrupt) – сигнал прерывания программы. Посылается ядром всем процессам-сеансам, связанным с терминалом, когда пользователь нажимает клавишу прерывания (DEL или Ctrl+C). Это простой способ завершения программы.
SIGKILL (kill) – сигнал уничтожения процесса. Приводит к немедленному прекращению работы процесса, получающего этот сигнал. Может посылаться или процессом или системой. Сигнал не может игнорироваться или перехватываться.
SIGPIPE (write or a pipe or socket when recipient is terminated) – сигнал о попытке записи в канал или сокет, для которых принимающий процесс уже завершил работу.
SIGPOLL (pollable event) – сигнал о возникновении одного из запрашиваемых событий. Этот сигнал генерируется ядром, когда некоторый открытый дескриптор файла становится готовым для ввода или вывода.
SIGQUIT (quit) – сигнал о выходе. Посылается ядром при нажатии пользователем клавиши выхода (Ctrl+\). Приводит к аварийному завершению и сбросу образа памяти.
SIGEVG (invalid memory reference) – обращение к некорректному адресу памяти. Получение сигнала приводит к аварийному завершению.
SIGSTOP (stop executing) – сигнал остановок. Сигнал управления системными заданиями, которые останавливают процесс. Сигнал нельзя игнорировать или перехватить.
SIGSYS (invalid system call) – некорректный системный вызов. Посылается ядром, если процесс пытается выполнить некорректный системный вызвов. Приводит к аварийному завершению.
SIGTERM (software termination signal) – программный сигнал завершения. Может предварять сигнал SIGKILL для того, чтобы процесс подготовился к своему завершению.
SIGTSTP (terminal stop signal) – терминальный сигнал остановок. Формируется при нажатии Ctrl+Z. Аналогичен SIGSTOP, но его можно перехватить или игнорировать.
SIGUSR1, SIGUSR2 (user defined signal 1 or 2) – пользовательские сигналы. Посылается только процессами пользователя и может использоваться по усмотрению пользователя.
SIGPROF (profiling time expired) – сигнал профилирующего таймера. Второй таймер процесса может использоваться для измерения времени выполнения процесса в пользовательских и системных режимах. Этот сигнал генерируется, когда истекает время, установленное в этом таймере.
SIGVTALARM (virtual time expired) – это сигнал виртуального таймера, сигнал третьего таймера, который можно установить так, чтобы он измерял время, которое процесс выполнит в пользовательском режиме.
SIGXCPU (CPU time limit executed) – сигнал о превышении лимита процессорного времени. Посылается процессу, если суммарное время процессора, занятое его работой превысило установленный предел. По умолчанию – завершение процесса.
SIGXFSZ (file size limit excepted) – сигнал о превышении предела на размер файла. Генерируется, если процесс превысил максимальный размер файла. По умолчанию – аварийное завершение.
Процесс может выполнять по отношению к сигналам три действия:
Утанавливать свой обработчик сигналов (изменять предопределённую форму реагирования на конкретный сигнал).
Блокировать сигналы на время выполнения определённых критических участков кода.
Посылать сигналы другим процессам.