Skip to content

Latest commit

Β 

History

History
89 lines (63 loc) Β· 9.14 KB

File metadata and controls

89 lines (63 loc) Β· 9.14 KB
  • ν•˜λ“œμ›¨μ–΄μ— μΈν„°λŸ½νŠΈ κ°€ λ°œμƒν•œ μ‹œμ λΆ€ν„° μΈν„°λŸ½νŠΈ 처리 ν›„ 이전에 μ‹€ν–‰λ˜λ˜ μž‘μ—…μœΌλ‘œ λŒμ•„κ°€κΈ°κΉŒμ§€μ˜ 과정을 μƒμ„Ένžˆ μ„€λͺ…ν•˜μ‹œμ˜€.

    • ν•˜λ“œμ›¨μ–΄μ— μΈν„°λŸ½νŠΈ κ°€ λ°œμƒν•˜λ©΄, ν•˜λ“œμ›¨μ–΄μ˜ μ»¨νŠΈλ‘€λŸ¬μ—μ„œ 물리적인 μ „κΈ° μ‹ ν˜Έ ν˜•νƒœμ˜ μΈν„°λŸ½νŠΈ λ₯Ό λ²„μŠ€λ₯Ό 톡해 μΈν„°λŸ½νŠΈ 컨트둀러둜 μ „λ‹¬ν•œλ‹€.

    • μΈν„°λŸ½νŠΈ μ»¨νŠΈλ‘€λŸ¬λŠ” μ—¬λŸ¬ λ””λ°”μ΄μŠ€λ‘œλΆ€ν„° μ˜€λŠ” μΈν„°λŸ½νŠΈ μ‹ ν˜Έλ₯Ό λͺ¨μ•„ CPU 의 μΈν„°λŸ½νŠΈ 라인 이 ν™œμ„±ν™” 됐닀면 CPU μ—κ²Œ μΈν„°λŸ½νŠΈ λ₯Ό 보낸닀. μΈν„°λŸ½νŠΈ 컨트둀러의 쑴재 μ΄μœ λŠ”, 였직 ν•˜λ‚˜μ˜ μΈν„°λŸ½νŠΈ 핀을 κ°€μ§μœΌλ‘œμ¨ λ‘˜ μ΄μƒμ˜ λ””λ°”μ΄μŠ€μ—μ„œ λ™μ‹œμ— μΈν„°λŸ½νŠΈ λ₯Ό 보내면 μΈν„°λŸ½νŠΈ λ₯Ό μ†Œμ‹€ν•  κ°€λŠ₯성이 μžˆλŠ” CPU의 ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜κΈ° μœ„ν•¨μ΄λ‹€.

      • μΈν„°λŸ½νŠΈ μ»¨νŠΈλ‘€λŸ¬μ—λŠ” μ—¬λŸ¬ 개의 핀이 있고, λ™μ‹œμ— μΈν„°λŸ½νŠΈ κ°€ λ°œμƒν•΄λ„ μš°μ„ μˆœμœ„μ— 따라 μΈν„°λŸ½νŠΈ λ₯Ό μ²˜λ¦¬ν•œλ‹€.
    • CPUκ°€ μΈν„°λŸ½νŠΈ μ‹ ν˜Έλ₯Ό λ°›μœΌλ©΄, μΈν„°λŸ½νŠΈ μ‹œμŠ€ν…œ 을 λΉ„ν™œμ„±ν™” ν•œλ‹€. κ·Έλ‹€μŒ, ν˜„μž¬ μ‹€ν–‰ 쀑인 λͺ…λ Ήμ–΄λ₯Ό 끝마치고, 기쑴의 Program Counter 값을 μŠ€νƒ 에 μ €μž₯ν•œλ‹€. μ΄λ•Œ μΈν„°λŸ½νŠΈ κ°€ μ»€λ„μ˜ μˆ˜ν–‰μ„ λ°©ν•΄ν–ˆλ‹€λ©΄ μ €μž₯ν•˜λŠ” μŠ€νƒμ€ 컀널 μŠ€νƒ 이 될 것이고, μ‚¬μš©μž ν”„λ‘œμ„ΈμŠ€μ˜ μˆ˜ν–‰μ„ λ°©ν•΄ν–ˆλ‹€λ©΄ μ‚¬μš©μž μŠ€νƒ 이 될 것이닀.

    • CPUλŠ” μΈν„°λŸ½νŠΈ 벑터 ν…Œμ΄λΈ” 을 μ°Έκ³ ν•˜μ—¬ ν•΄λ‹Ή μΈν„°λŸ½νŠΈ 라인 의 μœ„μΉ˜λ₯Ό μ•Œμ•„λ‚Έλ‹€. κ·Έ ν›„ μ•Œμ•„λ‚Έ μΈν„°λŸ½νŠΈ 라인 의 μœ„μΉ˜λ‘œ λΆ„κΈ°ν•œλ‹€.

      • μ΄λ•Œ, CPUκ°€ 컀널 λͺ¨λ“œ 둜 μ§„μž…ν•˜λŠ” μ •ν™•ν•œ μ‹œμ μ€ μ–Έμ œμΌκΉŒ?

      μΈν„°λŸ½νŠΈ 벑터 ν…Œμ΄λΈ” 은 보톡 컀널 μ˜μ—­μ˜ 첫 번째 μ£Όμ†Œ λ²ˆμ§€λΆ€ν„° 벑터 ν˜•νƒœλ‘œ μ €μž₯λ˜μ–΄μžˆμœΌλ©° 이 벑터 ν…Œμ΄λΈ” 에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄ 컀널 μ˜μ—­μœΌλ‘œ 듀어가기에 CPU κ°€ 벑터 ν…Œμ΄λΈ” 에 μ ‘κ·Όν•˜λŠ” μˆœκ°„ μœ μ € λͺ¨λ“œ μ—μ„œ 컀널 λͺ¨λ“œ 둜 μ „ν™˜λœλ‹€.

    • μΈν„°λŸ½νŠΈ 라인 의 초기 μ§„μž… μœ„μΉ˜μ—λŠ” μ–΄μ…ˆλΈ”λ¦¬ μ½”λ“œκ°€ μžˆλ‹€. 이 μ½”λ“œλŠ” IRQ 번호λ₯Ό μ €μž₯ν•˜κ³  μΈν„°λŸ½νŠΈ κ°€ μ€‘λ‹¨μ‹œν‚¨ μž‘μ—…μ˜ λ ˆμ§€μŠ€ν„° 값듀을 μŠ€νƒ 에 μ €μž₯ν•œλ‹€. κ·Έλ‹€μŒ 컀널은 do_IRQ()λ₯Ό ν˜ΈμΆœν•œλ‹€.

    • do_IRQ() ν•¨μˆ˜λŠ” 이전에 μ €μž₯ν•œ IRQ 번호λ₯Ό μ΄μš©ν•΄ μΈν„°λŸ½νŠΈ 라인 을 μ•Œμ•„λ‚΄κ³ , μžμ‹ μ΄ ν•΄λ‹Ή μΈν„°λŸ½νŠΈ λ₯Ό μΈμ§€ν–ˆλ‹€λŠ” 것을 μΈν„°λŸ½νŠΈ λ₯Ό 보낸 ν•˜λ“œμ›¨μ–΄μ—κ²Œ μ•Œλ¦°λ‹€. 그리고 ν•΄λ‹Ή μΈν„°λŸ½νŠΈ 라인 을 λΉ„ν™œμ„±ν™”μ‹œμΌœ 같은 μΈν„°λŸ½νŠΈ 의 μž¬μ§„μž…μ„ λ§‰λŠ”λ‹€.

    • do_IRQ() ν•¨μˆ˜λŠ” ν•΄λ‹Ή μΈν„°λŸ½νŠΈ 라인 에 μœ νš¨ν•œ ν•Έλ“€λŸ¬ κ°€ μžˆλŠ”μ§€ ν™•μΈν•˜κ³ , handle_IRQ_event()ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•¨μœΌλ‘œμ¨ μΈν„°λŸ½νŠΈ ν•Έλ“€λŸ¬ λ₯Ό μ‹€ν–‰ν•œλ‹€.

    • handle_IRQ_event() ν•¨μˆ˜λŠ” CPUκ°€ 처음 μΈν„°λŸ½νŠΈ λ₯Ό λ°›μ•˜μ„ λ•Œ μΈν„°λŸ½νŠΈ μ‹œμŠ€ν…œ 을 λΉ„ν™œμ„±ν™”ν•˜μ˜€μœΌλ―€λ‘œ, ν•Έλ“€λŸ¬ ν•¨μˆ˜ μΈμžμ— IRQF_DISABLED ν”Œλž˜κ·Έκ°€ μžˆμ§€ μ•Šλ‹€λ©΄ λ‹€μ‹œ μΈν„°λŸ½νŠΈ μ‹œμŠ€ν…œ 을 ν™œμ„±ν™”ν•΄μ•Ό ν•œλ‹€. IRQF_DISABLEDμΈμžκ°€ μ§€μ •λœ μƒνƒœλΌλ©΄ λͺ¨λ“  μΈν„°λŸ½νŠΈ κ°€ λΉ„ν™œμ„±ν™”λœ μƒνƒœμ—μ„œ ν•Έλ“€λŸ¬ λ₯Ό μ‹€ν–‰ν•œλ‹€.

    • μΈν„°λŸ½νŠΈ 라인 에 ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  ν•Έλ“€λŸ¬ λ₯Ό μ‹€ν–‰ν•œ ν›„, handle_IRQ_event() ν•¨μˆ˜λŠ” λ‹€μ‹œ μΈν„°λŸ½νŠΈ λ₯Ό λΉ„ν™œμ„±ν™”ν•˜κ³  do_IRQ() ν•¨μˆ˜λ‘œ λ°˜ν™˜ν•œλ‹€.

    • do_IRQ() ν•¨μˆ˜λ‘œ λ°˜ν™˜ ν›„ λ‹€μ‹œ 초기 μ§„μž… μœ„μΉ˜λ‘œ λŒμ•„κ°€μ„œ ret_from_intr() ν•¨μˆ˜κ°€ μ‹€ν–‰λœλ‹€. ret_from_intr() ν•¨μˆ˜λŠ” 초기 μ§„μž… μ½”λ“œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ μ–΄μ…ˆλΈ”λ¦¬ 둜 μž‘μ„±λ˜μ–΄ μžˆλ‹€. 이 ν•¨μˆ˜λŠ” need_resched λ³€μˆ˜κ°€ μ„€μ •λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ—¬ 그에 따라 μŠ€μΌ€μ€„λ§ μž‘μ—…μ„ μ‹œν–‰ν•œλ‹€.

      • μΈν„°λŸ½νŠΈ κ°€ μ‚¬μš©μž ν”„λ‘œμ„ΈμŠ€λ₯Ό μ€‘λ‹¨ν•œ 경우
        • schedule()ν•¨μˆ˜ 호좜
      • μΈν„°λŸ½νŠΈ κ°€ 컀널 자체λ₯Ό μ€‘λ‹¨ν•œ 경우
        • preempt_count값이 0인 κ²½μš°μ—λ§Œ schedule()ν•¨μˆ˜ 호좜

          κ·Έ μ™Έμ˜ κ²½μš°μ—λŠ” 컀널을 μ„ μ ν•˜λŠ” 것이 μ•ˆμ „ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.

    • schedule() ν•¨μˆ˜κ°€ λ°˜ν™˜λœ 이후, λ˜λŠ” λŒ€κΈ° 쀑인 ν”„λ‘œμ„ΈμŠ€κ°€ μ—†λŠ” 경우 λ ˆμ§€μŠ€ν„°μ— μ €μž₯ν–ˆλ˜ 이전 μž‘μ—…μ˜ λ¬Έλ§₯ 을 λ³΅κ΅¬ν•˜μ—¬ μ€‘λ‹¨ν–ˆλ˜ μž‘μ—…μ„ 계속 μ§„ν–‰ν•œλ‹€.

  • μ „μ—­ cli()ν•¨μˆ˜ λ₯Ό μ œκ±°ν•œ κ°€μž₯ 결정적인 이유λ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.

    • μ „μ—­ cli() ν•¨μˆ˜ λŠ” clear interrupt 둜 μ‹œμŠ€ν…œ λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ˜ μΈν„°λŸ½νŠΈ λ₯Ό λΉ„ν™œμ„±ν™”μ‹œν‚€λŠ” ν•¨μˆ˜μ΄λ‹€. 이 ν•¨μˆ˜μ˜ μ£Ό μ‚¬μš©μ²˜λŠ” 곡유 데이터 에 λŒ€ν•œ 접근을 μ œν•œν•˜κΈ° μœ„ν•¨μ΄μ—ˆμ§€λ§Œ 이λ₯Ό μœ„ν•œ λͺ©μ μœΌλ‘œ 전체 μΈν„°λŸ½νŠΈ_ λ₯Ό λΉ„ν™œμ„±ν™”μ‹œν‚€λŠ” 것은 μ‹œμŠ€ν…œ μ„±λŠ₯에 μ—„μ²­λ‚œ bottleneck μ΄μ—ˆκΈ°μ— 이 ν•¨μˆ˜λ₯Ό μ œκ±°ν•΄ λͺ‡ κ°€μ§€ 이점을 μ–»μ—ˆλ‹€.
      • λ“œλΌμ΄λ²„ κ°œλ°œμžλŠ” 잠금 κ΅¬ν˜„μ„ μœ„ν•΄ cli() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  λͺ©μ μ— 맞게 잠금 을 κ΅¬ν˜„ν•˜κ²Œ λ˜μ—ˆλ‹€.
      • 2.5 버전 개발 κ³Όμ •μ—μ„œ cli() ν•¨μˆ˜μ™€ 같은 μΈν„°λŸ½νŠΈ μ‹œμŠ€ν…œμ˜ μ€‘λ³΅λœ μ½”λ“œλ₯Ό λΉ„λ‘―ν•œ λ§Žμ€ μ½”λ“œλ₯Ό μ •λ¦¬ν•˜μ—¬ μ΄ν•΄ν•˜κΈ° 쉽고 κ°„λ‹¨ν•œ μ½”λ“œκ°€ λ§Œλ“€μ–΄μ‘Œλ‹€.
  • μΈν„°λŸ½νŠΈ λ₯Ό μ²˜λ¦¬ν•  λ•Œ, μ „λ°˜λΆ€ 와 ν›„λ°˜λΆ€ λ₯Ό κ΅¬λΆ„ν•˜λŠ” 이유λ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.

    • μΈν„°λŸ½νŠΈ ν•Έλ“€λŸ¬ λŠ” 운영체제 에 ν•„μš”ν•œ λΆ€λΆ„μ΄λ‚˜ μ‹€ν–‰ν•  λ•Œ λͺ‡ κ°€μ§€ μ œμ•½μ΄ μžˆλ‹€.

      • λΉ„λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰λ˜λ―€λ‘œ, λ‹€λ₯Έ μΈν„°λŸ½νŠΈ ν•Έλ“€λŸ¬ λ₯Ό ν¬ν•¨ν•œ λ‹€λ₯Έ μ€‘μš”ν•œ μ½”λ“œλ₯Ό μ€‘λ‹¨μ‹œν‚¬ 수 μžˆλ‹€.
      • μ΅œμ„ μ˜ 경우 IRQF_DISABLED ν”Œλž˜κ·Έκ°€ μ„€μ •λ˜μ§€ μ•ŠμœΌλ©΄ 처리 쀑인 μΈν„°λŸ½νŠΈ λ₯Ό λΉ„ν™œμ„±ν™”μ‹œν‚¨ μƒνƒœμ—μ„œ μ‹€ν–‰λ˜κ³ , μ΅œμ•…μ˜ 경우 IRQF_DISABLED ν”Œλž˜κ·Έκ°€ μ„€μ •λ˜μ—ˆλ‹€λ©΄ ν˜„μž¬ ν”„λ‘œμ„Έμ„œ 의 λͺ¨λ“  μΈν„°λŸ½νŠΈ λ₯Ό λΉ„ν™œμ„±ν™”μ‹œν‚¨ μƒνƒœμ—μ„œ μ‹€ν–‰λœλ‹€.
      • ν”„λ‘œμ„ΈμŠ€ μ»¨ν…μŠ€νŠΈ κ°€ μ•„λ‹Œ μΈν„°λŸ½νŠΈ μ»¨ν…μŠ€νŠΈ μ—μ„œ μ‹€ν–‰λ˜μ–΄ 휴면 μƒνƒœ κ°€ 될 수 없기에 μ‚¬μš©ν•  수 μžˆλŠ” ν•¨μˆ˜μ— μ œμ•½μ΄ μžˆμ–΄ ν•  수 μžˆλŠ” 일에 μ œμ•½μ„ λ°›λŠ”λ‹€.
      • ν•˜λ“œμ›¨μ–΄ λ₯Ό 닀루기 λ•Œλ¬Έμ— 처리 μ‹œκ°„μ΄ μ€‘μš”ν•˜λ‹€.
    • μœ„μ˜ λ¬Έμ œμ μ„ ν•΄μ†Œν•˜κΈ° μœ„ν•΄ μ΅œλŒ€ν•œ μΈν„°λŸ½νŠΈ ν•Έλ“€λŸ¬ μ—μ„œ μ€‘μš”ν•œ λͺ‡ κ°€μ§€ κΈ°μ€€μ˜ μž‘μ—…λ“€μ„ μ „λ°˜λΆ€ μ—μ„œ μ²˜λ¦¬ν•˜κ³  λ‚˜λ¨Έμ§€ 거의 λͺ¨λ“  일을 ν›„λ°˜λΆ€ μ²˜λ¦¬μ—μ„œ ν•΄κ²°ν•˜λŠ” 것이 이상적이닀.

      • μ „λ°˜λΆ€ μ—μ„œ μΈν„°λŸ½νŠΈ ν•Έλ“€λŸ¬ κ°€ μ²˜λ¦¬ν•  κ³ λ € 사항듀
        • μ‹€ν–‰ μ‹œκ°„μ— λ―Όκ°ν•œ μž‘μ—…
        • ν•˜λ“œμ›¨μ–΄ 와 κ΄€λ ¨λœ μž‘μ—…
        • λ‹€λ₯Έ μΈν„°λŸ½νŠΈ κ°€ λ°©ν•΄ν•΄μ„œλŠ” μ•ˆ λ˜λŠ” μž‘μ—…
        • 이외에 μž‘μ—…μ€ ν›„λ°˜λΆ€ μ—μ„œ μ²˜λ¦¬ν•œλ‹€.

      λŒ€λΆ€λΆ„ μƒν™©μ—μ„œ μΈν„°λŸ½νŠΈ ν•Έλ“€λŸ¬ κ°€ μ’…λ£Œλœ 직후에 ν›„λ°˜λΆ€ μ²˜λ¦¬κ°€ μ‹€ν–‰λœλ‹€. κ·ΈλŸ¬λ‚˜ ν›„λ°˜λΆ€ 처리의 핡심은 λͺ¨λ“  μΈν„°λŸ½νŠΈ κ°€ ν™œμ„±ν™”λœ μƒνƒœμ—μ„œ ν›„λ°˜λΆ€ 처리λ₯Ό ν•œλ‹€λŠ” 것이닀. μ „λ°˜λΆ€ 와 ν›„λ°˜λΆ€ λ₯Ό ꡬ뢄해 μΈν„°λŸ½νŠΈ λΉ„ν™œμ„±ν™” μ‹œκ°„μ„ μ΅œμ†Œν™”ν•˜μ—¬ μ‹œμŠ€ν…œ μ§€μ—°μ‹œκ°„ 을 쀄일 수 μžˆλ‹€.

  • softirq, tasklet, workqueue에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.

    • softirq

      • 컴파일 μ‹œ μ •μ μœΌλ‘œ ν• λ‹Ήλ˜μ–΄ λ™μ μœΌλ‘œ λ“±λ‘ν•˜κ±°λ‚˜ μ œκ±°ν•  수 μ—†λ‹€.
      • μΈν„°λŸ½νŠΈ μ»¨ν…μŠ€νŠΈ μ—μ„œ μ‹€ν–‰λ˜μ–΄ ν•˜λ“œμ›¨μ–΄ μΈν„°λŸ½νŠΈ κ°€ μ•„λ‹ˆλΌλ©΄ 선점할 수 μ—†λ‹€.
      • ν•˜λ‚˜μ˜ ν”„λ‘œμ„Έμ„œ μ—μ„œ 같은 μœ ν˜•μ˜ softirq κ°€ λ™μ‹œ μ‹€ν–‰ν•  수 μžˆλ‹€.
      • μ΅œμ†Œν•œμ˜ μ§λ ¬ν™”λ§Œ μ œκ³΅ν•΄ μ μ ˆν•œ 락이 ν•„μš”ν•˜λ‹€.
    • tasklet

      • softirq 기반으둜 λ§Œλ“€μ–΄μ‘Œλ‹€.
      • softirq μ™€λŠ” λ‹€λ₯΄κ²Œ λ™μ μœΌλ‘œ ν• λ‹Ήλœλ‹€.
      • μΈν„°νŽ˜μ΄μŠ€κ°€ κ°„λ‹¨ν•˜λ©°, 락 μ‚¬μš© μ œν•œμ΄ softirq 에 λΉ„ν•΄ μœ μ—°ν•˜λ‹€.
      • μΈν„°λŸ½νŠΈ μ»¨ν…μŠ€νŠΈ μ—μ„œ μ‹€ν–‰λ˜μ–΄ 휴면 μƒνƒœ κ°€ 될 수 μ—†λ‹€.
      • ν•˜λ‚˜μ˜ ν”„λ‘œμ„Έμ„œ μ—μ„œ λ‘˜ 이상이 λ™μ‹œμ— μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.
    • workqueue

      • μ§€μ—°μž‘μ—…μ„ 컀널 μŠ€λ ˆλ“œ ν˜•νƒœλ‘œ μ²˜λ¦¬ν•œλ‹€.
      • ν”„λ‘œμ„ΈμŠ€ μ»¨ν…μŠ€νŠΈ μ—μ„œ μ‹€ν–‰λ˜μ–΄ 휴면 μƒνƒœ κ°€ 될 수 있으며 μŠ€μΌ€μ€„λ§ 의 λŒ€μƒμ΄λ‹€.
    • μ–΄λ–€ 상황에 μ’‹μ„κΉŒ?

      • softirq

        • μΆ©λΆ„νžˆ μŠ€λ ˆλ“œν™”λ˜μ–΄ κΉŠμ€ λΆ€λΆ„κΉŒμ§€ ν”„λ‘œμ„Έμ„œλ³„λ‘œ λ³€μˆ˜λ₯Ό ꡬ뢄해 μ‚¬μš©ν•˜λŠ” 상황
        • μ‹€ν–‰ μ‹œκ°„μ— μ•„μ£Ό λ―Όκ°ν•˜κ³  μ‚¬μš©λΉˆλ„κ°€ 높은 경우
      • tasklet

        • μΆ©λΆ„νžˆ μŠ€λ ˆλ“œν™”λ˜μ–΄ μžˆμ§€ μ•Šμ€ 상황
        • κ°„λ‹¨ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ°€μ§€λ©° λ™μ‹œμ— μ‹€ν–‰λ˜μ§€ μ•ŠκΈ°μ— κ΅¬ν˜„ μž‘μ—…μ΄ 더 쉽닀.
        • λŒ€λΆ€λΆ„ μƒν™©μ—μ„œ softirq 보닀 μš°μ„ μœΌλ‘œ κ³ λ €λœλ‹€.
      • workqueue

        • μ§€μ—° μž‘μ—…μ„ ν”„λ‘œμ„ΈμŠ€ μ»¨ν…μŠ€νŠΈ μ—μ„œ μ‹€ν–‰ν•΄μ•Ό ν•œλ‹€λ©΄ μ‚¬μš©
        • 컀널 μŠ€λ ˆλ“œ λ₯Ό μ‚¬μš©ν•˜κΈ°μ— μ»¨ν…μŠ€νŠΈ μ „ν™˜ λΉ„μš©μ΄ ν•„μš”ν•˜λ©° 휴면 μƒνƒœ κ°€ ν•„μš” μ—†λ‹€λ©΄ ꡳ이 μ‚¬μš©ν•  μ΄μœ λŠ” μ—†λ‹€.