[OS] ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ
ํ์ด์ง ๋ถ์ฌ ๋ฐ์ → ์๋ก์ด ํ์ด์ง๋ฅผ ํ ๋นํด์ผ ํจ → ํ์ฌ ํ ๋น๋ ํ์ด์ง ์ค ์ด๋ค ๊ฒ ๊ต์ฒดํ ์ง ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ
Demanding Paging์ ์๊ตฌ๋์ด์ง๋ ํ์ด์ง๋ง backing store์์ ๊ฐ์ ธ์จ๋ค. ํ์ง๋ง ํ๋ก๊ทธ๋จ๋ค์ด ๊ณ์ ์คํํจ์ ๋ฐ๋ผ ์๊ตฌ ํ์ด์ง๋ ๊ณ์ ๋์ด๋๊ณ , ์ธ์ ๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐจ๊ฒ ๋ ๊ฒ์ด๋ค.(memory full)
์ฌ๊ธฐ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ์๋ก ์คํ๋๊ฑฐ๋ ์คํ์ค์ธ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ์๊ตฌํ๋ค๋ฉด ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ์ด์ง ์ค ํ๋๋ฅผ ๋ค์ backing store์ ๋ณด๋ด๊ณ (page-out), ์๋ก์ด ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ผํ๋ค.(page-in) ์ด๋ฅผ ํ์ด์ง ๊ต์ฒด๋ผ๊ณ ํ๋ค. ์ฌ๊ธฐ์ backing store๋ก page-out์ด ๋ ํ์ด์ง๋ฅผ victim page๋ผ๊ณ ํ๋ค.
- ์๊ตฌ ํ์ด์ง(Demanding Paging)
- ํ์ํ ํ์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ ํ ๋นํ๋ ํ์ด์ง ๊ธฐ๋ฒ.
- ๊ธฐ์กด์ ํ์ด์ง ํ ์ด๋ธ๊ณผ ๋ค๋ฅธ ์ ์ valid bit๊ฐ ์ถ๊ฐ๋์๋ค. ์ด๋ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ํ์ด์ง๊ฐ ์๋์ง ์๋์ง๋ฅผ ๋ํ๋ด๋ ๋นํธ์ด๋ค. ํ์ฌ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ค๋ฉด 1, ์๋ค๋ฉด 0๊ฐ์ ๊ฐ๋๋ค.
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ์ ์ผ๋ก ๋ ๊ฐ์ง๊ฐ ์กด์ฌํ์ง๋ง, ๋๋ถ๋ถ ์๊ตฌ ํ์ด์ง์ ์ฌ์ฉํ๋ฏ๋ก ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์๊ตฌ ํ์ด์ง์ ๊ฐ์ ์ฉ์ด๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
1. ํ์ด์ง ๋ถ์ฌ(Page Fault)
ํ์ด์ง ๋ถ์ฌ๋ CPU๊ฐ ์ ๊ทผํ๋ ค๋ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ์ด๋ค. ์ฆ, ํ์ด์ง ํ ์ด๋ธ์ valid bit๊ฐ์ด 0์ธ ๊ฒฝ์ฐ์ด๋ค.
์ ๊ทธ๋ฆผ์ page fault๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ๋ํ๋ธ ๊ฒ์ด๋ค.
- ํด๋น ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋์ง valid bit๋ฅผ ํ์ธํ๋ค.
- valid bit๊ฐ 0์ด๋ผ๋ฉด CPU์ ์ธํฐ๋ฝํธ ์ ํธ๋ฅผ ๋ณด๋ด์ด ์ด์์ฒด์ ๋ด๋ถ ํด๋น ISR(Interrupt Service Routine)๋ก ์ ํํ๋ค.
- ํด๋น ISR์์ backing store(๋์คํฌ)๋ฅผ ํ์ํ์ฌ ํด๋น ํ๋ก์ธ์ค์ ํ์ด์ง๋ฅผ ์ฐพ๋๋ค.
- ํด๋น ํ์ด์ง๋ฅผ ๋น์ด์๋ ํ๋ ์์ ํ ๋นํ๋ค.
- ํ์ด์ง ํ ์ด๋ธ์ ๊ฐฑ์ ํ๋ค.(ํ๋ ์ ๋ฒํธ ์ค์ , valid bit 1๋ก ๋ณ๊ฒฝ)
- ๋ค์ ๋ช ๋ น์ด๋ก ๋์๊ฐ์ ์คํํ๋ค.
1.2. ํ์ด์ง ๊ต์ฒด(Page Replacement)
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์๊ตฌ ํ์ด์ง ๊ธฐ๋ฒ์ ํตํด ํ์ํ ํ์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๊ณ ์ฌ์ฉํ์ง ์๋ ๋ถ๋ถ์ ๊ทธ๋๋ก ๋๋ค. ํ์ง๋ง ํ์ํ ํ์ด์ง๋ง ์ฌ๋ ค๋ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฒฐ๊ตญ ๊ฐ๋ ์ฐจ๊ฒ ๋๊ณ , ์ฌ๋ผ์์๋ ํ์ด์ง๊ฐ ์ฌ์ฉ์ด ๋ค ๋ ํ์๋ ์๋ฆฌ๋ง ์ฐจ์งํ๊ณ ์์ ์ ์๋ค. ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐจ๋ฉด, ์ถ๊ฐ๋ก ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ ์์ฐ๋ ํ์ด์ง๋ page-outํ๊ณ , ํด๋น ๊ณต๊ฐ์ ํ์ฌ ํ์ํ ํ์ด์ง๋ฅผ page-in ์์ผ์ผ ํ๋ค.
์ฌ๊ธฐ์ ์ด๋ค ํ์ด์ง๋ฅผ page-out ์์ผ์ผํ ์ง ์ ํด์ผ ํ๋๋ฐ, ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์๋ ํ์ด์ง ์ค CPU์ ์์ (modigy)๋์ง ์๋ ํ์ด์ง๋ฅผ ๊ณ ๋ฅด๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค. ์์ ๋์ง ์์ ํ์ด์ง๋ page-out์ด ๋ ๋ backing store์ ์ฐ๊ธฐ(write) ์ฐ์ฐ์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. backing store๋ ์ฝ๋ ์๊ฐ๋ ๋๋ฆฌ์ง๋ง, ๊ฑฐ๊ธฐ์ ๋ํด ์ฐ๊ธฐ ์์ ๊น์ง ํ๋ค๋ฉด ๋์ฑ ๋นํจ์จ์ ์ผ ๊ฒ์ด๋ค.(์ด๋, page-out ๋๋ ํ์ด์ง๋ฅผ victim page๋ผ๊ณ ๋ถ๋ฅธ๋ค)
1.2.1. Victim Page(ํฌ์์ ํ์ด์ง)
ํด๋น ํ์ด์ง๊ฐ ์์ ๋์๋์ง ์๋์๋์ง๋ฅผ ํ๋จํ ์ ์์ด์ผ ํ๋๋ฐ, ์ด๋ฅผ ์ํด ํ์ด์ง ํ ์ด๋ธ์ modified bit(=dirty bit)๋ฅผ ์ถ๊ฐํ์ฌ ์ด๋ฅผ ๊ฒ์ฌํ๋ค. ํด๋น ํ์ด์ง๊ฐ ์์ ๋์๋ค๋ฉด ์ด ๋นํธ๋ฅผ 1๋ก ๋๊ณ , ์์ ๋์ง ์์ผ๋ฉด 0์ผ๋ก ๋๋ค. ์ด๋ฅผ ์ด์ฉํด์ victim page๋ ์ต๋ํ ์์ ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ํํ๋ค.
์ ๊ทธ๋ฆผ์ modified bit๋ฅผ ์ถ๊ฐํ ํ์ด์ง ํ ์ด๋ธ์ ๋ชจ์ต์ด๋ค. ์ฌ๊ธฐ์ ์์ ๋์ง ์์ ํ์ด์ง๋ 0, 2, 3๋ฒ 3๊ฐ์ ํ์ด์ง๊ฐ ์กด์ฌํ๋๋ฐ ์ด ์ค์์๋ ์ด๋ค ํ์ด์ง๋ฅผ ์ ํํด์ผ ํ ๊น?
์ ์ผ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋๋คํ๊ฒ ์ ํํ๋ ๊ฒ์ด์ง๋ง, ์ด๋ ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์๋ค. ๊ทธ ๋ค์์ ๊ฐ์ฅ ๋จผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ํ์ด์ง๋ฅผ ํฌ์์ ํ์ด์ง๋ก ์ ํํ๋ ๊ฒ์ด๋ค. ์ด๋ ์์ฃผ ์ ๋ช ํ FIFO(First-In First-Out) ๋ฐฉ์์ด๋ค. ์ด ์ธ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
์ด์ ๊ฐ์ ์ํฉ์์ ์ํฉ์ ๋ง๋ ํ์ด์ง ๊ต์ฒด๋ฅผ ์งํํ๊ธฐ ์ํด ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋ค.
2. ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ
Page Reference String
ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ดํด๋ณด๊ธฐ ์ ์ Page reference string ์ด๋ผ๋ ์ฉ์ด๋ฅผ ์์์ผ ํ๋ค. CPU๊ฐ ๋ด๋ ์ฃผ์๋ ์ด์ง์ ๋จ์์ด์ง๋ง, ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๊ณ์ฐํ๊ธฐ ์ํด์๋ ์ด์ง์ ์ฃผ์ ๋จ์๊ฐ ์๋ ํ์ด์ง ๋จ์๋ก ๊ณ์ฐํด์ผํ๋ค.
์๋ฅผ ๋ค์ด, CPU๊ฐ ๋ด๋ ์ฃผ์๋ฅผ ๊ฐ๋จํ ์ญ์ง์๋ก ํํํ์ฌ {100, 101, 102, 432, 612, 103, 104, 611, 612} ๋ผ๊ณ ํ์. ๋ง์ฝ ํ์ด์ง ํฌ๊ธฐ๊ฐ 100bytes๋ผ๋ฉด, ์ ์ฃผ์๋ฅผ ํ์ด์ง ๋ฒํธ๋ก ๋ํ๋ด๋ฉด {1, 1, 1, 4, 6, 1, 1, 6, 6} ์ด๋ค. ์ฃผ์ 100๋ฒ์ง๋ 1๋ฒ ํ์ด์ง์์ offset์ด 0์ธ ์์น์ด๊ณ , 101์ 1๋ฒ ํ์ด์ง์ offset 1์ธ ์์น๋ผ๊ณ ๋ณผ ์ ์๋ค.
๋ง์ง๋ง์ผ๋ก ํ์ด์ง ๋ฒํธ๋ก ๋ํ๋ธ ๊ฒ์ page reference string์ผ๋ก ๋ํ๋ด๋ฉด {1, 4, 6, 1, 6}์ด๋ค. ์ด๋ ๊ฐ๋จํ ๋งํ๋ฉด ์ฐ์๋ ํ์ด์ง๋ ์๋ตํ๊ณ ํ๋์ ํ์ด์ง ๋ฒํธ๋ง ๋ํ๋ธ ๊ฒ์ผ๋ก ๋ณผ ์ ์๋ค. ์ด ์ด์ ๋ ์ฐ์๋ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ ๋๋ ํ ๋ฒ page fault๊ฐ ๋ฐ์ํ๋ฉด ๊ฐ์ ํ์ด์ง๋ฅผ ์ฌ์ฉํ๋ ๋์์๋ ์ ๋ page fault๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ ๋ฆฌํ๋ฉด, page size = 100bytes ์ผ๋
- CPU ์ฃผ์ = {100, 101, 102, 432, 612, 103, 104, 611, 612}
- Page ๋ฒํธ = {1, 1, 1, 4, 6, 1, 1, 6, 6}
- Page reference string = {1, 4, 6, 1, 6}
2.1. First-In First-Out(FIFO)
- victim page : page-out ๋๋ ํ์ด์ง๋, ๊ฐ์ฅ ๋จผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ํ์ด์ง
- ์์ด๋์ด : ์ด๊ธฐํ ์ฝ๋๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ๋ ์์ด๋์ด์์ ์์๋์๋ค.
- First-in First-out, ๋ฉ๋ชจ๋ฆฌ์ ๋จผ์ ์ฌ๋ผ์จ ํ์ด์ง๋ฅผ ๋จผ์ ๋ด๋ณด๋ด๋ ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก, ํนํ ์ด๊ธฐํ ์ฝ๋์์ ์ ์ ํ ๋ฐฉ๋ฒ์ด๋ค.
- ์ฒ์ ํ๋ก์ธ์ค ์คํ์์๋ ๋ฌด์กฐ๊ฑด ํ์ํ ์ฝ๋์ด๋ฏ๋ก, FIFO ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ์ด๊ธฐํ๋ฅผ ์์ผ์ค ํ ๊ฐ์ฅ ๋จผ์ ๋ด๋ณด๋ด๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
- Belady's Anomaly : ํ๋ ์ ์๊ฐ ์ฆ๊ฐํ๋ฉด(= ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ด ์ฆ๊ฐํ๋ฉด) page fault ์๊ฐ ์ค์ด๋๋ ๊ฒ์ด ์ ์์ ์ด์ง๋ง, ํน์ ํ ํ์ด์ง ์ฐธ์กฐ์ด์ ๋ํด์๋ ํ๋ ์ ์๊ฐ ์ฆ๊ฐํด๋ page fault ์๊ฐ ์คํ๋ ค ์ฆ๊ฐํ๋ ์ด์ ํ์์ด ๋ฐ์ํ๋ค. ์ด๋ฅผ Belady's Anomaly๋ผ ํ๋ค.
2.2. Optimal(OPT)
OPT๋ ๋ง๊ทธ๋๋ก ๊ฐ์ฅ ํจ์จ์ ์ธ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ํฌ์์ ํ์ด์ง๋ก ์ ํํ๋ค.
- victim page : page-out ๋๋ ํ์ด์ง๋, ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง
- Optimal ์๊ณ ๋ฆฌ์ฆ, ์์ผ๋ก ๊ฐ์ฅ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ๊ฐ์ฅ ์ฐ์ ์ ์ผ๋ก ๋ด๋ณด๋
- FIFO์ ๋นํด ํ์ด์ง ๊ฒฐํจ์ ํ์๋ฅผ ๋ง์ด ๊ฐ์์ํฌ ์ ์๋ค.
- ํ์ง๋ง, ์ค์ง์ ์ผ๋ก ํ์ด์ง๊ฐ ์์ผ๋ก ์ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ๋ ๋ณด์ฅ์ด ์๊ธฐ ๋๋ฌธ์ ์ํํ๊ธฐ ์ด๋ ค์ด ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
2.3. Least-Recently-Used(LRU)
- victim page : page-out ๋๋ ํ์ด์ง๋, ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง
- ์์ด๋์ด : ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์์ผ๋ฉด, ๋์ค์๋ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ค. (์ค์ ๋ก๋ ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ ์์ผ๋ก๋ ์ฌ์ฉํ์ง ์์ ํ๋ฅ ์ด ๋๋ค)
- Least-Recently-Used, ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ๊ฐ์ฅ ๋จผ์ ๋ด๋ ค๋ณด๋ด๋ ์๊ณ ๋ฆฌ์ฆ
- LRU๋ ๊ทผ์ฌ ํด๋ฅผ ๊ตฌํ๋ฏ๋ก OPT๋ณด๋ค๋ ํ์ด์ง ๊ฒฐํจ์ด ๋ ์ผ์ด๋ ์ ์์ง๋ง, FIFO๋ณด๋ค๋ ์ผ๋ฐ์ ์ผ๋ก ์ ๊ฒ ์ผ์ด๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํ์ฌ ๋๋ถ๋ถ ํ๊ฒฝ์์๋ LRU๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
- OPT์ ๊ฒฝ์ฐ ๋ฏธ๋ ์์ธก์ด์ง๋ง, LRU์ ๊ฒฝ์ฐ๋ ๊ณผ๊ฑฐ๋ฅผ ๋ณด๊ณ ํ๋จํ๋ฏ๋ก ์ค์ง์ ์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์๊ณ ๋ฆฌ์ฆ
- ์ค์ ๋ก ์ฌ์ฉํ ์ ์๋ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์์๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค.
- ์ต๊ทผ ์ฐธ์กฐ ์๊ฐ์ ์ํํธ์จ์ด์ ์ผ๋ก ์ ์งํด์ผํ๋ฏ๋ก ์๊ณ ๋ฆฌ์ฆ ์ด์์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
3. ๊ต์ฒด ๋ฐฉ์
Global ๊ต์ฒด
๋ฉ๋ชจ๋ฆฌ ์์ ๋ชจ๋ ํ๋ก์ธ์ค ํ์ด์ง์ ๋ํด ๊ต์ฒดํ๋ ๋ฐฉ์
Local ๊ต์ฒด
๋ฉ๋ชจ๋ฆฌ ์์ ์๊ธฐ ํ๋ก์ธ์ค ํ์ด์ง์์๋ง ๊ต์ฒดํ๋ ๋ฐฉ์
๋ค์ค ํ๋ก๊ทธ๋๋ฐ์ ๊ฒฝ์ฐ, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ํ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฌ๋ผ์ฌ ์ ์๋ค. ๋ฐ๋ผ์, ๋ค์ํ ํ๋ก์ธ์ค์ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ค.
ํ์ด์ง ๊ต์ฒด ์, ๋ค์ํ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํด victim page๋ฅผ ์ ์ ํ๋๋ฐ, ์ ์ ๊ธฐ์ค์ Global๋ก ํ๋๋, Local๋ก ํ๋๋์ ๋ํด ์ฐจ์ด๊ฐ ์๋ค. → ์ค์ ๋ก๋ ์ ์ฒด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ด๋ผ๊ณ ํ๋ค. ์๊ธฐ ํ๋ก์ธ์ค ํ์ด์ง์์๋ง ๊ต์ฒด๋ฅผ ํ๋ฉด, ๊ต์ฒด๋ฅผ ํด์ผํ ๋ ๊ฐ๊ฐ ๋ชจ๋ ๊ต์ฒด๋ฅผ ์งํํด์ผ ํ๋ฏ๋ก ๋นํจ์จ์ ์ด๋ค.
์ฐธ๊ณ
- https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-15.-%EA%B0%80%EC%83%81%EB%A9%94%EB%AA%A8%EB%A6%AC
- https://gyoogle.dev/blog/computer-science/operating-system/Page%20Replacement%20Algorithm.html
- https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-16.-%ED%8E%98%EC%9D%B4%EC%A7%80-%EA%B5%90%EC%B2%B4-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98