Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по ОС.doc
Скачиваний:
50
Добавлен:
24.09.2019
Размер:
202.24 Кб
Скачать

39) Системные вызовы sem_init. Его предназначение и параметры.

int sem_init(sem_t*addr,int pshared, unsigned int value);

Функция sem_init - альтернатива функции sem_open. Процесс, использующий sem_init, сначала выделяет область памяти для создаваемого семафора. Эта область памяти может быть разделяемой, если к семафору должны обращаться другие процессы. Адрес этой области передается как значение в аргумент addr функции sem_init. Аргумент pshared имеет значение 1, если семафор должен использоваться несколькими процессами совместно. В противном случае значение этого аргумента - 0. Аргумент init_value содержит целое значение, которое должно быть присвоено семафору как начальное. Это значение не должно быть отрицательным числом.

В случае успешного выполнения данная функция возвращает 0, а в случае неудачи коды ошибок:

• EINVAL превышено максимально возможное количество семафоров в системе;

• ENOSYS аргумент pshared не равен нулю.

40) Системные вызовы sem_getvalue, sem_wait и sem_close. Их предназначение и параметры.

int sem_getvalue(sem_t*idp, int*valuep);

Функция sem_gelvalue позволяет определить текущее значение семафора, указанного аргументом idp. Это значение передается с помощью аргумента valuep. Функция всегда возвращает 0.

int sem_wait(sem_t* idp);

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

int sem_close(sem_t*idp);

Функция sem_close отсоединяет семафор, созданный функцией sem_open. В случае успешного выполнения функция возвращает 0, а в случае неудачи -1.

41) Системные вызовы sem_trywait и sem_unlink. Их предназначение и параметры.

int sem_trywait(sem_t* idp);

Функция sem_trywait похожа на sem_wait, но она неблокирующая и возвращает EAGAIN (если не может уменьшить указанное значение семафора).

int sem_unlink(char* name);

Функция sem_unlink удаляет семафор, созданный функцией sem_open из системы. В случае успешного выполнения функция возвращает 0, а в случае неудачи -1.

42) Системные вызовы sem_post и sem_destroy. Их предназначение и параметры.

int sem_post(sem_t* idp); Функция sem_post увеличивает значение семафора на единицу. Семафор обозначается аргументом idp. В случае успешного выполнения функция возвращает 0, а если увеличение значения семафора приводит к переполнению типа, то возвращается ERANGE.

int sem_destroy (sem_t* idp);

Функция sem_destroy используется с семафорами, созданными функцией sem_init. Она удаляет семафор из системы. В случае успешного выполнения функция возвращает 0, если же на этом семафоре есть заблокированные процессы то возвращается EBUSY.

43.Последовательность вызовов api серверного гнезда.

Серверный сокет предполагает обмен данными с клиентами. В принципе, от клиентской реализации он отличается тем, что способен работать с несколькими клиентами одновременно. На базе серверного сокета можно создавать программы — серверы, которые предоставляют возможность внедрять собственные протоколы верхнего уровня, т. е. реализовывать различные схемы обмена данными.

Socket - Представляет собой ссылку на объект типа TServerWinSocket, который и предоставляет основные сервисы

Server Type - Определяет тип сервера с позиций работы с потоками передачи/приема данных. Значение stNonBlocking - позволяет вести асинхронную работу с сервером посредством операторов чтения/записи.

ThreadCacheSize - Содержит число потоков, которые кэшируются в памяти. Для ускорения работы с клиентами, объект ServerSocket после завершения соединения с клиентом не выгружает из памяти содержимое потоков ввода/вывода с целью последующего их использования при работе с другими клиентами. Данный параметр устанавливает число хранимых в памяти потоков

Active - Определяет — активен ли сокет

Port - Содержит номер сетевого порта, на который установлена служба, работу которой обеспечивает данный сокет

Service - Содержит название службы, точнее — протокола высокого уровня (HTTP, FTP, POP), по которому будет вестись работа. Если используется собственный формат обмена данными, поле можно оставлять пустым