Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BOS.doc
Скачиваний:
12
Добавлен:
21.12.2018
Размер:
1.25 Mб
Скачать

Вопрос 52. Ос unix. Основные функции. Системные операции.

access (name, mode) – проверяет, имеет ли процесс право на чтение и т.д. Проверяемый тип зависит от mode:

1 – исполнение,

2 – запись,

3 – чтение

alara (sec) – вызывает посылку…………………………….. Sec – число секунд до сигнала тревоги.

ch dir (name) – для процесса делает текущий каталог, указывающийся в пара­метре.

ch mod (name, mode) – изменение режима доступа к файлу.

dup – создает копию указанного дескриптора файла.

vice (INC) – увеличивает значение компонента, участвующего в вычисле­нии компонента. Пропорциональ­ность обратная.

Ptrace (cmd, prd, addr, data) – дает текущему процессу выполнить отладку дру­гого процесса в соответствии со зна­чением cmd:

Cmd = 0 – разрешает трассировку.

Cmd = 1; 2 – позволяет вернуть слово, расположенное по адресу адрес в простран­стве отлаженного процесса.

Cmd = 3 – позволяет вернуть слово, расположенное в пространстве отлаженного процесса по адресу.

Cmd = 4, 5 – позволяет записать значение по адресу в пространство отлаженного процесса.

Cmd =7 – заставляет отлаженный процесс возобновить свое выполнение.

Cmd = 8 – заставляет отлаженный процесс завершить свое выполнение.

Cmd = 9 – установить режим пошагового выполнения.

stime – устанавливает системное время и дату. Время в секундах от 00 часов 00 минут 00 секунд 1 января 1970 года (нам надо установить это время, за­тем функция отсчитает). Time – возвращает системное время (сколько про­шло с 00 часов 00 минут 00 секунд 1 января 1970 года).

times – возвращает время и заполняет следующую структуру (4 поля):

продолжительность использования процессора в режиме задачи

продолжительность использования процессора в режиме ядра

сумма нахождения процессора в режиме задачи у всех потомков

сумма нахождения процессора в режиме ядра у всех потомков

Системный вызов: clone. Флаги: CLONE _ VM – виртуальное пространство

_ FS – файловая система

_ FILES – таблица файлов

_ SIGHAND – таблица обработки сигналов

_ PARENT – родитель

Дочерние процессы с предком имеют общего родителя, файловую систему, таб­лицу файлов, общее адресное пространство и т.д.

Сигналы

Сигналы сообщают процессу о возникновении асинхронных событий.

Сигналы могут быть посланы функцией kill.

Существуют сигналы, посылаемые в случае завершения выполнения про­цесса.

Сигналы, посылаемые в случае возникновения:

Обращение к памяти, находящейся за пределами виртуального ад­ресного пространства

Попытка записи в область, доступной только для чтения

Попытка использования привилегированной команды в пользова­тельском режиме

Различные аппаратные ошибки

Сигналы, посылаемые при выполнении системных функций при возникнове­нии неисправных ошибок.

Сигналы, причиной которых служит возникновение непредвиденных оши­бок.

Сигналы, посылаемые процессу, выполняющийся в режиме задачи (напри­мер, сигнал тревоги через опре­деленное время (таймер)).

Сигналы, с помощью которых может производиться трассировка выполне­ния процессов.

При посылке сигнала ядро установлен 1 разряд в поле сигнала табличный процесс, соответствующий типу сигнала. Если процесс находится в состоянии останова, обработка разрешена, то ядро возобновляет данный процесс. Ядро может запоминать сигналы раз­личных типов, но количество сигналов одного типа не запоминает.

Обработка сигналов

3 способа:

Процесс может завершаться при поступлении сигнала.

Процесс может не обращать внимание на сигнал.

Процесс может выполнить пользовательскую функцию при получении.

oldfunction = signal (signum, function)

signum – номер сигнала, при получении которого будет выполнено действие, свя­занное с пользовательской функцией.

function – адрес функции.

oldfunction – возвращаемое значение.

Вместо адреса функции 2 предопределенных значения: 1 и 0.

Если 1, то процесс игнорирует все последующие сигналы с номера signum. Если 0, то процесс в режиме ядра завершается.

Для посылки сигнала используют системную функцию kill:

kill (PID, signum)

В pid указывается адресат, а в signum номер сигнала.

Если pid – положительное целое число, то ядро пошлет процессу сигнал с иденти­фикатором pid. Если pid = 0, то сигнал пошлется всем процессам, входящих в группу с процессом, вызвавшим функцию kill. Если pid = –1, то сигнал пошлется всем процессам, у которых код идентификатора пользователя совпадает с тем, под которым выполняется про­цесс, вызывавший kill. Пользователь сигнал со значением –1 послать не может. Если процесс, пославший сигнал, вы­полняется под кодом идентификации «суперпользователь», сигнал пошлется всем процессам, кроме идентификаторов 0 и 1 (его не может послать пользователь) Если pid – отрицательное число (но не –1), то сигнал пошлется всем процессам, входящих в группу с номе­ром, равным абсолютному значению pid.

У процесса есть и групповой идентификатор. Процесс получает уникальный код идентификации, потомок наследуют код идентификации группы, наследует все права.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]