Морис Бах - Архитектура операционной системы UNIX
- Название:Архитектура операционной системы UNIX
- Автор:
- Жанр:
- Издательство:Издано корпорацией Prentice-Hall.
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Морис Бах - Архитектура операционной системы UNIX краткое содержание
Архитектура операционной системы UNIX - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
niсе
nice(increment)
int increment;
Функция nice увеличивает значение соответствующей компоненты, участвующей в вычислении приоритета планирования текущего процесса, на величину increment. Увеличение значения nice ведет к снижению приоритета планирования.
оpen
#include ‹fcntl.h›
open(filename, flag, mode)
char *filename;
int flag, mode;
Функция open выполняет открытие указанного файла в соответствии со значением параметра flag. Значение параметра flag представляет собой комбинацию из следующих разрядов (причем из первых трех разрядов может быть использован только один):
O_RDONLYоткрыть только для чтения
O_WRONLYоткрыть только для записи
O_RDWRоткрыть для чтения и записи
O_NDELAYесли файл является специальным файлом устройства, функция возвращает управление, не дожидаясь ответного сигнала; если файл является поименованным каналом, функция в случае неудачи возвращает управление немедленно (с индикацией ошибки, когда бит O_WRONLY установлен), не дожидаясь открытия файла другим процессом
O_APPENDдобавляемые данные записывать в конец файла
O_CREATесли файл не существует, создать его; режим создания (mode) имеет тот же смысл, что и в функции creat; если файл уже существует, данный флаг игнорируется
O_TRUNCукоротить длину файла до 0
O_EXCLесли этот бит и бит O_CREAT установлены и файл существует, функция не будет выполняться; это так называемое "монопольное открытие"
Функция open возвращает дескриптор файла для последующего использования в других системных функциях.
рausе
pause()
Функция pause приостанавливает выполнение текущего процесса до получения сигнала.
рipе
pipe(fildes)
int fildes[2];
Функция pipe возвращает дескрипторы чтения и записи (соответственно, в fildes[0] и fildes[1]) для данного канала. Данные передаются через канал в порядке поступления; одни и те же данные не могут быть прочитаны дважды.
рlock
#include ‹sys/lock.h›
plock(op)
int op;
Функция plock устанавливает и снимает блокировку областей процесса в памяти в зависимости от значения параметра op:
PROCLOCKзаблокировать в памяти области команд и данных
TXTLOCKзаблокировать в памяти область команд
DATLOCKзаблокировать в памяти область данных
UNLOCKснять блокировку всех областей
рrofil
profil(buf, size, offset, scale)
char *buf;
int size, offset, scale;
Функция profil запрашивает у ядра профиль выполнения процесса. Параметр buf определяет массив, накапливающий число копий процесса, выполняющихся в разных адресах. Параметр size определяет размер массива buf, offset — начальный адрес участка профилирования, scale — коэффициент масштабирования.
рtraсе
ptrace(cmd, pid, addr, data)
int cmd, pid, addr, data;
Функция ptrace дает текущему процессу возможность выполнять трассировку другого процесса, имеющего идентификатор pid, в соответствии со значением параметра cmd:
0разрешить трассировку потомку (по его указанию)
1,2вернуть слово, расположенное по адресу addr в пространстве трассируемого процесса с идентификатором pid
3вернуть слово, расположенное в пространстве трассируемого процесса по адресу со смещением addr
4,5записать значение по адресу addr в пространстве трассируемого процесса
6записать значение по адресу со смещением addr
7заставить трассируемый процесс возобновить свое выполнение
8заставить трассируемый процесс завершить свое выполнение
9машинно-зависимая команда — установить в слове состояния программы бит для отладки в режиме пошагового выполнения
read
read(fildes, buf, size)
int fildes;
char *buf;
int size;
Функция read выполняет чтение из файла с дескриптором fildes в пользовательский буфер buf указанного в параметре size количества байт. Функция возвращает число фактически прочитанных байт. Если файл является специальным файлом устройства или каналом и если в вызове функции open был установлен бит O_NDELAY, функция read в случае отсутствия доступных для чтения данных возвратит управление немедленно.
semctl
#include ‹sys/types.h›
#include ‹sys/ipc.h›
#include ‹sys/sem.h›
semctl(id, num, cmd, arg)
int id, num, cmd;
union semun {
int val;
struct semid_ds *buf;
ushort *array;
} arg;
Функция semctl выполняет указанную в параметре cmd операцию над очередью семафоров с идентификатором id.
GETVALвернуть значение того семафора, на который указывает параметр num
SETVALустановить значение семафора, на который указывает параметр num, равным значению arg.val
GETPIDвернуть идентификатор процесса, выполнявшего последним функцию semop по отношению к тому семафору, на который указывает параметр num
GETNCNTвернуть число процессов, ожидающих того момента, когда значение семафора станет положительным
GETZCNTвернуть число процессов, ожидающих того момента, когда значение семафора станет нулевым
GETALLвернуть значения всех семафоров в массиве arg.array
SETALLустановить значения всех семафоров в соответствие с содержимым массива arg.array
IPC_STATсчитать структуру заголовка семафора с идентификатором id в буфер arg.buf
IPC_SETустановить значения переменных sem_perm.uid, sem_perm.gid и sem_perm.mode (младшие 9 разрядов структуры sem_perm) в соответствии с содержимым буфера arg.buf
IPC_RMIDудалить семафоры, связанные с идентификатором id, из системы
Параметр num возвращает на количество семафоров в обрабатываемом наборе. Структура semid_ds определена следующим образом:
struct semid_ds {
struct ipc_perm sem_perm; /* структура, описывающая права доступа */
int * pad; /* используется системой */
ushort sem_nsems; /* количество семафоров в наборе */
time_t sem_otime; /* время выполнения последней операции над семафором */
time_t sem_ctime; /* время последнего изменения */
};
Структура ipc_perm имеет тот же вид, что и в функции msgctl.
semget
#include ‹sys/types.h›
#include ‹sys/ipc.h›
#include ‹sys/sem.h›
semget(key, nsems, flag)
key_t key;
int nsems, flag;
Функция semget создает массив семафоров, корреспондирующий с параметром key. Параметры key и flag имеют тот же смысл, что и в функции msgget.
semор
semop(id, ops, num)
int id, num;
struct sembuf **ops;
Функция semop выполняет набор операций, содержащихся в структуре ops, над массивом семафоров, связанных с идентификатором id. Параметр num содержит количество записей, составляющих структуру ops. Структура sembuf определена следующим образом:
struct sembuf {
short sem_num; /* номер семафора */
short sem_op; /* тип операции над семафором */
short sem_flg; /* флаг */
};
Переменная sem_num содержит указатель в массиве семафоров, ассоциированный с данной операцией, а переменная sem_flg — флаги для данной операции. Переменная sem_op может принимать следующие значения:
Читать дальшеИнтервал:
Закладка: