- •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. Системные журналы и анализ производительности процесса.
33. Cтандартный ввод стандартный вывод и стандартный вывод диагностики.
ОС UNIX автоматически для каждой программы открывает 3 дескриптора
(0-ст.ввод) (1-ст.вывод)(2-ст.вывод диагностики)
Юникс позволяет перенаправлять стандартный ввод и вывод данных на на файловую систему.
$prog1<infile
$prog1>outfile
$prog1| prog2
Программа копирования стандартного ввода в стандартный вывод
#include<stdlib.h>
#include<urstd.h>
#include size 512
Main()
{
Size_t uread;
Char buf[size];
While(nread=read(0,buf,size))>0;
Write(1,buf,nread)
Exit(0)
}
31. Очереди сообщения в unix
Очереди сообщений поддерживаются ядром UNIX.
У каждого сообщения есть тип – идентификатор, который присваивается процессом-отправителем. Используя этот тип, процессы могут получать только нужные сообщения.
В области ядра имеется таблица очереди сообщений. Каждая запись таблицы очередей характеризует конкретную очередь сообщений и содержит следующую информацию:
Имя очереди – целочисленный идентификатор. Присваивается процессом, который создаёт очередь. Другие процессы, используя этот ключ, могут открывать очередь и получать к ней доступ.
Идентификатор владельца (UID) и идентификатор группы (GID).
UID и GID владельца очереди.
Права доступа к очереди.
Время и идентификатор процесса, который последним передал сообщение в очередь.
Время и идентификатор процесса получившего последним сообщение из очереди.
Указатель на связный список записей сообщений, находящихся в очереди. Каждая запись в очереди сообщений содержит:
Тип сообщения.
Число байт данных.
Указатель на область данных ядра, где находятся сами сообщения.
Ядро контролирует данные, содержащиеся в сообщении, оно копирует их из области процесса в область ядра, поэтому, даже при завершении процесса-отправителя, данные сообщения доступны для других процессов.
Когда процесс выбирает сообщение из очереди, ядро копирует данные в адресное пространство процесса и удаляет соответствующую запись в таблице сообщений.
Процесс может выбрать сообщение из очереди следующим образом:
самое старое.
указанного типа.
числовое значение которого наименьшее из меньших или равных значению типа, указанного процессом.
Очереди сообщений указываются с помощью положительного числа, называемого (идентификатором очереди сообщений msqid). У каждой очереди существует структура struct msquid_ds, определенная в <sys/msg.h>,
FTOK - преобразовывает имя файла и идентификатор проекта в ключ для системных вызовов. Функция ftok использует файл с именем pathname (которое должно указывать на существующий файл к которому есть доступ) и младшие 8 бит proj_id (который должен быть отличен от нуля) для создания ключа с типом key_t, используемого в System V IPC для работы с msgget(), semget(), и shmget().
MSGCTL - выполняет контрольные операции над сообщениями . Эта функция выполняет контрольную операцию, заданную в cmd, над очередью сообщений msqid.
MSGGET - получает идентификатор очереди сообщений. Эта функция возвращает идентификатор очереди сообщений, связанный со значением параметра key.Она также создает новую очередь сообщений, если key равен IPC_PRIVATE ; в случае если key не равен IPC_PRIVATE,то с параметром key не сопоставлена ни одна существующая очередь сообщений и в поле msgflg включен флаг IPC_CREAT . (т.е., значение msgflg&IPC_CREAT не равно нулю). Поля IPC_CREAT и IPC_EXCL в msgflg играют ту же роль для очередей сообщений, что и O_CREAT и O_EXCL в параметре mode системной функции open(): функция msgget вернет ошибку, если в msgflg включены оба флага: IPC_CREAT и IPC_EXCL ,- а такая очередь сообщений для key уже существует.
MSGOP - работает с сообщениями . Для того, чтобы отослать или получить сообщения, вызывающий процесс создает следующую структуру:
struct msgbu { long mtype;/* тип сообщения должен быть > 0 */ char mtext[1];/* содержимое сообщения */ };
