Skip to content

Latest commit

Β 

History

History
90 lines (54 loc) Β· 3.5 KB

File metadata and controls

90 lines (54 loc) Β· 3.5 KB

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


ν”„λ‘œμ„ΈμŠ€ : ν”„λ‘œκ·Έλž¨μ„ λ©”λͺ¨λ¦¬ μƒμ—μ„œ 싀행쀑인 μž‘μ—…

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


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


img

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

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

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

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

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


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

  • Stack μ˜μ—­λ§Œ λ”°λ‘œ ν• λ‹Ή λ°›λŠ” 이유
    • μ“°λ ˆλ“œλŠ” 독립적인 λ™μž‘μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ 쑴재 ν•œλ‹€
    • 즉 λ…λ¦½μ μœΌλ‘œ ν•¨μˆ˜λ₯Ό 호좜 ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€
    • λ•Œλ¬Έμ— ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜, μ§€μ—­λ³€μˆ˜λ“±μ„ μ €μž₯ν•˜λŠ” μŠ€νƒ λ©”λͺ¨λ¦¬ μ˜μ—­μ€ λ…λ¦½μ μœΌλ‘œ ν• λ‹Ή λ°›μ•„μ•Ό ν•œλ‹€

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


ν”„λ‘œμ„ΈμŠ€λŠ” μžμ‹ λ§Œμ˜ 고유 곡간과 μžμ›μ„ ν• λ‹Ήλ°›μ•„ μ‚¬μš©ν•˜λŠ”λ° λ°˜ν•΄, μŠ€λ ˆλ“œλŠ” λ‹€λ₯Έ μŠ€λ ˆλ“œμ™€ 곡간, μžμ›μ„ κ³΅μœ ν•˜λ©΄μ„œ μ‚¬μš©ν•˜λŠ” 차이가 μ‘΄μž¬ν•¨



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

ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ μ—¬λŸ¬κ°œμ˜ ν”„λ‘œμ„ΈμŠ€λ‘œ κ΅¬μ„±ν•˜μ—¬ 각 ν”„λ‘œμ„ΈμŠ€κ°€ λ³‘λ ¬μ μœΌλ‘œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것

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

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


Context Switchingμ΄λž€?

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

즉, λ™μž‘ 쀑인 ν”„λ‘œμ„ΈμŠ€κ°€ λŒ€κΈ°ν•˜λ©΄μ„œ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλ₯Ό λ³΄κ΄€ν•˜κ³ , λŒ€κΈ°ν•˜κ³  있던 λ‹€μŒ 순번의 ν”„λ‘œμ„ΈμŠ€κ°€ λ™μž‘ν•˜λ©΄μ„œ 이전에 λ³΄κ΄€ν–ˆλ˜ ν”„λ‘œμ„ΈμŠ€ μƒνƒœλ₯Ό λ³΅κ΅¬ν•˜λŠ” 과정을 말함

β†’ ν”„λ‘œμ„ΈμŠ€λŠ” 각 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν• λ‹Ήλ°›μ•„ μ‚¬μš©λ˜λ―€λ‘œ, μΊμ‹œ λ©”λͺ¨λ¦¬ μ΄ˆκΈ°ν™”μ™€ 같은 무거운 μž‘μ—…μ΄ μ§„ν–‰λ˜μ—ˆμ„ λ•Œ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•  λ¬Έμ œκ°€ μ‘΄μž¬ν•¨



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

ν•˜λ‚˜μ˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ μ—¬λŸ¬ μŠ€λ ˆλ“œλ₯Ό ꡬ성해 각 μŠ€λ ˆλ“œκ°€ ν•˜λ‚˜μ˜ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 것

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


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

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

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

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

    μƒν˜Έ 배제, 진행, ν•œμ •λœ λŒ€κΈ°λ₯Ό 좩쑱해야함