УпознавањС сСмафора Ρƒ Π›ΠΈΠ½ΡƒΠΊΡƒ

ΠŸΡ€Π΅Π²ΠΎΠ΄ Ρ‡Π»Π°Π½ΠΊΠ° ΠΏΡ€ΠΈΠΏΡ€Π΅ΠΌΡ™Π΅Π½ јС ΡƒΠΎΡ‡ΠΈ ΠΏΠΎΡ‡Π΅Ρ‚ΠΊΠ° курса β€žΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ Π›ΠΈΠ½ΡƒΠΊ.Π‘Π°ΡΠΈΡ†β€œ.

УпознавањС сСмафора Ρƒ Π›ΠΈΠ½ΡƒΠΊΡƒ

Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ јС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ који ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° конкурСнтским процСсима ΠΈ Π½ΠΈΡ‚ΠΈΠΌΠ° Π΄Π° Ρ€Π°Π΄Π΅ са Π·Π°Ρ˜Π΅Π΄Π½ΠΈΡ‡ΠΊΠΈΠΌ рСсурсима ΠΈ ΠΏΠΎΠΌΠ°ΠΆΠ΅ Ρƒ Ρ€Π΅ΡˆΠ°Π²Π°ΡšΡƒ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅ ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ су Ρ‚Ρ€ΠΊΠ΅, Π·Π°ΡΡ‚ΠΎΡ˜ΠΈ ΠΈ лошС понашањС Π½ΠΈΡ‚ΠΈ.

Π”Π° Π±ΠΈ Ρ€Π΅ΡˆΠΈΠΎ ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅, ΠΊΠ΅Ρ€Π½Π΅Π» садрТи Π°Π»Π°Ρ‚Π΅ ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ су мутСкси, сСмафори, сигнали ΠΈ Π±Π°Ρ€ΠΈΡ˜Π΅Ρ€Π΅.

ΠŸΠΎΡΡ‚ΠΎΡ˜Π΅ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° сСмафора:

  1. Π‘ΠΈΠ½Π°Ρ€Π½ΠΈ сСмафор
  2. Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ Π·Π° Π±Ρ€ΠΎΡ˜Π°ΡšΠ΅
  3. Низови сСмафора (сСт сСмафора)

ΠŸΠΎΠ³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅ статус ИПЦ-Π°

Π‘Π»Π΅Π΄Π΅Ρ›Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ сС ΠΌΠΎΠ³Ρƒ користити Π·Π° добијањС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° ΠΎ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎΠΌ ΡΡ‚Π°ΡšΡƒ мСђупроцСснС ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ (ИПЦ).

# ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 65536 root 600 393216 2 dest
0x00000000 98305 root 600 393216 2 dest
0x00000000 131074 root 600 393216 2 dest
0x00000000 163843 root 600 393216 2 dest
0x00000000 196612 root 600 393216 2 dest
0x00000000 229381 root 600 393216 2 dest
0x00000000 262150 root 600 393216 2 dest
0x00000000 294919 root 600 393216 2 dest
0x00000000 327688 root 600 393216 2 dest
------ Semaphore Arrays --------

key semid owner perms nsems

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

Активни Π½ΠΈΠ·ΠΎΠ²ΠΈ сСмафора

ΠŸΡ€ΠΈΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΠΌ Π½ΠΈΠ·ΠΎΠ²ΠΈΠΌΠ° сСмафора.

# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems

Π—Π°Ρ˜Π΅Π΄Π½ΠΈΡ‡ΠΊΠΈ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜ΡΠΊΠΈ сСгмСнти

ΠŸΠΎΠ³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΠΌ Π΄Π΅Ρ™Π΅Π½ΠΈΠΌ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜ΡΠΊΠΈΠΌ сСгмСнтима.

# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 65536 root 600 393216 2 dest
0x00000000 98305 root 600 393216 2 dest

Лимитс

Π’ΠΈΠΌ ipcs -l ΠΏΡ€ΠΈΠΊΠ°Π·ΡƒΡ˜Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ° Π·Π°Ρ˜Π΅Π΄Π½ΠΈΡ‡ΠΊΠ΅ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅, сСмафора ΠΈ ΠΏΠΎΡ€ΡƒΠΊΠ°.

# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4194303
max total shared memory (kbytes) = 1073741824
min seg size (bytes) = 1

------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767

------ Messages: Limits --------
max queues system wide = 16
max size of message (bytes) = 65536
default max size of queue (bytes) = 65536

Π—Π°Ρ˜Π΅Π΄Π½ΠΈΡ‡ΠΊΠ° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°

Команда испод ΠΏΡ€ΠΈΠΊΠ°Π·ΡƒΡ˜Π΅ Π·Π°Ρ˜Π΅Π΄Π½ΠΈΡ‡ΠΊΡƒ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Ρƒ.

# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 65536 root 600 393216 2 dest
0x00000000 98305 root 600 393216 2 dest
0x00000000 131074 root 600 393216 2 dest
0x00000000 163843 root 600 393216 2 dest
0x00000000 196612 root 600 393216 2 dest
0x00000000 229381 root 600 393216 2 dest
0x00000000 262150 root 600 393216 2 dest
0x00000000 294919 root 600 393216 2 dest
0x00000000 327688 root 600 393216 2 dest

ΠšΡ€Π΅Π°Ρ‚ΠΎΡ€ΠΈ рСсурса

Команда ΠΏΡ€ΠΈΠΊΠ°Π·ΡƒΡ˜Π΅ корисника ΠΈ Π³Ρ€ΡƒΠΏΡƒ власника ΠΈ ΠΊΡ€Π΅Π°Ρ‚ΠΎΡ€Π° рСсурса.

# ipcs -m -c

------ Shared Memory Segment Creators/Owners --------
shmid perms cuid cgid uid gid
65536 600 root root root root
98305 600 root root root root
131074 600 root root root root
163843 600 root root root root
196612 600 root root root root
229381 600 root root root root
262150 600 root root root root
294919 600 root root root root
327688 600 root root root root

ΠšΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ ИПЦ Π°Π»Π°Ρ‚Π°

Π£ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ испод, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ -u ΠŸΡ€ΠΈΠΊΠ°Π·ΡƒΡ˜Π΅ Ρ€Π΅Π·ΠΈΠΌΠ΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π΅ свих ИПЦ Π°Π»Π°Ρ‚Π°.

# ipcs -u

------ Shared Memory Status --------
segments allocated 9
pages allocated 864
pages resident 477
pages swapped 0
Swap performance: 0 attempts 0 successes

------ Semaphore Status --------
used arrays = 0
allocated semaphores = 0

------ Messages: Status --------
allocated queues = 0
used headers = 0
used space = 0 bytes

Када сС услугС зауставС, сСмафори ΠΈ сСгмСнти Π·Π°Ρ˜Π΅Π΄Π½ΠΈΡ‡ΠΊΠ΅ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅ Ρ‚Π°ΠΊΠΎΡ’Π΅ ΠΌΠΎΡ€Π°Ρ˜Ρƒ Π±ΠΈΡ‚ΠΈ избрисани. Ако сС Π½Π΅ ΡƒΠΊΠ»ΠΎΠ½Π΅, Ρ‚ΠΎ сС ΠΌΠΎΠΆΠ΅ ΡƒΡ€Π°Π΄ΠΈΡ‚ΠΈ ΠΏΠΎΠΌΠΎΡ›Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈΠΏΡ†Ρ€ΠΌ, ΠΏΡ€ΠΎΡΠ»Π΅Ρ’ΡƒΡ˜ΡƒΡ›ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ИПЦ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π°.

# ipcs -a
# ipcrm -s < sem id>

Π’Π°ΠΊΠΎΡ’Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ° сСмафора користСћи sysctl.

# /sbin/sysctl -w kernel.sem=250

УпознавањС сСмафора Ρƒ Π›ΠΈΠ½ΡƒΠΊΡƒ

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€