Bibi's DevLog ๐Ÿค“๐ŸŽ

[TIL - Codesquad] ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ - ์ปดํ“จํ„ฐ์˜ ๊ตฌ์กฐ, ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ๊ตฌ์กฐ, ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง ๋ณธ๋ฌธ

TIL

[TIL - Codesquad] ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ - ์ปดํ“จํ„ฐ์˜ ๊ตฌ์กฐ, ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ๊ตฌ์กฐ, ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง

๋น„๋น„ bibi 2021. 1. 22. 00:00

[210121]

ํ˜ธ๋ˆ…์Šค์˜ ๋ฏธ์…˜ ์„ค๋ช…

์˜ค๋Š˜ ๋ฏธ์…˜์€ ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ด ๋ณด๊ณ , ์‚ฌ์šฉํ•ด ๋ณด๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.
๋ฏธ์…˜ ์ˆ˜ํ–‰์— ๋„ˆ๋ฌด ์ง‘์ฐฉํ•˜์ง€ ๋ง๊ณ  ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•˜์ž.

ํ•™์Šต ํ‚ค์›Œ๋“œ

  • ํ”„๋กœ์„ธ์Šค
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
    • ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (์Šคํƒ, ํž™, ๋ฐ์ดํ„ฐ, ํ…์ŠคํŠธ)
  • ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ๊ด€๊ณ„ ๋ฐ ์ฐจ์ด
  • ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง
    • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ
  • ์Šค๋ ˆ๋“œ(์“ฐ๋ ˆ๋“œ)
  • ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง / ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ
    • ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • ์šด์˜์ฒด์ œ์˜ ๋™์ž‘์›๋ฆฌ? (ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ ์ค‘์‹ฌ)

TIL

ํ”„๋กœ์„ธ์Šค Process

์ปดํ“จํ„ฐ์˜ ๊ตฌ์กฐ ๋ฐ ํ”„๋กœ์„ธ์Šค - ์ƒํ™œ์ฝ”๋”ฉ

  • ์ปดํ“จํ„ฐ์˜ ๊ตฌ์กฐ

    • ํ•˜๋“œ์›จ์–ด

      • Storage ์Šคํ† ๋ฆฌ์ง€, ์ €์žฅ์žฅ์น˜ - SSD, HDD
      • Memory ๋ฉ”๋ชจ๋ฆฌ - RAM ๋žจ
      • Processor ํ”„๋กœ์„ธ์„œ - CPU
    • Storage์™€ Memory๋Š” ๋‘˜ ๋‹ค ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ๊ณตํ†ต์ ์ด ์žˆ๋‹ค.

      • ๊ทธ๋ ‡๋‹ค๋ฉด ๋‘˜์˜ ์ฐจ์ด๋Š”?

      • Storage
        : ๊ฐ€๊ฒฉ์ด ์‹ธ๋‹ค. ์ €์žฅ์šฉ๋Ÿ‰์ด ํฌ๋‹ค.
        ์ฒ˜๋ฆฌ(์ฝ๊ธฐ/์“ฐ๊ธฐ) ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
        ์ „์›์ด ๊บผ์ ธ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค.

      • Memory

        : ๊ฐ€๊ฒฉ์ด ๋น„์‹ธ๋‹ค. ์ €์žฅ์šฉ๋Ÿ‰์ด ์ž‘๋‹ค.
        ์ฒ˜๋ฆฌ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
        ์ „์›์ด ๊บผ์ง€๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค.

    • Storage๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š”,
      Storage์˜ ์ฒ˜๋ฆฌ์†๋„๋กœ๋Š” CPU์˜ ์ฒ˜๋ฆฌ์†๋„(๋น ๋ฆ„)๋ฅผ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ.

    • ๊ทธ๋ž˜์„œ..
      ํ”„๋กœ๊ทธ๋žจ์„ '์ €์žฅ'ํ•˜๋Š” ๊ณณ์€ Storage๋กœ ํ•˜๊ณ ,
      ํ”„๋กœ๊ทธ๋žจ์„ '์‹คํ–‰'์‹œ์—๋Š” Storage์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ์–ด Memory์— ์ ์žฌํ•œ๋‹ค.
      ( = ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค์ง€ ์•Š๋Š”๋‹ค)
      CPU๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ์–ด์„œ ์ฝ”๋“œ๋Œ€๋กœ ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • ๊ทธ๋ž˜์„œ ํ”„๋กœ์„ธ์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

    • ํ”„๋กœ๊ทธ๋žจ program
      : ํŒŒ์ผ์˜ ํ˜•ํƒœ๋กœ Storage์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ช…๋ น์–ด์˜ ์ง‘ํ•ฉ(์ฝ”๋“œ).
      • ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด์—๋Š” ์ƒ๋ช…์ด ์—†๋‹ค.
    • ํ”„๋กœ์„ธ์Šค process
      : ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ ์ƒํƒœ๋กœ CPU์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๋Š” '์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ program in execution'
    • ํ”„๋กœ์„ธ์„œ processor
      : ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ, ์ฆ‰ CPU์˜ ๋‹ค๋ฅธ ๋ง.

์šด์˜์ฒด์ œ - ํ”„๋กœ์„ธ์Šค

..

  • ์–ด๋–ป๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    • ํ•˜๋‚˜์˜ CPU(ํ”„๋กœ์„ธ์„œ)๋Š” ๋งค ์ˆœ๊ฐ„ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค.
      ๊ทธ๋Ÿฐ๋ฐ ์–ด๋–ป๊ฒŒ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ธ๊ฐ€?
      • ์šด์˜์ฒด์ œ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฅธ ์†๋„๋กœ CPU๊ฐ€ ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ต์ฒดํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
        ์ธ๊ฐ„์ด '๋™์‹œ์— ์‹คํ–‰๋œ๋‹ค'๊ณ  ๋Š๋‚„ ์ •๋„๋กœ ๋น ๋ฅด๊ฒŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ต์ฒด๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค๊ณ  ''๋Š๋ผ๋Š”'' ๊ฒƒ์ด๋‹ค.
      • ์ฆ‰ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์šด์˜์ฒด์ œ์˜ ์—ญํ• ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ๊ตฌ์„ฑ

  • PCB (Process Control Block, ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก)

    : ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ.
    ์šด์˜์ฒด์ œ๊ฐ€ ์‹œ์Šคํ…œ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด, ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์œ ์ง€ํ•˜๋Š” ์ •๋ณด๋“ค์„ ๋‹ด๋Š” ์ปค๋„ ๋‚ด์˜ ์ž๋ฃŒ๊ตฌ์กฐ.

    ํฌ๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

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

ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„)

  • PCB์˜ ๊ตฌ์„ฑ์š”์†Œ ์ค‘ ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์ด๋‹ค.

  • ํฌ์ธํ„ฐ
    : ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ์™€ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
    ์—ฌ๊ธฐ์„œ 'ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ์™€ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ' ์˜ ๊ตฌ์„ฑ์„ ์•Œ์•„๋ณธ๋‹ค.

  • *ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ *
    : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ์˜ ๊ตฌ์กฐ.

    ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’ <- Text - Data - BSS - Heap - (๋นˆ ๊ณต๊ฐ„ unused memory) - Stack -> ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’

    • Text ์˜์—ญ
      : ํ”„๋กœ์„ธ์„œ๊ฐ€ ์‹คํ–‰ํ•  ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ, ํ•จ์ˆ˜ ์ฝ”๋“œ, ์ œ์–ด๋ฌธ, ์ƒ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ์˜์—ญ.
    • Data (GVAR) ์˜์—ญ
      : ์ดˆ๊ธฐํ™”๋œ ์ „์—ญ๋ณ€์ˆ˜, static๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ์˜์—ญ. ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•จ.
    • BSS ์˜์—ญ
      : ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ „์—ญ๋ณ€์ˆ˜, static๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ์˜์—ญ. ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•จ.
    • Heap (ํž™)์˜์—ญ
      : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘, ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์ž์œ ๋กœ์šด ์˜์—ญ.
    • unused memory (๋นˆ ๊ณต๊ฐ„)
      • Stack์˜์—ญ๊ณผ Heap์˜์—ญ ์‚ฌ์ด์— ์œ„์น˜ํ•˜๋Š” ๋นˆ ๊ณต๊ฐ„.
      • ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ• ์ง€ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—,
        ์Šคํƒ์˜์—ญ์€ ๋Ÿฐํƒ€์ž„์— ์ง€์—ญ๋ณ€์ˆ˜ ์„ ์–ธ ์ˆœ์„œ์— ๋”ฐ๋ผ ์œ„์ชฝ์œผ๋กœ ์ฃผ์†Œ๊ฐ’์„ ๋งค๊ธด๋‹ค.
        ํž™ ์˜์—ญ์€ ๋™์  ํ• ๋‹น๋  ๋•Œ ์•„๋ž˜์ชฝ์œผ๋กœ ์ฃผ์†Œ๊ฐ’์„ ๋งค๊ธด๋‹ค.
    • Stack (์Šคํƒ)์˜์—ญ
      : ๋ฉ”์†Œ๋“œ๋‚˜ ํ”„๋กœ์‹œ์ €๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋ฆฌํ„ดํ•  ๋•Œ, ๋ณต๊ท€ ์ฃผ์†Œ๋‚˜ ์ง€์—ญ๋ณ€์ˆ˜ ๊ฐ™์€ ์ผ์‹œ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ.

ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง

  • ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ
    • ์šด์˜์ฒด์ œ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค์„ ์‹คํ–‰, ๊ต์ฒด, ์žฌ์‹œ์ž‘ ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌํ•œ๋‹ค.
    • ์ด๋ฅผ ์œ„ํ•ด ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์‹คํ–‰ / ์ค€๋น„ / ๋Œ€๊ธฐ ๋ผ๋Š” 3๊ฐ€์ง€ ์ƒํƒœ
      (ํฌ๊ฒŒ๋Š” ์ƒ์„ฑ / ์ค€๋น„ / ์‹คํ–‰ / ๋Œ€๊ธฐ / ์ข…๋ฃŒ ๋ผ๋Š” 5๊ฐ€์ง€ ์ƒํƒœ)๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ ,
      ์ƒํƒœ์ „์ด(state transition)๋ฅผ ํ†ตํ•ด ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค์˜ ์ƒํ…Œ
    • ์ƒ์„ฑ new
      : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ ์ค‘์ธ ์ผ์‹œ์  ์ƒํƒœ.
      • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ทธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•œ ๊ฐ์ข… ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์ง€๋งŒ, ์•„์ง ๋ฉ”๋ชจ๋ฆฌ ํš๋“์„ ์Šน์ธ๋ฐ›์ง€ ๋ชปํ•œ ์ƒํƒœ.
      • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ์ค€๋น„๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๋จ.
    • ์ค€๋น„ ready
      : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹น์žฅ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ CPU๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•œ ์ƒํƒœ.
      • ์ค€๋น„๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰์ƒํƒœ๊ฐ€ ๋จ.
    • ์‹คํ–‰ running
      : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ , ๋ช…๋ น์„ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ.
      • CPU(ํ”„๋กœ์„ธ์„œ)๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์ง€๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด CPU๋ฅผ ํ• ๋‹น๋ฐ›์Œ.
        ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰์ƒํƒœ์—์„œ CPU๋ฅผ ์ด์šฉํ•ด ์ž‘์—…ํ•œ ๋‹ค์Œ CPU๋ฅผ ๋ฐ˜๋‚ฉํ•จ.
        ์ž‘์—…์ด ๋๋‚˜์ง€ ์•Š์•˜์œผ๋ฉด ๋‹ค์‹œ ์ค€๋น„์ƒํƒœ๊ฐ€ ๋จ.
    • ๋Œ€๊ธฐ / ๋ธ”๋ก / ๋ด‰์‡„ wait / blocked / sleep
      : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›๋”๋ผ๋„ ๋‹น์žฅ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ.
      ์ž…์ถœ๋ ฅ ๋“ฑ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ํ•˜๋Š” ์ƒํƒœ์— ํ•ด๋‹นํ•œ๋‹ค.
      • ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋ฉด, ์™„๋ฃŒ๋  ๋–„๊นŒ์ง€ ๋Œ€๊ธฐ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
      • ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋˜๋ฉด ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ€๊ธฐ์ƒํƒœ์—์„œ ์ค€๋น„์ƒํƒœ๋กœ ์ „์ด์‹œํ‚จ๋‹ค.
    • ์ข…๋ฃŒ terminated
      : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ ์ค‘์ธ ์ผ์‹œ์  ์ƒํƒœ.
      • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์œผ๋‚˜, ์šด์˜์ฒด์ œ๊ฐ€ ๊ทธ ํ”„๋กœ์„ธ์Šค์™€ ๊ด€๋ จ๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์™„์ „ํžˆ ์ •๋ฆฌํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ.
  • ์ธํ„ฐ๋ŸฝํŒ… ํด๋ก / ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ
    • ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ž๋ฐœ์ ์œผ๋กœ ๋ฐ˜๋‚ฉํ•˜์ง€ ์•Š๊ณ  ๋…์ ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ ์ธํ„ฐ๋ŸฝํŒ… ํด๋ก์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
      ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ํŠน์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋™์•ˆ๋งŒ ์‹คํ–‰๋˜๋„๋ก ํ•œ๋‹ค.
    • ์ธํ„ฐ๋ŸฝํŒ… ํด๋ก์ด ๋ฐœ์ƒํ•˜๋ฉด, ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋Š” CPU์ œ์–ด๊ถŒ์„ ๊ฐ•์ œ๋กœ ์šด์˜์ฒด์ œ์—๊ฒŒ ๋นผ์•—๊ธฐ๊ณ  ์ค€๋น„์ƒํƒœ๋กœ ์ƒํƒœ์ „์ด ๋œ๋‹ค.
    • ์šด์˜์ฒด์ œ๋Š” ์ˆ˜ํ–‰ ์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์„ ์ €์žฅํ•˜๊ณ , ์ค€๋น„์ƒํƒœ์— ์žˆ๋Š” ๋‹ค์Œ ์ˆœ์„œ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค ๋ฌธ๋งฅ context
    : ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„(์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ ์ƒํƒœ), ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’, ์ปค๋„ ์ƒํƒœ(์‹œ์Šคํ…œ ์ฝœ ๋“ฑ) ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค.
    • ์ด์ „์— ์‹คํ–‰ํ•œ ์  ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•  ๋•Œ, ์–ด๋Š ๋ถ€๋ถ„๊นŒ์ง€ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€ ๊ทธ ์ƒํƒœ๋ฅผ ์žฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์ด ๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด ํ”„๋กœ์„ธ์Šค ๋ฌธ๋งฅ์ด๋‹ค.
      • ํ•˜๋“œ์›จ์–ด ๋ฌธ๋งฅ
        : CPU์˜ ์ˆ˜ํ–‰ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ„. ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ’, ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ๊ฐ’ ๋“ค์„ ์˜๋ฏธํ•จ.
      • ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„
        : ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€์ง„ ๋…์ž์ ์ธ ์ฃผ์†Œ ๊ณต๊ฐ„(์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ)์„ ์˜๋ฏธํ•จ.
      • ์ปค๋„ ๋ฌธ๋งฅ
        : ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์œ ์ง€ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ (PCB, ์ปค๋„์Šคํƒ)

์Šค๋ ˆ๋“œ Thread

์Šค๋ ˆ๋“œ๋ž€?

  • ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰๋‹จ์œ„.
    ๊ฒฝ๋Ÿ‰ ํ”„๋กœ์„ธ์Šค (LWP - Light Weight Process) ๋ผ๊ณ ๋„ ํ•œ๋‹ค.
    (ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰ ์ œ์–ด๋งŒ ๋ถ„๋ฆฌํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‹จ์œ„)
  • ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ์•ˆ์— ํฌํ•จ๋œ ๊ฐœ๋…์ด๋‹ค.
  • (์ž๋ฐ”) ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ์ ์–ด๋„ ํ•˜๋‚˜์˜ JVM์ด ์‹œ์ž‘๋œ๋‹ค.
    JVM์ด ์‹œ์ž‘๋œ๋‹ค = ์ž๋ฐ” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘ํ•œ๋‹ค.
    main()๋ฉ”์†Œ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค = ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.
  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค.
    ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋“  ์Šค๋ ˆ๋“œ๋Š” ํ•˜๋‚˜ ์ด์ƒ ์ˆ˜ํ–‰๋œ๋‹ค.
  • ์“ฐ๋ ˆ๋“œ๋Š” ๋ฉ”์ธ ๋งค์„œ๋“œ์—์„œ ์ƒ์„ฑ, ์‹œ์ž‘๋œ๋‹ค.

์Šค๋ ˆ๋“œ๋Š” ์™œ ๋งŒ๋“ค์–ด์กŒ๋Š”๊ฐ€?

  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด.
    • ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋Š” (์ž๋ฐ” ๊ธฐ์ค€) ์•ฝ 32-64MB์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์œ ํ•œ๋‹ค.
      ๋ฐ˜๋ฉด ์Šค๋ ˆ๋“œ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” 1MB์ด๋‚ด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์œ ํ•œ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ Text/Data/Stack/Heap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹น๋ฐ›๋Š” ๋ฐ˜๋ฉด,
      ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ stack์˜์—ญ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ๊ณต์œ ํ•œ๋‹ค. - ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ์ •๋ณด๊ณต์œ ๊ฐ€ ์‰ฝ๋‹ค.
  • ์ž‘์—…์„ ๋” ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด.
    • ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ์‹คํ–‰ํ•  ๋•Œ ๋ณด๋‹ค ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋กœ ์‹คํ–‰ํ•  ๋•Œ ๋” ๋นจ๋ฆฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

1/21 ์˜ค๋Š˜์˜ ์˜๋‹จ์–ด

synchronized (a) ๋™๊ธฐํ™”๋œ
synchronize (v) ๋™์‹œ์— ํ•˜๋‹ค

modify (v) ์ˆ˜์ •ํ•˜๋‹ค/์กฐ์ •ํ•˜๋‹ค


๋‚ด์ผ ํ•  ์ผ

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

๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•˜๊ธฐ.