-->

Архитектура операционной системы UNIX (ЛП)

На нашем литературном портале можно бесплатно читать книгу Архитектура операционной системы UNIX (ЛП), Бах Морис Дж.-- . Жанр: ОС и Сети. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Архитектура операционной системы UNIX (ЛП)
Название: Архитектура операционной системы UNIX (ЛП)
Дата добавления: 16 январь 2020
Количество просмотров: 367
Читать онлайн

Архитектура операционной системы UNIX (ЛП) читать книгу онлайн

Архитектура операционной системы UNIX (ЛП) - читать бесплатно онлайн , автор Бах Морис Дж.

Настоящая книга посвящена описанию внутренних алгоритмов и структур, составляющих основу операционной системы (т. н. «ядро»), и объяснению их взаимосвязи с программным интерфейсом. Таким образом, она будет полезна для работающих в различных операционных средах. При работе с книгой было бы гораздо полезнее обращаться непосредственно к исходному тексту системных программ, но книгу можно читать и независимо от него.  Во-вторых, эта книга может служить в качестве справочного руководства для системных программистов, из которого последние могли бы лучше уяснить себе механизм работы ядра операционной системы и сравнить между собой алгоритмы, используемые в UNIX, и алгоритмы, используемые в других операционных системах. Наконец, программисты, работающие в среде UNIX, могут углубить свое понимание механизма взаимодействия программ с операционной системой и посредством этого прийти к написанию более эффективных и совершенных программ.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

access

access(filename, mode)

char *filename;

int mode;

Функция access проверяет, имеет ли процесс разрешение на чтение, запись или исполнение файла (проверяемый тип доступа зависит от значения параметра mode). Значение mode является комбинацией двоичных масок 4 (для чтения), 2 (для записи) и 1 (для исполнения). Вместо исполнительного кода идентификации пользователя в проверке участвует фактический код.

acct

acct(filename)

char *filename;

Функция acct включает учет системных ресурсов, если параметр filename непустой, и выключает — в противном случае.

аlarm

unsigned alarm(seconds)

unsigned seconds;

Функция alarm планирует посылку вызывающему ее процессу сигнала тревоги через указанное количество секунд (seconds). Она возвращает число секунд, оставшееся до посылки сигнала от момента вызова функции.

brk

int brk(end_data_seg)

char *end_data_seg;

Функция brk устанавливает верхнюю границу (старший адрес) области данных процесса в соответствии со значением параметра end_data_seg. Еще одна функция, sbrk, использует ту же точку входа и увеличивает адрес верхней границы области на указанную величину.

сhdir

chdir(filename)

char *filename;

Функция chdir делает текущим каталогом вызывающего процесса каталог, указанный в параметре filename.

сhmod

chmod(filename, mode)

char *filename;

Функция chmod изменяет права доступа к указанному файлу в соответствии со значением параметра mode, являющимся комбинацией из следующих кодов (в восьмеричной системе):

04000 бит установки кода идентификации пользователя

02000 бит установки группового кода идентификации

01000 признак sticky bit

00400 чтение владельцем

00200 запись владельцем

00100 исполнение владельцем

00040 чтение групповым пользователем

00020 запись групповым пользователем

00010 исполнение групповым пользователем

00004 чтение прочим пользователем

00002 апись прочим пользователем

00001 исполнение прочим пользователем

сhown

chown(filename, owner, group)

char *filename;

int owner,group;

Функция chown меняет коды идентификации владельца и группы для указанного файла на коды, указанные в параметрах owner и group.

сhroot

chroot(filename)

char *filename;

Функция chroot изменяет частный корень вызывающего процесса в соответствии со значением параметра filename.

сlosе

close(fildes)

int fildes;

Функция close закрывает дескриптор файла, полученный в результате выполнения функций open, creat, dup, pipe или fcntl, или унаследованный от функции fork.

сreat

creat(filename, mode)

char *filename;

int mode;

Функция creat создает новый файл с указанными именем и правами доступа. Параметр mode имеет тот же смысл, что и в функции access, при этом признак sticky-bit очищен, а разряды, установленные функцией umask, сброшены. Функция возвращает дескриптор файла для последующего использования в других функциях.

duр

dup(fildes)

int fildes;

Функция dup создает копию указанного дескриптора файла, возвращая дескриптор с наименьшим номером из имеющихся в системе. Старый и новый дескрипторы используют один и тот же указатель на файл, а также и другие совпадающие атрибуты.

ехес

execve(filename, argv, envp)

char *filename;

char *argv[];

char *envp[];

Функция execve исполняет файл с именем filename, загружая его в адресное пространство текущего процесса. Параметр argv соответствует списку аргументов символьного типа, передаваемых запускаемой программе, параметр envp соответствует массиву, описывающему среду выполнения нового процесса.

ехit

exit(status)

int status;

Функция exit завершает вызывающий процесс, возвращая его родителю 8 младших разрядов из слова состояния процесса. Ядро само может вызывать эту функцию в ответ на поступление определенных сигналов.

fcntl

fcntl(fildes, cmd, arg)

int fildes, cmd, arg;

Функция fcntl обеспечивает выполнение набора разнообразных операций по отношению к открытым файлам, идентифицируемым с помощью дескриптора fildes. Параметры cmd и arg интерпретируются следующим образом (определение буквенных констант хранится в файле "/usr/include/fcntl.h"):

F_DUPFD вернуть наименьшее значение дескриптора, большее или равное значению arg

F_SETFD установить флаг "close-on-exec" в младшем разряде arg (файл будет закрыт функцией exec)

F_GETFD вернуть состояние флага "close-on-exec"

F_SETFL установить флаги, управляющие состоянием файла (O_NDELAY — не приостанавливаться в ожидании завершения ввода-вывода, O_APPEND — записываемые данные добавлять в конец файла)

F_GETFL получить значения флагов, управляющих состоянием файла

struct flock

 short l_type; /* F_RDLCK — блокировка чтения, F_WRLCK — блокировка записи, F_UNLCK — снятие блокировки */

 short l_whence; /* адрес начала блокируемого участка дается в виде смещения относительно начала файла (0), относительно текущей позиции указателя (1), относительно конца файла (2) */

 long l_start; /* смещение в байтах, интерпретируемое в соответствии со значением l_whence */

 long l_len; /* длина блокируемого участка в байтах. Если указан 0, блокируется участок от l_start до конца файла */

 long l_pid; /* идентификатор процесса, блокирующего файл */

 long l_sysid; /* системный идентификатор процесса, блокирующего файл */

F_GETLK прочитать первый код блокировки, мешающей использовать значение arg и затирать его. Если блокировка отсутствует, поменять значение l_type в arg на F_UNLCK

F_SETLK установить или снять блокировку файла в зависимости от значения arg. В случае невозможности установить блокировку вернуть -1

F_SETLKW установить или снять блокировку содержащихся в файле данных в зависимости от значения arg. В случае невозможности установить блокировку приостановить выполнение

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

fork

fork()

Функция fork создает новый процесс. Порождаемый процесс представляет собой логическую копию процесса-родителя. На выходе из функции процессу-родителю возвращается код идентификации потомка, потомку — нулевое значение.

getpid

getpid()

Функция getpid возвращает идентификатор вызывающего процесса. Эту же точку входа используют функции: getpgrp, возвращающая идентификатор группы, в которую входит вызывающий процесс, и getppid, возвращающая идентификатор процесса, который является родителем текущего процесса.

getuid

getuid()

Функция getuid возвращает фактический код идентификации пользователя вызывающего процесса. Эту же точку входа используют функции: geteuid, возвращающая исполнительный код идентификации пользователя, getgid, возвращающая групповой код, и getegid, возвращающая исполнительный групповой код идентификации вызывающего процесса.

ioctl

ioctl(fildes, cmd, arg)

int fildes, cmd;

Функция ioctl выполняет набор специальных операций по отношению к открытому устройству, дескриптор которого указан в параметре fildes. Тип команды, выполняемой по отношению к устройству, описывается параметром cmd, а параметр arg является аргументом команды.

kill

kill(pid, sig)

int pid, sig;

Функция kill посылает процессам, идентификаторы которых указаны в параметре pid, сигнал, описываемый параметром sig.

pid имеет положительное значение сигнал посылается процессу с идентификатором pid

Перейти на страницу:
Комментариев (0)
название