-->

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

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

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

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

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

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

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

shmctl

#include ‹sys/types.h›

#include ‹sys/ipc.h›

#include ‹sys/shm.h›

shmctl(id, cmd, buf)

int id, cmd;

struct shmid_ds *buf;

Функция shmctl выполняет различные операции над областью разделяемой памяти, ассоциированной с идентификатором id. Структура shmid_ds определена следующим образом:

struct shmid_ds {

  struct ipc_perm shm_perm; /* структура, описывающая права доступа */

  int shm_segsz; /* размер сегмента */

  int * pad1; /* используется системой */

  ushort shm_lpid; /* идентификатор процесса, связанного с последней операцией над областью */

  ushort shm_cpid; /* идентификатор процесса-создателя */

  ushort shm_nattch; /* количество присоединений к процессам */

  short pad2; /* используется системой */

  time_t shm_atime; /* время последнего присоединения */

  time_t shm_dtime; /* время последнего отсоединения */

  time_t shm_ctime; /* время последнего внесения изменений */

};

Операции:

IPC_STAT прочитать в буфер buf содержимое заголовка области, ассоциированной с идентификатором id

IPC_SET установить значения переменных shm_perm.uid, shm_perm.gid и shm_perm.mode (9 младших разрядов структуры) в заголовке области в соответствии с содержимым буфера buf

IPC_RMID удалить из системы область разделяемой памяти, ассоциированной с идентификатором id

shmget

#include ‹sys/types.h›

#include ‹sys/ipc.h›

#include ‹sys/shm.h›

shmget(key, size, flag)

key_t key;

int size, flag;

Функция shmget обращается к области разделяемой памяти или создает ее. Параметр size задает размер области в байтах. Параметры key и flag имеют тот же смысл, что и в функции msgget.

shmор

#include ‹sys/types.h›

#include ‹sys/ipc.h›

#include ‹sys/shm.h›

shmat(id, addr, flag)

int id, flag;

char *addr;

shmdt(addr)

char *addr;

Функция shmat присоединяет область разделяемой памяти, ассоциированную с идентификатором id, к адресному пространству процесса. Если параметр addr имеет нулевое значение, ядро само выбирает для присоединения области подходящий адрес. В противном случае оно пытается присоединить область, используя в качестве значение параметра addr в качестве адреса. Если в параметре flag установлен бит SHM_RND, ядро в случае необходимости округляет адрес. Функция shmat возвращает адрес, по которому область присоединяется фактически. Функция shmdt отсоединяет область разделяемой памяти, присоединенную ранее по адресу addr.

signal

#include ‹signal.h›

signal(sig, function)

int sig;

void (*func)();

Функция signal дает текущему процессу возможность управлять обработкой сигналов. Параметр sig может принимать следующие значения:

SIGHUP "зависание"

SIGINT прерывание

SIGQUIT прекращение работы

SIGILL запрещенная команда

SIGTRAP внутреннее прерывание, связанное с трассировкой

SIGIOT инструкция IOT

SIGEMT инструкция EMT

SIGFPE особая ситуация при работе с числами с плавающей запятой

SIGKILL удаление из системы

SIGBUS ошибка в шине

SIGSEGV нарушение сегментации

SIGSYS недопустимый аргумент в вызове системной функции

SIGPIPE запись в канал при отсутствии считывающих процессов

SIGALRM сигнал тревоги

SIGTERM завершение программы

SIGUSR1 сигнал, определяемый пользователем

SIGUSR2 второй сигнал, определяемый пользователем

SIGCLD гибель потомка

SIGPWR отказ питания

Параметр function интерпретируется следующим образом:

SIG_DFL действие по умолчанию. Означает завершение процесса в случае поступления любых сигналов, за исключением SIGPWR и SIGCLD. Если сигнал имеет тип SIGQUIT, SIGILL, SIGTRAP, SIGIOT, SIGEMT, SIGFPE, SIGBUS, SIGSEGV или SIGSYS, создается файл "core", содержащий дамп образа процесса в памяти

SIG_IGN игнорировать поступление сигнала функция адрес процедуры в пространстве процесса. По возвращении в режим задачи производится обращение к указанной функции с передачей ей номера сигнала в качестве аргумента. Если сигнал имеет тип, отличный от SIGILL, SIGTRAP и SIGPWR, ядро автоматически переустанавливает имя программы обработки сигнала в SIG_DFL. Сигналы типа SIGKILL процессом не обрабатываются

stat

stat(filename, statbuf)

char *filename;

struct stat *statbuf;

fstat(fd, statbuf)

int fd;

struct stat *statbuf;

Функция stat возвращает информацию о статусе (состоянии) указанного файла. Функция fstat выполняет то же самое в отношении открытого файла, имеющего дескриптор fd. Структура statbuf определена следующим образом:

struct stat {

 dev_t st_dev; /* номер устройства, на котором находится файл */

 ino_t st_ino; /* номер индекса */

 ushort st_mode; /* тип файла (см. mknod) и права доступа к нему (см. chmod) */

 short st_nlink; /* число связей, указывающих на файл */

 ushort st_uid; /* код идентификации владельца файла */

 ushort st_gid; /* код идентификации группы */

 dev_t st_rdev; /* старший и младший номера устройства */

 off_t st_size; /* размер в байтах */

 time_t st_atime; /* время последнего обращения */

 time_t st_mtime; /* время последнего внесения изменений */

 time_t st_ctime; /* время последнего изменения статуса */

};

stimе

stime(tptr)

long *tptr;

Функция stime устанавливает системное время и дату в соответствие со значением, указанным в параметре tptr. Время указывается в секундах от 00:00:00 1 января 1970 года по Гринвичу.

synс

sync()

Функция sync выгружает содержащуюся в системных буферах информацию (относящуюся к файловой системе) на диск.

timе

time(tloc)

long *tloc;

Функция time возвращает системное время в секундах от 00:00:00 1 января 1970 года по Гринвичу.

times

#include ‹sys/types.h›

#include ‹sys/times.h›

times(tbuf)

struct tms *tbuf;

Функция times возвращает время в таймерных тиках, реально прошедшее с любого произвольного момента в прошлом, и заполняет буфер tbuf следующей учетной информацией:

struct tms {

 time_t tms_utime; /* продолжительность использования ЦП в режиме задачи */

 time_t tms_stime; /* продолжительность использования ЦП в режиме ядра */

 time_t tms_cutime; /* сумма значений tms_utime и tms_cutime у потомков */

 time_t tms_sutime; /* сумма значений tms_stime и tms_sutime у потомков */

};

ulimit

ulimit(cmd, limit)

int cmd;

long limit;

Функция ulimit дает процессу возможность устанавливать различные ограничения в зависимости от значения параметра cmd:

1 вернуть максимальный размер файла (в блоках по 512 байт), в который процесс может вести запись

2 установить ограничение сверху на размер файла равным значению параметра limit

3 вернуть значение верхней точки прерывания (максимальный доступный адрес в области данных)

uмask

umask(mask)

int mask;

Функция umask устанавливает значение маски, описывающей режим создания файла (mask), и возвращает старое значение. При создании файла биты разрешения доступа, которым соответствуют установленные разряды в mask, будут сброшены.

uмount

umount(specialfile)

char *specialfile

Функция umount выполняет демонтирование файловой системы, расположенной на устройстве ввода-вывода блоками specialfile.

unamе

#include ‹sys/utsname.h›

uname(name)

struct utsname *name;

Функция uname возвращает информацию, идентифицирующую систему в соответствии со следующей структурой:

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