๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป/CS

[์šด์˜์ฒด์ œ] Synchronization - 3. Spin lock๊ณผ Mutex lock, Mutex์™€ Semaphore

mutex lock

- lock์„ ์žก๊ธฐ ์œ„ํ•ด ์˜ค๋žœ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ๊ฒƒ ๊ฐ™์œผ๋ฉด ๋‹ค๋ฅธ ์ž‘์—…์„ ๋™์‹œ์— ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

- busy waiting ํ•˜์ง€ ๋ง๊ณ , blocking ๋˜์–ด ๊ธฐ๋‹ค๋ฆฌ์ž.

- ์ž์›์„ ๋‹จ์‹œ๊ฐ„์— ์–ป์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ ์ฐจ๋ผ๋ฆฌ spin lock์ด ํšจ๊ณผ์ ์ด๋‹ค. context switching์— ๋” ํฐ ์ž์›์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ดˆ๋ž˜ํ•œ๋‹ค.

spin lock

- ๋ฌธ๋งฅ ๊ตํ™˜(context switching)์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

- ๋‹ค๋ฅธ ์ž‘์—…์„ ๋™์‹œ์— ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ง„์ž… ๊ฐ€๋Šฅํ•  ๋•Œ ๊นŒ์ง€ ๊ณ„์† ๊ธฐ๋‹ค๋ฆฌ๋Š” busy waiting ๋ฐฉ์‹์ด๋‹ค. 

- lock์„ ์žก์„ ๋•Œ ๊นŒ์ง€ ๋Š์ž„์—†๋Š” ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ํ†ตํ•ด critical section์— ์ง„์ž…์„ ์žฌ์‹œ๋„ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณ„์† CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์ด๋ฏ€๋กœ, ์ž์›์„ ๋‹จ๊ธฐ๊ฐ„์— ์–ป์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ CPU์˜ ๋‚ญ๋น„๋ฅผ ์ดˆ๋ž˜ํ•œ๋‹ค.

- ๋˜ํ•œ, lock์„ ์žก๊ณ  ์žˆ๋Š” ์• ๊ฐ€ preemtive ๋˜๋ฉด ์ด lock์„ ์žก๊ธฐ ์œ„ํ•ด spin lock์„ ์ˆ˜ํ–‰ ์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค๋Š” ํ•œํƒ€์ž„ ๋‚ด๋‚ด CPU์˜ ๋‚ญ๋น„๋ฅผ ์ดˆ๋ž˜ํ•œ๋‹ค.

- ์ž์›์„ ๋‹จ์‹œ๊ฐ„์— ์–ป์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ  context switching ๋น„์šฉ์ด ๋“ค์ง€ ์•Š์•„ ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 


Mutex๋ž€?

๋ฃจํ”„๋ฅผ ํ†ตํ•ด ์ง„์ž…์„ ๊ณ„์†ํ•ด์„œ ์žฌ์‹œ๋„ํ•˜๋Š” spin lock๋ณด๋‹ค ์กฐ๊ธˆ ๋” ํ™•์žฅ๋œ ํ˜•ํƒœ

spin lock์ฒ˜๋Ÿผ busy waitingํ•˜์ง€ ์•Š๊ณ  blocking๋˜์–ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ์‹.

  • mutual exclusive๋ฅผ ๋ณด์žฅํ•˜๋Š” lock. ์ƒํ˜ธ ๋ฐฐ์ œ ๋ฐฉ์‹.
  • critical section์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ (๋™๊ธฐํ™” ๋Œ€์ƒ์ด ์˜ค์ง ํ•˜๋‚˜์ด๋‹ค. semaphore๊ณผ ์ฐจ์ด์ )
  • ๋ฎคํ…์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” critical section์€ ๊ณต์œ  ๋ถˆ๊ฐ€๋Šฅ
  • ํ•œ๋ฒˆ์— ๋‹จ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ. ์˜ค์ง ์ง„์ž…ํ•œ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๋งŒ์ด mutex ํ•ด์ œ.
  • ์‚ฌ์šฉ์ค‘์ธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ๋ฝ(Lock)์„ ๊ฑธ์–ด๋ฒ„๋ ค ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ์˜ ์ ‘๊ทผ ๋ฐฉ์ง€

mutex๋Š” ํ™”์žฅ์‹ค์— ํ•œ์นธ ๋ฐ–์— ์—†๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Œ.

https://cocoon1787.tistory.com/541

 

Semaphore๋ž€?

  • critical section์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ (๋™๊ธฐํ™” ๋Œ€์ƒ์ด ํ•˜๋‚˜ ์ด์ƒ์ด๋‹ค. mutex์™€ ์ฐจ์ด์ )
  • ๋ฆฌ์†Œ์Šค์˜ ์ƒํƒœ, ๊ฐฏ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ„๋‹จํ•œ ์นด์šดํ„ฐ
  • ๋ฝ์„ ๊ฑธ์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ signal์„ ๋ณด๋‚ด ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

semaphore์€ ํ™”์žฅ์‹ค์— ์—ฌ๋Ÿฌ ์นธ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Œ.

๊ฐ ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”(์ฆ‰, ๋น„์–ด์žˆ๋Š”) ํ™”์žฅ์‹ค ์นธ ๊ฐฏ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ.

https://cocoon1787.tistory.com/541

 

  • Binary semaphore: Semaphore์˜ value ๊ฐ’์ด 1์ธ ๊ฒฝ์šฐ ์ด๋ฅผ mutex์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Mutex์™€ Semaphore์˜ ์ฐจ์ด์ 

  • ๊ด€๋ฆฌํ•˜๋Š” ๋™๊ธฐํ™”์˜ ๊ฐฏ์ˆ˜
  • mutex๋Š” ๋ฝ์„ ๊ฑธ์€ ์Šค๋ ˆ๋“œ๋งŒ์ด ๋ฝ ํ•ด์ œ ๊ฐ€๋Šฅ
  • semaphore์€ ๋ฝ์„ ๊ฑธ์ง€ ์•Š์€ ์Šค๋ ˆ๋“œ๋„ signal์„ ๋ณด๋‚ด ๋ฝ ํ•ด์ œ ๊ฐ€๋Šฅ

'๐Ÿ’ป > CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์šด์˜์ฒด์ œ] Synchronization - 2  (0) 2022.12.16
[์šด์˜์ฒด์ œ] Synchronization - 1  (0) 2022.12.16
[์šด์˜์ฒด์ œ] Real-time System์ด๋ž€?  (1) 2022.12.16
CS ์ฐธ๊ณ   (0) 2022.06.12
CS50_๋ฐฐ์—ด  (0) 2022.06.12