Архитектура операционной системы UNIX - [190]
struct sembuf {
short sem_num; /* номер семафора */
short sem_op; /* тип операции над семафором */
short sem_flg; /* флаг */
};
Переменная sem_num содержит указатель в массиве семафоров, ассоциированный с данной операцией, а переменная sem_flg — флаги для данной операции. Переменная sem_op может принимать следующие значения:
отрицательное если сумма значения семафора и значения sem_op ›= 0, значение семафора изменяется на величину sem_op; в противном случае, функция приостанавливает свое выполнение, если это разрешено флагом
положительное увеличить значение семафора на величину sem_op
нулевое если значение семафора равно 0, продолжить выполнение; в противном случае, приостановить выполнение, если это разрешается флагом
Если для данной операции в переменной sem_flg установлен флаг IPC_NOWAIT, функция semop возвращает управление немедленно в тех случаях, когда она должна была бы приостановиться. Если установлен флаг SEM_UNDO, восстанавливается предыдущее значение семафора (sem_op вычитается из текущей суммы типов операций). Когда процесс завершится, значение семафора будет увеличено на эту сумму. Функция semop возвращает значение последней операции над семафором.
setpgrр
setpgrp()
Функция setpgrp приравнивает значение идентификатора группы, к которой принадлежит текущий процесс, значению идентификатора самого процесса и возвращает новое значение идентификатора группы.
setuid
setuid(uid)
int uid;
setgid(gid)
int gid;
Функция setuid устанавливает значения фактического и исполнительного кодов идентификации пользователя текущего процесса. Если вызывающий процесс исполняется под управлением суперпользователя, функция сбрасывает значения указанных кодов. В противном случае, если фактический код идентификации пользователя имеет значение, равное значению uid, функция setuid делает равным этому значению и исполнительный код идентификации пользователя. То же самое происходит, если значению uid равен код, сохраненный после выполнения setuid-программы, запускаемой с помощью функции exec. Функция setgid имеет тот же смысл по отношению к аналогичным групповым кодам.
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
Одно из немногих изданий на русском языке, которое посвящено старейшей глобальной компьютерной сети "Fidonet". Сатирический справочник о жизни и смерти самого древнего сетевого сообщества, которое до сих пор существует среди нас.
В пособии излагаются основные тенденции развития организационного обеспечения безопасности информационных систем, а также подходы к анализу информационной инфраструктуры организационных систем и решению задач обеспечения безопасности компьютерных систем.Для студентов по направлению подготовки 230400 – Информационные системы и технологии (квалификация «бакалавр»).
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями shell.Для программистов-пользователей операционной системы UNIX.
Книга адресована программистам, работающим в самых разнообразных ОС UNIX. Авторы предлагают шире взглянуть на возможности параллельной организации вычислительного процесса в традиционном программировании. Особый акцент делается на потоках (threads), а именно на тех возможностях и сложностях, которые были привнесены в технику параллельных вычислений этой относительно новой парадигмой программирования. На примерах реальных кодов показываются приемы и преимущества параллельной организации вычислительного процесса.
Применение виртуальных машин дает различным категориям пользователей — от начинающих до IT-специалистов — множество преимуществ. Это и повышенная безопасность работы, и простота развертывания новых платформ, и снижение стоимости владения. И потому не случайно сегодня виртуальные машины переживают второе рождение.В книге рассмотрены три наиболее популярных на сегодняшний день инструмента, предназначенных для создания виртуальных машин и управления ими: Virtual PC 2004 компании Microsoft, VMware Workstation от компании VMware и относительно «свежий» продукт — Parallels Workstation, созданный в компании Parallels.
Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.