Skip to content

Latest commit

 

History

History
92 lines (53 loc) Β· 3.38 KB

File metadata and controls

92 lines (53 loc) Β· 3.38 KB

ν”„λ‘œμ„ΈμŠ€ & μŠ€λ ˆλ“œ


ν”„λ‘œμ„ΈμŠ€ : λ©”λͺ¨λ¦¬μƒμ—μ„œ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨

μŠ€λ ˆλ“œ : ν”„λ‘œμ„ΈμŠ€ μ•ˆμ—μ„œ μ‹€ν–‰λ˜λŠ” μ—¬λŸ¬ 흐름 λ‹¨μœ„


기본적으둜 ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ μ΅œμ†Œ 1개의 μŠ€λ ˆλ“œ(메인 μŠ€λ ˆλ“œ)λ₯Ό μ†Œμœ ν•œλ‹€.


img

ν”„λ‘œμ„ΈμŠ€λŠ” 각각 λ³„λ„μ˜ μ£Όμ†Œ 곡간을 ν• λ‹Ήλ°›λŠ”λ‹€. (독립적)

  • Code : μ½”λ“œ 자체λ₯Ό κ΅¬μ„±ν•˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­ (ν”„λ‘œκ·Έλž¨ λͺ…λ Ή)

  • Data : μ „μ—­ λ³€μˆ˜, 정적 λ³€μˆ˜, λ°°μ—΄ λ“±

    • μ΄ˆκΈ°ν™”λœ λ°μ΄ν„°λŠ” Data μ˜μ—­μ— μ €μž₯
    • μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ λ°μ΄ν„°λŠ” BSS μ˜μ—­μ— μ €μž₯
  • Heap : 동적 ν• λ‹Ή μ‹œ μ‚¬μš© (new(), malloc() λ“±)

  • Stack : μ§€μ—­ λ³€μˆ˜, 맀개 λ³€μˆ˜, 리턴 κ°’ (μž„μ‹œ λ©”λͺ¨λ¦¬ μ˜μ—­)


μŠ€λ ˆλ“œλŠ” Stack만 λ”°λ‘œ ν• λ‹Ήλ°›κ³  λ‚˜λ¨Έμ§€ μ˜μ—­μ€ κ³΅μœ ν•œλ‹€.

  • μŠ€λ ˆλ“œλŠ” 독립적인 λ™μž‘μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ 쑴재 = λ…λ¦½μ μœΌλ‘œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  수 μžˆμ–΄μ•Ό 함
  • ν•¨μˆ˜μ˜ 맀개 λ³€μˆ˜, μ§€μ—­ λ³€μˆ˜ 등을 μ €μž₯ν•˜λŠ” Stack μ˜μ—­μ€ λ…λ¦½μ μœΌλ‘œ ν• λ‹Ήλ°›μ•„μ•Ό 함

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 생성될 λ•Œ, 기본적으둜 ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œκ°€ 같이 μƒμ„±λœλ‹€.


ν”„λ‘œμ„ΈμŠ€λŠ” μžμ‹ λ§Œμ˜ 고유 곡간 및 μžμ›μ„ ν• λ‹Ήλ°›μ•„ μ‚¬μš©ν•˜λŠ” 데 λ°˜ν•΄,

μŠ€λ ˆλ“œλŠ” λ‹€λ₯Έ μŠ€λ ˆλ“œμ™€ 곡간 및 μžμ›μ„ κ³΅μœ ν•˜λ©΄μ„œ μ‚¬μš©ν•˜λŠ” 차이가 μ‘΄μž¬ν•œλ‹€.


λ©€ν‹°ν”„λ‘œμ„ΈμŠ€

ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ‘œ κ΅¬μ„±ν•˜μ—¬ 각 ν”„λ‘œμ„ΈμŠ€κ°€ λ³‘λ ¬μ μœΌλ‘œ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λ„λ‘ ν•˜λŠ” 것


μž₯점 : μ•ˆμ „μ„± (λ©”λͺ¨λ¦¬ μΉ¨λ²” 문제λ₯Ό OS μ°¨μ›μ—μ„œ ν•΄κ²°)

단점 : 각각 λ…λ¦½λœ λ©”λͺ¨λ¦¬λ₯Ό κ°–κ³  μžˆμ–΄ μž‘μ—…λŸ‰μ΄ λ§Žμ„μˆ˜λ‘ μ˜€λ²„ν—€λ“œ λ°œμƒ, Context Switching으둜 μΈν•œ μ„±λŠ₯ μ €ν•˜


Context Switching μ΄λž€?

ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ 정보λ₯Ό μ €μž₯ν•˜κ³  λ³΅μ›ν•˜λŠ” 일련의 κ³Όμ •

  • λ™μž‘ 쀑인 ν”„λ‘œμ„ΈμŠ€κ°€ λŒ€κΈ°ν•˜λ©΄μ„œ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€ μƒνƒœλ₯Ό 보관
  • λŒ€κΈ°ν•˜κ³  있던 λ‹€μŒ 순번의 ν”„λ‘œμ„ΈμŠ€κ°€ λ™μž‘ν•˜λ©΄μ„œ 이전에 λ³΄κ΄€ν–ˆλ˜ ν”„λ‘œμ„ΈμŠ€ μƒνƒœλ₯Ό 볡ꡬ

문제점: ν”„λ‘œμ„ΈμŠ€λŠ” λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν• λ‹Ήλ°›μœΌλ―€λ‘œ, μΊμ‹œ λ©”λͺ¨λ¦¬ μ΄ˆκΈ°ν™”μ™€ 같은 무거운 μž‘μ—…μ΄ μ§„ν–‰λ˜λ©΄ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•  수 있음


λ©€ν‹°μŠ€λ ˆλ“œ

ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œλ‘œ κ΅¬μ„±ν•˜μ—¬ 각 μŠ€λ ˆλ“œκ°€ ν•˜λ‚˜μ˜ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λ„λ‘ ν•˜λŠ” 것


μŠ€λ ˆλ“œλ“€μ΄ 곡유 λ©”λͺ¨λ¦¬λ₯Ό 톡해 λ‹€μˆ˜μ˜ μž‘μ—…μ„ λ™μ‹œμ— μ²˜λ¦¬ν•˜λ„λ‘ ν•΄ μ€€λ‹€.


μž₯점 : 독립적인 ν”„λ‘œμ„ΈμŠ€μ— λΉ„ν•΄ 곡유 λ©”λͺ¨λ¦¬λ§ŒνΌμ˜ μ‹œκ°„κ³Ό μžμ› 손싀 κ°μ†Œ, μ „μ—­ λ³€μˆ˜μ™€ 정적 λ³€μˆ˜ 곡유 κ°€λŠ₯

단점 : μ•ˆμ „μ„± (곡유 λ©”λͺ¨λ¦¬λ₯Ό κ°–κΈ° λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œκ°€ 데이터 곡간을 λ§κ°€λœ¨λ¦¬λ©΄, λͺ¨λ“  μŠ€λ ˆλ“œ μž‘λ™ 뢈λŠ₯)


λ©€ν‹°μŠ€λ ˆλ“œμ˜ μ•ˆμ „μ„±μ— λŒ€ν•œ 단점은 Critical Section 기법을 톡해 λŒ€λΉ„ν•œλ‹€.

ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œκ°€ 곡유 데이터값을 λ³€κ²½ν•˜λŠ” μ‹œμ μ— λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ κ·Έ 값을 읽으렀 ν•  λ•Œ λ°œμƒν•˜λŠ” 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 동기화 κ³Όμ •

μƒν˜Έ 배제, μ§„ν–‰, ν•œμ •λœ λŒ€κΈ°λ₯Ό μΆ©μ‘±ν•΄μ•Ό 함