[๐Ÿ‘จ๐Ÿปโ€๐Ÿ”ฌCS ์Šคํ„ฐ๋”” 1์ฃผ์ฐจ] - OS(์šด์˜์ฒด์ œ 2)

๊น€์œค์ค€ยท2023๋…„ 12์›” 6์ผ

CS ์Šคํ„ฐ๋””

๋ชฉ๋ก ๋ณด๊ธฐ
2/13

6. IPC(Inter Process Communication)

ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ์ฆ‰, ๋…๋ฆฝ ๋˜์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. (์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ์ž์›์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค)

์ด๋Ÿฐ ๋…๋ฆฝ์  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ IPC ํ†ต์‹ ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค๋Š” ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” IPC ์„ค๋น„๋ฅผ ์ด์šฉํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ปค๋„์ด๋ž€?

์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์œผ๋กœ, ๋‹ค๋ฅธ ๋ชจ๋“  ๋ถ€๋ถ„์— ์—ฌ๋Ÿฌ ๊ธฐ๋ณธ์ ์ธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ด์คŒ

IPC ์ข…๋ฅ˜

1. ์ต๋ช… PIPE

ํŒŒ์ดํ”„๋Š” ๋‘ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š”๋ฐ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ธฐ๋งŒ ํ•˜๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ๋ฐ˜์ด์ค‘ ํ†ต์‹ ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

๋”ฐ๋ผ์„œ ์–‘์ชฝ์œผ๋กœ ๋ชจ๋‘ ์†ก/์ˆ˜์‹ ์„ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด 2๊ฐœ์˜ ํŒŒ์ดํ”„๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๊ณ , ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ฐ€์งˆ ๋• ํŒŒ์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค. ๋‹จ์ ์œผ๋กœ๋Š” ์ „์ด์ค‘ ํ†ต์‹ ์„ ์œ„ํ•ด 2๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•  ๋•Œ๋Š” ๊ตฌํ˜„์ด ๋ณต์žกํ•ด์ง€๊ฒŒ ๋œ๋‹ค.

2. Named PIPE(FIFO)

์ต๋ช… ํŒŒ์ดํ”„๋Š” ํ†ต์‹ ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. (๋ถ€๋ชจ-์ž์‹ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์ฒ˜๋Ÿผ)

Named ํŒŒ์ดํ”„๋Š” ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด ํ†ต์‹ ์— ์‚ฌ์šฉํ•œ๋‹ค.

์ฆ‰, ์ต๋ช… ํŒŒ์ดํ”„์˜ ํ™•์žฅ๋œ ์ƒํƒœ๋กœ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ๋ฌด๊ด€ํ•œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋„ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ (ํ†ต์‹ ์„ ์œ„ํ•ด ์ด๋ฆ„์žˆ๋Š” ํŒŒ์ผ์„ ์‚ฌ์šฉ)

ํ•˜์ง€๋งŒ, Named ํŒŒ์ดํ”„ ์—ญ์‹œ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋™์‹œ์— ๋ถˆ๊ฐ€๋Šฅํ•จ. ๋”ฐ๋ผ์„œ ์ „์ด์ค‘ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ๋Š” ์ต๋ช… ํŒŒ์ดํ”„์ฒ˜๋Ÿผ 2๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ๊ฐ€๋Šฅ

3. Message Queue

์ž…์ถœ๋ ฅ ๋ฐฉ์‹์€ Named ํŒŒ์ดํ”„์™€ ๋™์ผํ•จ

๋‹ค๋ฅธ์ ์€ ๋ฉ”์‹œ์ง€ ํ๋Š” ํŒŒ์ดํ”„์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์ด ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋‹ค.

์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ด๋ฉด์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

4. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ

ํŒŒ์ดํ”„, ๋ฉ”์‹œ์ง€ ํ๊ฐ€ ํ†ต์‹ ์„ ์ด์šฉํ•œ ์„ค๋น„๋ผ๋ฉด, ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ์ง€์›ํ•˜๋Š” ์„ค๋น„๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง€๋ฉฐ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ฐ˜๋“œ์‹œ ๋ณดํ˜ธ๋˜์•ผํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ๋„ ํ•„์š”ํ•  ๊ฒƒ์ด๋‹ค. ํŒŒ์ดํ”„๋ฅผ ์ด์šฉํ•ด ํ†ต์‹ ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ „๋‹ฌ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์Šค๋ ˆ๋“œ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ํ•ด์ค€๋‹ค๋ฉด ๋”์šฑ ํŽธํ•  ๊ฒƒ์ด๋‹ค.

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ด์ค€๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์ปค๋„์— ์š”์ฒญํ•˜๋ฉด, ์ปค๋„์€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์— ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์ฃผ๊ณ  ์ดํ›„ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ค‘๊ฐœ์ž ์—†์ด ๊ณง๋ฐ”๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์„œ IPC ์ค‘์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•จ

5. ๋ฉ”๋ชจ๋ฆฌ ๋งต

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•ด์ค€๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋งต์€ ์—ด๋ฆฐ ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋งตํ•‘์‹œ์ผœ์„œ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. (์ฆ‰ ๊ณต์œ  ๋งค๊ฐœ์ฒด๊ฐ€ ํŒŒ์ผ+๋ฉ”๋ชจ๋ฆฌ)

์ฃผ๋กœ ํŒŒ์ผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

6. ์†Œ์ผ“

๋„คํŠธ์›Œํฌ ์†Œ์ผ“ ํ†ต์‹ ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์†Œ์ผ“์„ ํ†ตํ•ด์„œ ํ†ต์‹ ํ•˜๋Š” ๊ตฌ์กฐ๋กœ, ์›๊ฒฉ์—์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์„œ๋ฒ„(bind, listen, accept), ํด๋ผ์ด์–ธํŠธ(connect)


7. CPU ์Šค์ผ€์ค„๋ง(Scheduling)

1. ์Šค์ผ€์ค„๋ง

์šด์˜์ฒด์ œ๊ฒŒ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ CPU๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•œ ์ •์ฑ…๊ณผ ์ ˆ์ฐจ.
์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ์ž‘์—…์„ ๊ณต์ •ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์กฐ์ •ํ•˜๋Š” ์ ˆ์ฐจ

CPU๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅด ์ž˜ ๋ฐฐ์ •ํ•˜๊ธฐ

  • ์กฐ๊ฑด : ์˜ค๋ฒ„ํ—ค๋“œ โ†“ / ์‚ฌ์šฉ๋ฅ  โ†‘ / ๊ธฐ์•„ ํ˜„์ƒ โ†“
  • ๋ชฉํ‘œ
    1. Batch System : ๊ฐ€๋Šฅํ•˜๋ฉด ๋งŽ์€ ์ผ์„ ์ˆ˜ํ–‰. ์‹œ๊ฐ„๋ณด๋‹จ ์ฒ˜๋ฆฌ๋Ÿ‰์ผ ์ค‘์š”
    1. Interative System : ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„, ์ ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„
    2. Real-time System : ๊ธฐํ•œ ๋งž์ถ”๊ธฐ

2. ์„ ์ / ๋น„์„ ์  ์Šค์ผ€์ค„๋ง

  • ์„ ์  : ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ํ• ๋‹น ๊ฐ€๋Šฅ.
    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ์ƒํƒœ๊ฐ€ ๋˜๊ฑฐ๋‚˜, ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๊ธฐํšŒ๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด
    • ์ฒ˜๋ฆฌ์‹œ๊ฐ„ ์˜ˆ์ธก์ด ์–ด๋ ค์›€
  • ๋น„์„ ์  : ํ•œ๋ฒˆ CPU๋ฅผ ํ• ๋‹น ๋ฐ›์œผ๋ฉด ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ or I/O ๋“ฑ์˜ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์‹คํ–‰ ๋ณด์žฅ
    • ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„์ „ํžˆ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” CPU ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
    • ์ฒ˜๋ฆฌ์‹œ๊ฐ„ ์˜ˆ์ธก ์šฉ์ดํ•จ

3. ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

  • ์„ ์  ์Šค์ผ€์ค„๋ง : Interrupt, I/O or Completion, I/O or Event Wait, Exit
  • ๋น„์„ ์  ์Šค์ผ€์ค„๋ง : I/O or Event Wait, Exit

ํ”„๋กœ์„ธ์Šค 5๊ฐ€์ง€ ์ƒํƒœ

  1. ์ƒ์„ฑ(New) : ํ”„๋กœ์„ธ์Šค์˜ ์ฒ˜์Œ ์ƒ์„ฑ ์ƒํƒœ
    • ์ค€๋น„์ƒํƒœ๋กœ ์ „ํ™œํ•  ์ค€๋น„
  2. ์ค€๋น„(Ready) : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ธฐ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ
    • ํ•„์š”ํ•œ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋œ ์ƒํƒœ.
    • CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ธฐ ์œ„ํ•ด Ready Queue ์— ์œ„์น˜ํ•จ
  3. ์‹คํ–‰(Running) : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์— ํ• ๋‹น๋ฐ›์•„์„œ ์‹คํ–‰์ค‘์ธ ์ƒํƒœ
    • ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์—๋Š” ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ์ค€๋น„ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ
  4. ๋Œ€๊ธฐ(Waiting) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ์ด๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ
    • ๋Œ€๊ธฐ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ํ•ด๋‹น ์ด๋ฒคํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ.
  5. ์ข…๋ฃŒ(Terminated) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์„ ๋๋‚ด๊ณ  ์ข…๋ฃŒํ•œ ์ƒํƒœ
    • ํ• ๋‹น๋œ ์ž์›์„ ๋ชจ๋‘ ํšŒ์ˆ˜ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ๊ฑฐ.

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ์ „์ด

โœ”๏ธ ์Šน์ธ(Admitted) : ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜์—ฌ ์Šน์ธ๋จ.
โœ”๏ธ ์Šค์ผ€์ค„๋Ÿฌ ๋””์ŠคํŒจ์น˜(Scheduler Dispatch) : ์ค€๋น„ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์‹คํ–‰์‹œํ‚ด
โœ”๏ธ ์ธํ„ฐ๋ŸฝํŠธ(Interrupt) : ์˜ˆ์™ธ, ์ž…์ถœ๋ ฅ, ์ด๋ฒคํŠธ ๋“ฑ์ด ๋ฐœ์ƒํ•˜์—ฌ ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค€๋น„ ์ƒํƒœ๋กœ ๋ฐ”๊พธ๊ณ , ํ•ด๋‹น ์ž‘์—…์„ ๋จผ์ฒ˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ.
โœ”๏ธ ์ž…์ถœ๋ ฅ ๋˜๋Š” ์ด๋ฒคํŠธ ๋Œ€๊ธฐ(I/O or Event wait) : ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ์ด๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ž…์ถœ๋ ฅ/์ด๋ฒคํŠธ๊ฐ€ ๋ชจ๋‘ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ.
โœ”๏ธ ์ž…์ถœ๋ ฅ ๋˜๋Š” ์ด๋ฒคํŠธ ์™„๋ฃŒ(I/O or Event Completion) : ์ž…์ถœ๋ ฅ/์ด๋ฒคํŠธ๊ฐ€ ๋๋‚œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค€๋น„์ƒํƒœ๋กœ ์ „ํ™˜ํ•˜์—ฌ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์„ ํƒ๋  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ.

์ธํ„ฐ๋ŸฝํŠธ, I/O or wait ์ฐจ์ด

์ธํ„ฐ๋ŸฝํŠธ๋Š” ์šด์˜ ์ฒด์ œ๊ฐ€ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ์ด๋ฉฐ, I/O or wait์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์ธ ํ๋ฆ„ ์ค‘ ํ•„์šฉํ•œ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•จ.

5. CPU ์Šค์ผ€์ค„๋ง ์ข…๋ฅ˜

๋น„์„ ์  ์Šค์ผ€์ค„๋ง

  1. FCFS(First Come First Served)

    • ํ์— ๋„์ฐฉํ•œ ์ˆœ์„œ๋Œ€๋กœ CPU ํ• ๋‹น
    • ์‹คํ–‰ ์‹œ๊ฐ„์ด ์งง์€๊ฒŒ ๋’ค๋กœ ๊ฐ€๋ฉด ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง
  2. SJF(Shortest Job First)

    • ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ์ž‘์—…์„ ๋จผ์ € ์ˆ˜ํ–‰
    • FCFS ๋ณด๋‹ค ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ฐ์†Œ, ์งง์€ ์ž‘์—…์— ์œ ๋ฆฌ
  3. HRN(Hightest Response-ratio Next)

    • ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์ ์œ  ๋ถˆํ‰๋“ฑ์„ ๋ณด์™„ํ•˜๋Š” ๋ฐฉ๋ฒ•(SJF ๋‹จ์  ๋ณด์™„)
    • ์šฐ์„ ์ˆœ์œ„ = (๋Œ€๊ธฐ์‹œ๊ฐ„ + ์‹คํ–‰์‹œ๊ฐ„) / ์‹คํ–‰์‹œ๊ฐ„

์„ ์  ์Šค์ผ€์ค„๋ง

  1. Priority Scheduling

    • ์ •์ /๋™์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ
    • ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆฌ๋Š” Starvation์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ
    • Aging ๋ฐฉ๋ฒ•์œผ๋กœ Starvation ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ
      • Aging : ์•„๋ฌด๋ฆฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋ผ๋„ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ค€๋‹ค.
  2. Round Robin

    • ํ˜„๋Œ€์ ์ธ CPU ์Šค์ผ€์ค„๋ง
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ• ๋‹น ์‹œ๊ฐ„(TIme Quantum)์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.
    • ํ• ๋‹น ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ ๋‹นํ•˜๊ณ  ready quere์˜ ์ œ์ผ ๋’ค์— ๊ฐ€์„œ ๋‹ค์‹œ ์ค„์„ ์„ ๋‹ค
    • CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๋žœ๋คํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„ž์—ฌ ์žˆ์„ ๊ฒฝ์šฐ์— ํšจ์œจ์ 
    • ํ• ๋‹น ์‹œ๊ฐ„(Time Quantum)์ด ํฌ๋ฉด FCFS์™€ ๊ฐ™๊ฒŒ ๋˜๊ณ , ์ž‘์œผ๋ฉด ๋ฌธ๋งฅ ๊ตํ™˜(Context Switching) ์žฆ์•„์ ธ ์˜ค๋ฒ„ํ•ด๋“œ ์ฆ๊ฐ€.
  3. Multilevel-Quete(๋‹ค๋‹จ๊ณ„ ํ)

    • ์ž‘์—…๋“ค์„ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ธฐ๋ฒ•
    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋“ค์ด ์‹คํ–‰ ๋ชปํ•˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ๊ฐ ํ๋งˆ๋‹ค ๋‹ค๋ฅธ Time Quantum์„ ์„ค์ •ํ•ด์ฃผ๋Š” ๋ฐฉ์‹ ์‚ฌ์šฉ
    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ๋Š” ์ž‘์€ TIme Quantum ํ• ๋‹น. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋Š” ํฐ Tiem Quantum ํ• ๋‹น
  4. Multilevel-Feedback-Quete(๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ)

    • ๋‹ค๋‹จ๊ณ„ ํ์—์„œ ์ž์‹ ์˜ Tune Quantum์„ ๋‹ค ์ฑ„์šด ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ€๊ณ  ์ž์‹ ์˜ Time Qyantum์„ ๋‹ค ์ฑ„์šฐ์ง€ ๋ชปํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์›๋ž˜ ํ ๊ทธ๋Œ€๋กœ
    • ์งง์€ ์ž‘์—…์— ์œ ๋ฆฌ, ์ž…์ถœ๋ ฅ ์œ„์ฃผ ์ž‘์—…์— ์šฐ์„ ๊ถŒ์„ ์คŒ

5. CPU ์Šค์ผ€์ค„๋ง ์ฒ™๋„

  1. Response Time
    • ์ž‘์—…์ด ์ฒ˜์Œ ์‹คํ–‰๋˜๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„
  2. Turnaround Time
    • ์‹คํ–‰ ์‹œ๊ฐ„๊ณผ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ํ•ฉํ•œ ์‹œ๊ฐ„์œผ๋กœ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

8. ๋ฐ๋“œ๋ฝ(DeadLock, ๊ต์ฐฉ ์ƒํƒœ)

๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ์ž์›์„ ์–ป์ง€ ๋ชปํ•ด์„œ ๋‹ค์Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ
๋ฌดํ•œํžˆ ๋‹ค์Œ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋˜๋Š” ์ƒํƒœ.
์‹œ์Šคํ…œ์ ์œผ๋กœ ํ•œ์ •๋œ ์ž์›์„ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒ.
ex) ์™ธ๋‚˜๋ฌด ๋‹ค๋ฆฌ์—์„œ ์„œ๋กœ๊ฐ€ ๋น„์ผœ์ฃผ๊ธธ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ

โ—๋ฐ๋“œ๋ฝ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ

ํ”„๋กœ์„ธ์Šค 1๊ณผ 2๊ฐ€ ์ž์› 1, 2๋ฅผ ๋ชจ๋‘ ์–ป์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

t1 : ํ”„๋กœ์„ธ์Šค 1์ด ์ž์› 1์„ ์–ป์Œ / ํ”„๋กœ์„ธ์Šค 2๊ฐ€ ์ž์› 2๋ฅผ ์–ป์Œ
t2 : ํ”„๋กœ์„ธ์Šค 1์€ ์ž์› 2๋ฅผ ๊ธฐ๋‹ค๋ฆผ / ํ”„๋กœ์„ธ์Šค 2๋Š” ์ž์› 1์„ ๊ธฐ๋‹ค๋ฆผ

โžก๏ธ ํ˜„์žฌ ์„œ๋กœ ์›ํ•˜๋Š” ์ž์›์ด ์ƒ๋Œ€๋ฐฉ์— ํ• ๋‹น๋˜์–ด ์žˆ์–ด์„œ ๋‘ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌดํ•œ์ • wait ์ƒํƒœ์— ๋น ์ง.
์ด๊ฒƒ์ด ๋ฐ”๋กœ DeadLock

โœ”๏ธ ์ฃผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ํ•œ์ •๋œ ์ž์›์„ ์–ป๊ธฐ ์œ„ํ•ด ์„œ๋กœ ๊ฒฝ์Ÿํ•˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ
ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”์ฒญํ–ˆ์„ ๋•Œ, ๋™์‹œ์— ๊ทธ ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ. ์ด๋•Œ ํ”„๋กœ์„ธ์Šค๋Š” ๋Œ€๊ธฐ ์ƒํƒœ์— ๋“œ๋ ๊ฐ
๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ„ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์‹คํ–‰ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋ฅผ ๋•Œ '๊ต์ฐฉ ์ƒํƒœ' ๋ฐœ์ƒ

๋ฐ๋“œ๋ฝ(DeadLock) ๋ฐœ์ƒ ์กฐ๊ฑด
"4๊ฐ€์ง€๋ชจ๋‘ ์„ฑ๋ฆฝ๋˜์•ผ ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ"

  1. ์ƒํ˜ธ ๋ฐฐ์ œ(Mutual exclusion)

    • ์ž์›์€ ํ•œ ๋ฒˆ์— ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  2. ์ ์œ  ๋Œ€๊ธฐ(Hold and wait)

    • ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์ž์›์„ ์ ์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜์–ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์ถ”๊ฐ€๋กœ ์ ์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•จ
  3. ๋น„์„ ์ (No Preemption)

    • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์€ ์‚ฌ์šฉ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์—†์Œ
  4. ์ˆœํ™˜๋Œ€๊ธฐ(Circular wait)

    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ˆœํ™˜์ ์œผ๋กœ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์ž์›์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•จ
    • ์˜ˆ๋กœ, ํ”„๋กœ์„ธ์Šค A๋Š” ํ”„๋กœ์„ธ์Šค B๊ฐ€ ๊ฐ€์ง„ ์ž์›์„ ์š”์ฒญํ•˜๊ณ , B๋Š” C๊ฐ€ ๊ฐ€์ง„ ์ง€์›์„ ์š”์ฒญํ•˜๊ณ , C๋Š” A๊ฐ€ ๊ฐ€์ง„ ์ž์›์„ ์š”์ฒญํ•˜๋Š” ํ˜•ํƒœ.

๋ฐ๋“œ๋ฝ ์ฒ˜๋ฆฌ

"๊ต์ฐฉ ์ƒํƒœ๋ฅผ ์˜ˆ๋ฐฉ ๋ฐ ํšŒํ”ผ"

  1. ์˜ˆ๋ฐฉ : ๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด์„œ ํ•ด๊ฒฐํ•œ๋‹ค (์ž์›๋‚ญ๋น„ ์‹ฌํ•จ)

    • ์ƒํ˜ธ๋ฐฐ์ œ ๋ถ€์ • : ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์› ์‚ฌ์šฉ
    • ์ ์œ ๋Œ€๊ธฐ ๋ถ€์ • : ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์ „ ๋ชจ๋“  ์ž์›์„ ํ• ๋‹น
    • ๋น„์„ ์  ๋ถ€์ • : ์ ์œ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ์ž์›์„ ์š”๊ตฌํ•  ๋•Œ ๊ฐ€์ง„ ์ž์› ๋ฐ˜๋‚ฉ
    • ์ˆœํ™˜๋Œ€๊ธฐ ๋ถ€์ • : ์ž์›์— ๊ณ ์œ ๋ฒˆํ˜ธ ํ• ๋‹น ํ›„ ์ˆœ์„œ๋Œ€๋กœ ์ž์› ์š”๊ตฌ
  2. ํšŒํ”ผ : ๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ ์‹œ ํ”ผํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ•

    ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • ์€ํ–‰์—์„œ ๋ชจ๋“  ๊ณ ๊ฐ์˜ ์š”๊ตฌ๊ฐ€ ์ถฉ์กฑ๋˜๋„๋ก ํ˜„๊ธˆ์„ ํ• ๋‹นํ•˜๋Š”๋ฐ์„œ ์œ ๋ž˜ํ•จ
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”๊ตฌํ•  ๋•Œ, ์‹œ์Šคํ…œ์€ ์ž์›์„ ํ• ๋‹นํ•œ ํ›„์—๋„ ์•ˆ์ • ์ƒํƒœ๋กœ ๋‚จ์•„์žˆ๊ฒŒ ๋˜๋Š”์ง€ ์‚ฌ์ „์— ๊ฒ€์‚ฌํ•˜์—ฌ ๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ
    • ์•ˆ์ • ์ƒํƒœ๋ฉด ์ž์› ํ• ๋‹น, ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ž์› ํ•ด์ง€๊นŒ์ง€ ๋Œ€๊ธฐ

"๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํƒ์ง€ ๋ฐ ํšŒ๋ณตํ”ผ"

๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋˜๋„๋ก ํ—ˆ์šฉํ•œ ๋‹ค์Œ ํšŒ๋ณต์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

  1. ํƒ์ง€ : ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํƒ์ง€ํ•จ
    • ์ž์› ์š”์ฒญ ์‹œ, ํƒ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰์‹œ์ผœ ๊ทธ์— ๋Œ€ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒํ•จ
  2. ํšŒ๋ณต
    • ๊ต์ฐฉ ์ƒํƒœ ์ผ์œผํ‚จ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๊ฑฐ๋‚˜, ํ• ๋‹น๋œ ์ž์›์„ ํ•ด์ œ์‹œ์ผœ ํšŒ๋ณต์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ๋ฐฉ๋ฒ•

  • ๊ต์ฐฉ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋‘ ์ค‘์ง€
  • ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ํ•˜๋‚˜์”ฉ ํ”„๋กœ์„ธ์Šค ์ค‘์ง€

์ž์› ์„ ์  ๋ฐฉ๋ฒ•

  • ๊ต์ฐฉ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์„ ์ ํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹น (ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค ์ผ์‹œ์ •์ง€ ์‹œํ‚ด)
  • ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋‚˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜ ์ ์€ ํ”„๋กœ์„ธ์Šค ์œ„์ฃผ๋กœ ํ”„๋กœ์„ธ์Šค ์ž์› ์„ ์ 

0๊ฐœ์˜ ๋Œ“๊ธ€