Основы операционных систем. Практикум

Команды ipcs и ipcrm


Как мы видели из предыдущего примера, созданная область разделяемой памяти сохраняется в операционной системе даже тогда, когда нет ни одного процесса, включающего ее в свое адресное пространство. С одной стороны, это имеет определенные преимущества, поскольку не требует одновременного существования взаимодействующих процессов, с другой стороны, может причинять существенные неудобства. Допустим, что предыдущие программы мы хотим использовать таким образом, чтобы подсчитывать количество запусков в течение одного, текущего, сеанса работы в системе. Однако в созданном сегменте разделяемой памяти остается информация от предыдущего сеанса, и программы будут выдавать общее количество запусков за все время работы с момента загрузки операционной системы. Можно было бы создавать для нового сеанса новый сегмент разделяемой памяти, но количество ресурсов в системе не безгранично. Нас спасает то, что существуют способы удалять неиспользуемые ресурсы System V IPC как с помощью команд операционной системы, так и с помощью системных вызовов. Все средства System V IPC требуют определенных действий для освобождения занимаемых ресурсов после окончания взаимодействия процессов. Для того чтобы удалять ресурсы System V IPC из командной строки, нам понадобятся две команды, ipcs и ipcrm.

Команда ipcs выдает информацию обо всех средствах System V IPC, существующих в системе, для которых пользователь обладает правами на чтение: областях разделяемой памяти, семафорах и очередях сообщений.

Команда ipcs

Синтаксис команды

ipcs [-asmq] [-tclup] ipcs [-smq] -i id ipcs -h

Описание команды

Команда ipcs предназначена для получения информации о средствах System V IPC, к которым пользователь имеет право доступа на чтение.

Опция -i позволяет указать идентификатор ресурсов. Будет выдаваться только информация для ресурсов, имеющих этот идентификатор.

Виды IPC ресурсов могут быть заданы с помощью следующих опций:

  • –s для семафоров;
  • -m для сегментов разделяемой памяти;
  • -q для очередей сообщений;
  • -a для всех ресурсов (по умолчанию).

Опции [-tclup] используются для изменения состава выходной информации. По умолчанию для каждого средства выводятся его ключ, идентификатор IPC, идентификатор владельца, права доступа и ряд других характеристик. Применение опций позволяет вывести:

  • -t времена совершения последних операций над средствами IPC;
  • -p идентификаторы процесса, создавшего ресурс, и процесса, совершившего над ним последнюю операцию;
  • -c идентификаторы пользователя и группы для создателя ресурса и его собственника;
  • -l системные ограничения для средств System V IPC;
  • -u общее состояние IPC ресурсов в системе.

Опция -h используется для получения краткой справочной информации.

<
Из всего многообразия выводимой информации нас будут интересовать только IPC идентификаторы для средств, созданных вами. Эти идентификаторы будут использоваться в команде ipcrm, позволяющей удалить необходимый ресурс из системы. Для удаления сегмента разделяемой памяти эта команда имеет вид:

ipcrm shm <IPC идентификатор>

Удалите созданный вами сегмент разделяемой памяти из операционной системы, используя эти команды.



Команда ipcrm

Синтаксис команды

ipcrm [shm | msg | sem] id

Описание команды

Команда ipcrm предназначена для удаления ресурса System V IPC из операционной системы. Параметр id задает IPC идентификатор для удаляемого ресурса, параметр shm используется для сегментов разделяемой памяти, параметр msg – для очередей сообщений, параметр sem – для семафоров.
Если поведение программ, использующих средства System V IPC, базируется на предположении, что эти средства были созданы при их работе, не забывайте перед их запуском удалять уже существующие ресурсы.


Содержание раздела