Skip to content

Latest commit

ย 

History

History
307 lines (204 loc) ยท 15.1 KB

File metadata and controls

307 lines (204 loc) ยท 15.1 KB

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ  ์ธํ„ฐ๋ทฐ | OS ๋‹จ๊ณจ ์งˆ๋ฌธ



ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ํ”„๋กœ์„ธ์Šค(Process)๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ, ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(Code, Data, Heap, Stack)์„ ๊ฐ€์ง„๋‹ค.

  • ์Šค๋ ˆ๋“œ(Thread)๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„์ด๋‹ค.

    • Stack๋งŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ• ๋‹น๋ฐ›๊ณ , Code, Data, Heap ์˜์—ญ์„ ๊ณต์œ ํ•œ๋‹ค.
    • ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ๋Š” ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
โ‰๏ธ ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๊ณต์œ ํ•˜๋Š”๋ฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ์Šค๋ ˆ๋“œ๋Š” ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ(Code, Data, Heap)๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition) ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์—ฌ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

โ‰๏ธ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋ฎคํ…์Šค(Mutex)๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋„๋ก ์ œํ•œํ•œ๋‹ค. (์ƒํ˜ธ ๋ฐฐ์ œ)
  • ์„ธ๋งˆํฌ์–ด(Semaphore)๋Š” ๋™์‹œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์ œํ•œํ•œ๋‹ค.

๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์˜ ํŠน์ง•

๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์˜ ํŠน์ง•์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

    • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค.
    • ๋‹จ, ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ์–ด๋ ต๊ณ , ๋ฌธ๋งฅ ์ „ํ™˜ ๋น„์šฉ(Context Switching)์ด ํฌ๋‹ค.
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

    • ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ์šฉ์ดํ•˜์ง€๋งŒ, ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
โ‰๏ธ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์˜ ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋ฝ(Lock)์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ž์›์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ์ œํ•œํ•œ๋‹ค.
  • ์„ธ๋งˆํฌ์–ด(Semaphore)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์‹œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์กฐ์ •ํ•œ๋‹ค.

โ‰๏ธ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๊ฐ€ ๋” ํšจ์œจ์ ์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋กœ ์›น ์„œ๋ฒ„, ๊ฒŒ์ž„ ์—”์ง„, ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ ํšจ์œจ์ ์ด๋‹ค.
  • ๋ฌธ๋งฅ ์ „ํ™˜ ๋น„์šฉ์ด ํฐ ๊ฒฝ์šฐ๋กœ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋Š” ๋ฌธ๋งฅ ์ „ํ™˜(Context Switching) ๋น„์šฉ์ด ์ ๋‹ค.
  • I/O ์ž‘์—…์ด ์ ๊ณ , ์—ฐ์‚ฐ์ด ์ง‘์ค‘๋œ ๊ฒฝ์šฐ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๊ฐ€ ๋” ๋น ๋ฅธ ์‹คํ–‰ ์†๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

๋™์‹œ์„ฑ๊ณผ ๋ณ‘๋ ฌ์„ฑ

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์˜ ๋™์‹œ์„ฑ๊ณผ ๋ณ‘๋ ฌ์„ฑ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋™์‹œ์„ฑ(Concurrency)์€ ์‹ฑ๊ธ€ ์ฝ”์–ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์—…์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‹คํ–‰ํ•˜๋Š”, ๋…ผ๋ฆฌ์  ๋™์‹œ ์‹คํ–‰ ๋ฐฉ์‹์ด๋‹ค.

    • ์›น ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋ฒˆ๊ฐˆ์•„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋ณ‘๋ ฌ์„ฑ(Parallelism)์€ ๋ฉ€ํ‹ฐ ์ฝ”์–ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์—…์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

    • ๋ฐ์ดํ„ฐ ๋ถ„์„ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ์ฝ”์–ด์—์„œ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•œ๋‹ค.
โ‰๏ธ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ ๋ณ‘๋ ฌ์„ฑ๋ณด๋‹ค ๋™์‹œ์„ฑ์ด ์œ ๋ฆฌํ•œ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ์‹ฑ๊ธ€ ์ฝ”์–ด ํ™˜๊ฒฝ์—์„œ๋Š” ๋ณ‘๋ ฌ์„ฑ ๋Œ€์‹  ๋™์‹œ์„ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • I/O ์ž‘์—…์ด ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” ๋™์‹œ์„ฑ์ด ๋” ์œ ๋ฆฌํ•˜๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ๋กœ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋™์‹œ ์‹คํ–‰์ด ๋” ํšจ๊ณผ์ ์ด๋‹ค.

โ‰๏ธ ๋™์‹œ์„ฑ๊ณผ ๋ณ‘๋ ฌ์„ฑ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ์Šค๋ ˆ๋“œ ํ’€(Thread Pool)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•œ๋‹ค.
  • ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Async Programming)์„ ์ ์šฉํ•˜์—ฌ ํ•„์š”ํ•  ๋•Œ๋งŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค.
  • ์ž‘์—…์„ ์ ์ ˆํžˆ ๋ถ„ํ• ํ•˜๋„๋ก ์—ฐ์‚ฐ์„ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ ๋‚˜๋ˆ ์„œ ์‹คํ–‰ํ•œ๋‹ค.

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์ฃผ์˜ํ•  ์ 

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ :

    • ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)๋กœ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฐ๋“œ๋ฝ(Deadlock) ์ƒํƒœ๋กœ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ์ž์›์„ ์ ์œ ํ•œ ์ƒํƒœ์—์„œ ๋ฌดํ•œ ๋Œ€๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ต์ฐฉ ์ƒํƒœ(Starvation)๋กœ ํŠน์ • ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณ„์†ํ•ด์„œ ์ž์›์„ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•˜๊ณ  ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฌธ์ œ์  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

    • ๋ฎคํ…์Šค(Mutex)๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.
    • ์„ธ๋งˆํฌ์–ด(Semaphore)๋Š” ๋™์‹œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œํ•œ๋‹ค.
    • ์Šคํ•€๋ฝ(Spinlock)์€ ๋ฐ”์œ ๋Œ€๊ธฐ ๋ฐฉ์‹์œผ๋กœ CPU ์‚ฌ์šฉ๋ฅ ์„ ์ตœ์ ํ™”ํ•œ๋‹ค.
โ‰๏ธ ๋ฐ๋“œ๋ฝ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ์กฐ๊ฑด (Coffman's ์กฐ๊ฑด): ์•„๋ž˜ 4๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋™์‹œ์— ๋งŒ์กฑํ•˜๋ฉด ๋ฐ๋“œ๋ฝ(Deadlock)์ด ๋ฐœ์ƒํ•œ๋‹ค.

    • ์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusion)๋Š” ์ž์›์„ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ์ƒํƒœ์ด๋‹ค.
    • ์ ์œ  ๋Œ€๊ธฐ(Hold and wait)๋Š” ์ž์›์„ ์ ์œ ํ•œ ์ƒํƒœ์—์„œ ์ถ”๊ฐ€ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ด๋‹ค.
    • ๋น„์„ ์ (No Preemption)์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ํ•œ ์ž์›์„ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ด๋‹ค.
    • ์ˆœํ™˜ ๋Œ€๊ธฐ(Circular Wait)๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด ์›ํ˜•์œผ๋กœ ์ž์›์„ ๋Œ€๊ธฐํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.
  • ๋ฐ๋“œ๋ฝ ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•:

    • ์ƒํ˜ธ ๋ฐฐ์ œ ์กฐ๊ฑด ์ œ๊ฑฐ(์ž์› ๊ณต์œ )๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž์›์„ ๊ณต์œ ํ•˜๋ฉด ๋ฐ๋“œ๋ฝ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ ์œ  ๋Œ€๊ธฐ ์กฐ๊ฑด ์ œ๊ฑฐ(์ž์› ์š”์ฒญ ์ „๋ถ€ ์™„๋ฃŒ ํ›„ ์‹คํ–‰)๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ž์›์„ ํ•œ ๋ฒˆ์— ํ• ๋‹นํ•˜์—ฌ ์ ์œ  ๋Œ€๊ธฐ ์ƒํƒœ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค.
      • ํ•˜์ง€๋งŒ ์ž์›์˜ ํ™œ์šฉ๋ฅ ์ด ๋‚ฎ์•„์ง€๊ณ , ์š”์ฒญํ•˜์ง€ ์•Š์„ ์ž์›๊นŒ์ง€ ํ• ๋‹น๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
    • ๋น„์„ ์  ์กฐ๊ฑด ์ œ๊ฑฐ(์ž์› ํšŒ์ˆ˜)๋กœ ์ž์›์„ ์ ์œ ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ถ”๊ฐ€ ์ž์›์„ ์š”์ฒญํ•˜๋ฉด ๊ธฐ์กด ์ž์›์„ ๋ฐ˜๋‚ฉํ•˜๋„๋ก ํ•œ๋‹ค.
      • ํ•˜์ง€๋งŒ ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์–ป์ง€ ๋ชปํ•˜๊ณ  ๊ณ„์† ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ธฐ์•„ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
    • ์ˆœํ™˜ ๋Œ€๊ธฐ ์กฐ๊ฑด ์ œ๊ฑฐ(์ž์› ์ˆœ์„œ ์ง€์ •)๋Š” ๋ชจ๋“  ์ž์›์— ๊ณ ์œ ํ•œ ์šฐ์„ ์ˆœ์œ„(๋ฒˆํ˜ธ)๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์ˆœ์„œ๋Œ€๋กœ๋งŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
    • ์€ํ–‰๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ๋“œ๋ฝ ํšŒํ”ผ ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ, ์ž์›์˜ ํ• ๋‹น์„ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜์—ฌ ๋ฐ๋“œ๋ฝ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
      • ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•œ ์ž์›์˜ ์ตœ๋Œ€๋Ÿ‰์„ ์„ ์–ธํ•˜๊ณ , ์•ˆ์ „ ์ƒํƒœ์ธ ๊ฒฝ์šฐ์—๋งŒ ์ž์›์„ ํ• ๋‹นํ•œ๋‹ค.

โ‰๏ธ ๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋ฎคํ…์Šค(Mutex)๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฝ(Lock) ๊ธฐ๋ฒ•์ด๋‹ค.

  • ์„ธ๋งˆํฌ์–ด(Semaphore)๋Š” ๋™์‹œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

  • ๋ฎคํ…์Šค๋Š” ๊ฐ’์œผ๋กœ 0 ๋˜๋Š” 1์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์ง„ ์„ธ๋งˆํฌ์ธ ๋ฐ˜๋ฉด, ์„ธ๋งˆํฌ์–ด๋Š” ๊ฐ’์œผ๋กœ 0 ์ด์ƒ์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๋ฎคํ…์Šค๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๋ชฉ์ ์ด์ง€๋งŒ, ์„ธ๋งˆํฌ์–ด๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ ๋™์‹œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๋™๊ธฐํ™”๊ฐ€ ๋ชฉ์ ์ด๋‹ค.

  • ๋ฎคํ…์Šค๋Š” ๋ฝ์„ ํš๋“ํ•œ ์Šค๋ ˆ๋“œ๋งŒ ํ•ด์ œ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์„ธ๋งˆํฌ์–ด๋Š” ์†Œ์œ ๊ถŒ์ด ์—†์–ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋„ ํ•ด์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.


์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • CPU๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ, ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

  • ๋ฌธ๋งฅ ์ „ํ™˜์ด ๋ฐœ์ƒํ•˜๋ฉด CPU ์บ์‹œ ์ดˆ๊ธฐํ™”, ๋ ˆ์ง€์Šคํ„ฐ ๋ณ€๊ฒฝ, PCB(Process Control Block) ๊ต์ฒด ๋“ฑ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

  • ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์€ ์—ฌ๋Ÿฌ ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ๋น„์šฉ์ด ์ปค์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋˜ํ•œ, ์บ์‹œ ๋ฏธ์Šค๊ฐ€ ์ฆ๊ฐ€ํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜๋กœ ์ด์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

โ‰๏ธ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋Œ€์‹  ์Šค๋ ˆ๋“œ ํ’€(Thread Pool)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋ฐ ์ œ๊ฑฐ๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.
  • ์ž‘์—… ๋‹จ์œ„๋ฅผ ํฌ๊ฒŒ ๋งŒ๋“ค์–ด์„œ ๋„ˆ๋ฌด ์ž์ฃผ ๋ฌธ๋งฅ ์ „ํ™˜์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ์ž‘์—… ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•œ๋‹ค.
  • ๋™๊ธฐํ™”๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋ฝ์„ ์ ๊ฒŒ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ๋งฅ ์ „ํ™˜ ํšŸ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค.

โ‰๏ธ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์—์„œ ๋ฌธ๋งฅ ์ „ํ™˜์„ ์ตœ์†Œํ™”ํ•˜๋Š” ์ „๋žต์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋ฝ์„ ์ตœ์†Œํ•œ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์Šค๋ ˆ๋“œ ๊ฐ„ ์ „ํ™˜ ๋น„์šฉ์„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
  • ์Šค๋ ˆ๋“œ ๋ฐ”์ธ๋”ฉ์„ ์ ์šฉํ•˜์—ฌ ํŠน์ • ์ฝ”์–ด์—์„œ ํŠน์ • ์Šค๋ ˆ๋“œ๋งŒ ์‹คํ–‰ํ•˜๋„๋ก ๊ณ ์ •์‹œํ‚จ๋‹ค.

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ํŽ˜์ด์ง€ ๋ถ€์žฌ ๋ฐœ์ƒ ์‹œ, ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•  ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

  • ํŽ˜์ด์ง€ ๊ต์ฒด์˜ ์ฃผ์š” ์•Œ๊ณ ๋ฆฌ์ฆ˜:

    • FIFO: ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•œ๋‹ค.
    • LRU: ๊ฐ€์žฅ ์˜ค๋ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•œ๋‹ค.
    • LFU: ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•œ๋‹ค.
    • OPT(Optimal): ์•ž์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•œ๋‹ค.
โ‰๏ธ LRU์™€ LFU์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • LRU(Least Recently Used)๋Š” ๊ฐ€์žฅ ์˜ค๋ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•œ๋‹ค.

    • ์‚ฌ์šฉ ๊ธฐ๋ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ต์ฒดํ•œ๋‹ค.
  • LFU(Least Frequently Used)๋Š” ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•œ๋‹ค.

    • ์ž์ฃผ ์‚ฌ์šฉ๋œ ํŽ˜์ด์ง€๋Š” ์œ ์ง€ํ•œ๋‹ค.

โ‰๏ธ OPT ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์™œ ํ˜„์‹ค์ ์œผ๋กœ ๊ตฌํ˜„์ด ๋ถˆ๊ฐ€๋Šฅํ•œ์ง€์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • OPT(Optimal Page Replacement)๋Š” ์•ž์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ํ•˜์ง€๋งŒ ๋ฏธ๋ž˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํŒจํ„ด์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ์šด์˜์ฒด์ œ์—์„œ๋Š” ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†๋‹ค.

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋™๊ธฐ(Synchronous)๋Š” ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.

    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŠธ๋žœ์žญ์…˜, ํŒŒ์ผ I/O ๋“ฑ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋น„๋™๊ธฐ(Asynchronous)๋Š” ์ž‘์—…์„ ์š”์ฒญํ•˜๊ณ  ์ฆ‰์‹œ ๋‹ค์Œ ์ž‘์—…์„ ์‹คํ–‰ํ•œ๋‹ค.

    • ๋„คํŠธ์›Œํฌ ์š”์ฒญ, UI ์ด๋ฒคํŠธ ๋“ฑ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
โ‰๏ธ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์žฅ์ ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • CPU ์‚ฌ์šฉ ์ตœ์ ํ™”๋กœ ํ•˜๋‚˜์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ž‘์—… ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • I/O ์ž‘์—…์ด ๋งŽ์€ ์›น ์„œ๋ฒ„, ํŒŒ์ผ ์ฒ˜๋ฆฌ, ๋„คํŠธ์›Œํฌ ์š”์ฒญ ๋“ฑ์—์„œ ํšจ๊ณผ์ ์ด๋‹ค.

์„ ์ ํ˜•๊ณผ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง

์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง๊ณผ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • CPU ์Šค์ผ€์ค„๋ง์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ• ์ง€ ๊ฒฝ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

  • ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง (Preemptive Scheduling): ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด CPU ์‚ฌ์šฉ์ด ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.

    • CPU๋ฅผ ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ฆ‰์‹œ ์šฐ์„ ์ˆœ์œ„ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ์‘๋‹ต ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
  • ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง (Non-Preemptive Scheduling): ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์œผ๋ฉด ๋๋‚  ๋•Œ๊นŒ์ง€ ์œ ์ง€๋œ๋‹ค.

    • CPU๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์—†๋‹ค.
    • ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๋ฉด ๋Œ€๊ธฐํ•˜๋ฏ€๋กœ ์‘๋‹ต ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค.
โ‰๏ธ ๋Œ€ํ‘œ์ ์ธ ์„ ์ ํ˜•๊ณผ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”.
  • ๋Œ€ํ‘œ์ ์ธ ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์€ RR(Round Robin), SRTF(Shortest Remaining Time First)๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ๋Œ€ํ‘œ์ ์ธ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์€ FCFS(First Come First Served), SJF(Shortest Job First)๊ฐ€ ์กด์žฌํ•œ๋‹ค.