Какие массивы семафоров в Linux?

Я понимаю семафоры, но что эти массивы семафоров используются в моей Linux-системе?

$ ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000000 327681     root      644        80         2                       
0x00000000 360450     root      644        16384      2                       
0x00000000 393219     root      644        280        2                       
...

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x4172d4f4 290914305  lazer     660        104       
0x3b87b970 291045378  lazer     660        104       
0xa97eb380 293928963  lazer     660        104       
0x1fde2040 294191108  lazer     660        104       

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    

$

Кроме того, какой ресурс ОС они охраняют?

2 ответа

ipcs -i <SEMID> -s даст вам больше информации о конкретном массиве sem. Например

[me@home]$ ipcs -i 32769 -s

Semaphore Array semid=32769
uid=537  gid=85  cuid=537        cgid=85
mode=0600, access_perms=0600
nsems = 1
otime = Mon Sep 19 12:18:53 2011
ctime = Mon Sep 19 12:07:11 2011
semnum     value      ncount     zcount     pid
0          1          0          0          7548

Используйте pid, чтобы выяснить, кто его использует.

Да, я был смущен этим.

Семафорные массивы являются альтернативой SysV семафорам ядра для пользовательских процессов.

Они немного сложнее:

  • Они используют массив значений для защиты нескольких ресурсов одним семафором. Так что, где у семафоров ядра Linux есть операции "вверх" / "вниз" для включения / уменьшения значения структуры, у sem_arrays есть операции для редактирования любого из значений в его массиве.

  • У них есть отменяемые операции. Процесс может позволить ядру откатить операцию, если она неожиданно умирает.

Кроме того, какой ресурс ОС они охраняют?

Так как они предназначены для процессов пользовательского режима, я бы не подумал, что они защищают любые ресурсы ОС.

Для получения дополнительной информации: "Понимание ядра Linux" - Глава 19

Другие вопросы по тегам