์ด์์ฒด์
6. Virtual Memory (Paging / Segmentation)
7. Memory Fragmentation(๋จํธํ), Page Fault(ํ์ด์ง ๋ถ์ฌ), Thrashing(์ค๋ ์ฑ)
8. Paging Algorithm (Fixed Allocation)
6. Virtual Memory (Paging / Segmentation)
Virtual Memory
โ ๊ธฐ์กด์๋ ํ๋ก์ธ์ค ์ ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํด์ผ ํ์
- ๋นํจ์จ์
- ๋ฌผ๋ฆฌ์ ํ๊ณ(๋น์ฉ ↑)
โ ๊ธฐ์กด ๋ฐฉ์์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ!
โ ํ๋ก์ธ์ค ์คํ ์ ์ ์ฒด๊ฐ ์๋๋ผ ํ์ํ block ์ ์ฌ ์ํค๊ณ ๋๋จธ์ง๋ swap device (๋์คํฌ)์ ์ ์ฅ
โ ํ๋ก์ธ์ค block์ ์ด๋ป๊ฒ ๋๋ ๊ฒ์ธ๊ฐ -> Paging / Segmentation
Paging System
![](https://blog.kakaocdn.net/dn/9FoZA/btr1CM6NYNI/6lYy3zpvj8zCty2RpanvKK/img.png)
โ ํ๋ก๊ทธ๋จ์ ๊ณ ์ ๋ ํฌ๊ธฐ์ block์ผ๋ก ๋ถํ (page) / ๋ฉ๋ชจ๋ฆฌ๋ฅผ block size๋ก ๋ฏธ๋ฆฌ ๋ถํ (page frame)
- ์ธ๋ถ ๋จํธํ ๋ฌธ์ ์์ (๋ด๋ถ ๋จํธํ๋ ๋ฐ์ ๊ฐ๋ฅ)
- ๋ฉ๋ชจ๋ฆฌ ํตํฉ / ์์ถ ๋ถํ์
- ํ๋ก๊ทธ๋จ์ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ ๊ณ ๋ ค x (page sharing/protection ๋ณต์ก)
โ ํ์ํ page๋ง page frame์ ์ ์ฌํ์ฌ ์ฌ์ฉ
- ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ํ์ฉ
โ Page mapping overhead
- ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ฐ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์ -> TLB(์บ์) / ์ ์ฉ HW ํ์ฉ
TLB (Translation Lookaside Buffer)
โ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์๋ก ๋ณํํ๋ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์บ์
- ์ต๊ทผ์ ์ผ์ด๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ฌผ๋ฆฌ ์ฃผ์์ ๋ณํ ํ ์ด๋ธ์ ์ ์ฅ
Segmentation System
![](https://blog.kakaocdn.net/dn/PcE7J/btr1Ee9YzhV/ngz1TZPBaZiHTQF2aS7YjK/img.png)
โ ํ๋ก๊ทธ๋จ์ ๋ ผ๋ฆฌ ๋จ์๋ก ๋ถํ (segment) / ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ๋ถํ
- ๋ด๋ถ ๋จํธํ x
- sharing/protection ์ฉ์ด
- paging system ๋๋น ๊ด๋ฆฌ overhead ํผ
7. Memory Fragmentation(๋จํธํ), Page Fault(ํ์ด์ง ๋ถ์ฌ), Thrashing(์ค๋ ์ฑ)
โ ์์ ํ ์ฐ๊ด๋ ๊ฐ๋ ๋ค์ ์๋์ง๋ง ๋ฉ๋ชจ๋ฆฌ / ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ๋ด์ฉ์ ๋ฑ์ฅํ๋ ์ฃผ์ ๊ฐ๋ ๋ค!
Memory Fragmentation(๋จํธํ)
![](https://blog.kakaocdn.net/dn/nWLKh/btr1bmo4XHp/yF4kAiCH9KmSt6kgTITTuK/img.png)
โ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ด ์์ ์กฐ๊ฐ๋ค๋ก ๋ถํ ๋์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์กด์ฌํ์ง๋ง ํ ๋น์ด ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ๋ญ๋น๋๋ ํ์
โ Internal Fragmentation (๋ด๋ถ ๋จํธํ): Partition ํฌ๊ธฐ > Process ํฌ๊ธฐ
โ External fragmentation (์ธ๋ถ ๋จํธํ): (๋จ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ > Process ํฌ๊ธฐ)์ง๋ง, ์ฐ์๋ ๊ณต๊ฐ์ด ์๋
Page Fault (ํ์ด์ง ๋ถ์ฌ)
โ ํ์๋ก ํ๋ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์์ง ์์ ๊ฒฝ์ฐ
โ Context switching (Disk I/O) ๋ฐ์ -> Overhead
โ ๋์คํฌ๋ก๋ถํฐ ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ ์ ์ฌํ๋ค (page replacement)
Thrashing (์ค๋ ์ฑ)
![](https://blog.kakaocdn.net/dn/FceDP/btr1vsHLZ03/48d8nN476EFd1G5DfDpaWk/img.png)
โ ๊ณผ๋ํ Page Fault๋ก ์ธํด ํ๋ก์ธ์ค ์ํ์๊ฐ๋ณด๋ค ํ์ด์ง ๊ต์ฒด ์๊ฐ์ด ๋ง์ ์ํ
โ ์ ์ ํ Multi Programming Degree ์กฐ์ ์ด ํ์ํ๋ค!
โ Memory Allocation -> WS algorithm, PFF Algorithm
8. Paging Algorithm (Fixed Allocation)
Min Algorithm (OPT algorithm)
![](https://blog.kakaocdn.net/dn/pbHJY/btr1nwYgCx6/FCr8obrsVqmxObnqzSwdzk/img.png)
โ ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฐธ์กฐ๋์ง ์์ page ๊ต์ฒด
โ ์คํ ๋ถ๊ฐ๋ฅํ ๊ธฐ๋ฒ (๋ฏธ๋์ ํ์ด์ง ์ฐธ์กฐ๋ฅผ ์์ํด์ผ๋จ)
- ์ฑ๋ฅ ํ๊ฐ์ ์งํ๋ก ํ์ฉ
FIFO (First In First Out) Algorithm
![](https://blog.kakaocdn.net/dn/Zqpv6/btr1CMZ2FL2/kmyf69BWbsLqHCJQLxMCw1/img.png)
โ ๊ฐ์ฅ ์ค๋๋ page๋ฅผ ๊ต์ฒด
โ ์์ฃผ ์ฌ์ฉ๋๋ page๊ฐ ๊ต์ฒด ๋ ๊ฐ๋ฅ์ฑ์ด ๋์
- Locality์ ๋ํ ๊ณ ๋ ค x
LRU (Least Recently Used) Algorithm
![](https://blog.kakaocdn.net/dn/dw6c7s/btr1fOZxLOA/XJ2kdzveKPCX0YphnzgFDk/img.png)
โ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฐธ์กฐ๋์ง ์์ page ๊ต์ฒด
โ Locality์ ๊ธฐ๋ฐ์ ๋ ๊ต์ฒด ๊ธฐ๋ฒ
โ Page ์ฐธ์กฐ ์๋ง๋ค ์๊ฐ์ ๊ธฐ๋กํด์ผ ํจ (Overhead ๋ฐ์)
โ ์ค์ ๋ก ๊ฐ์ฅ ๋ง์ด ํ์ฉ๋๋ ๊ธฐ๋ฒ
LFU(Least Frequently Used) Algorithm
![](https://blog.kakaocdn.net/dn/bm5gaD/btr1dcM60Ez/iGCFlXt8TKvtreof4NBhU1/img.png)
โ ๊ฐ์ฅ ์ฐธ์กฐ ํ์๊ฐ ์ ์ page ๊ต์ฒด
โ page ์ฐธ์กฐ ์๋ง๋ค, ์ฐธ์กฐ ํ์๋ฅผ ๋์ ์์ผ์ผํจ
โ Locality ํ์ฉ
- LRU ๋๋น ์ ์ overhead
โ ์ต๊ทผ ์ ์ฌ๋ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ page๊ฐ ๊ต์ฒด๋ ๊ฐ๋ฅ์ฑ
NUR(Not Used Recently) Algorithm
![](https://blog.kakaocdn.net/dn/bXYaeO/btr1zl2FxFj/bKS4OZ9dsZEIsoqjzdMIW1/img.png)
โ LRU approximation shceme
- LRU๋ณด๋ค ์ ์ overhead๋ก ๋น์ทํ ์ฑ๋ฅ ๋ฌ์ฑ ๋ชฉ์
โ Bit vector ์ฌ์ฉ
- Reference bit vector(r), Updated bit vector(m)
- reference bit๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ์ด๊ธฐํ ๋๋ ํน์ฑ ์ด์ฉ
โ ๊ต์ฒด ์์
- (r, m) = (0, 0)
- (r, m) = (0, 1)
- (r, m) = (1, 0)
- (r, m) = (1, 1)
Clock Algorithm
![](https://blog.kakaocdn.net/dn/bzHuGI/btr1f1YS9k8/9oYCj6z3U5IL7ry11yYCwk/img.png)
โ referece bit ์ฃผ๊ธฐ์ ์ด๊ธฐํ x
โ Page frame๋ค์ ์์ฐจ์ ์ผ๋ก ๊ฐ๋ฆฌํค๋ pointer(์๊ณ๋ฐ๋)์ ์ฌ์ฉํ์ฌ ๊ต์ฒด๋ page ๊ฒฐ์
- ํ์ฌ ๊ฐ๋ฆฌํค๊ณ ์๋ page์ reference bit(r) ํ์ธ
- r = 0 ์ธ ๊ฒฝ์ฐ, ๊ต์ฒด page๋ก ๊ฒฐ์
- r = 1์ธ ๊ฒฝ์ฐ, reference bit ์ด๊ธฐํ ํ pointer ์ด๋
Second Chance Algorithm
![](https://blog.kakaocdn.net/dn/C25pP/btr1CM6N1KN/TlDDuVkoNrkDPcZcSLMoQk/img.png)
โ Clock algorithm ๊ณผ ์ ์ฌ
โ Update bit(m)๋ ํจ๊ป ๊ณ ๋ คํจ
- ํ์ฌ ๊ฐ๋ฆฌํค๊ณ ์๋ page์ (r, m) ํ์ธ
- (0, 0): ๊ต์ฒด page๋ก ๊ฒฐ์
- (0, 1): -> (0, 0), write-back (cleaning) list์ ์ถ๊ฐ ํ ์ด๋
- (1, 0): -> (0, 0)ํ ์ด๋
- (1, 1): -> (0, 1)ํ ์ด๋
9. Caching (์บ์ฑ)
Cache (์ ์ฅ ์ฅ์น)
โ ํ๋ก์ธ์ ๋ด๋ถ์ ์๋ ๋ฉ๋ชจ๋ฆฌ(L1, L2 ์บ์ ๋ฑ)
โ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ถ๋ ฅ ๋ณ๋ชฉ ํ์ ํด์ (ํ๋ก์ธ์ ์ฐ์ฐ ์๋ > ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์ ์ถ๋ ฅ ์๋)
โ ์ง์ญ์ฑ(Locality)์ ํ์ฉํด ์์ฃผ ์ ๊ทผํ๋ ๋ฐ์ดํฐ ์บ์์ ์ ์ฅ
- ์ฉ๋์ด ์๊ณ ๊ฐ๊ฒฉ์ด ๋น์ธ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค
โ ์บ์ ํํธ(Cache hit)
- ํ์ํ ๋ฐ์ดํฐ ๋ธ๋ก์ด ์บ์ ์กด์ฌ
โ ์บ์ ๋ฏธ์ค(Cache miss)
- ํ์ํ ๋ฐ์ดํฐ ๋ธ๋ก์ด ์๋ ๊ฒฝ์ฐ
Locality
โ ๊ณต๊ฐ์ ์ง์ญ์ฑ (Spatial locality)
์ฐธ์กฐํ ์ฃผ์์ ์ธ์ ํ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๋ ํน์ฑ (ex: ์์ฐจ์ ํ๋ก๊ทธ๋จ ์ํ)
โ ์๊ฐ์ ์ง์ญ์ฑ (Temporal locality)
- ํ ๋ฒ ์ฐธ์กฐํ ์ฃผ์๋ฅผ ๊ณง ๋ค์ ์ฐธ์กฐํ๋ ํน์ฑ (ex: for๋ฌธ ๋ฑ์ ์ํ๋ฌธ)
โ ์ง์ญ์ฑ์ ์บ์ ์ ์ค๋ฅ (cache hit ration)์ ๋ฐ์ !
Caching (์บ์ฑ)
โ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ฆฌ๋ฅผ ํ์ฉํด ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ์ ์ฅํด๋๋ ๊ฒ
โ TLB(VM), Redis...
10. ๋ฉ๋ชจ๋ฆฌ์ ๊ตฌ์กฐ
![](https://blog.kakaocdn.net/dn/b1StNe/btr1dc7utGa/03O14TJlHedNzE1G1ox1sk/img.png)
โ ํ๋ก์ธ์ค๋ ๊ฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ๋๋ค
Code
โ ์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์ญ
Data
โ ํ๋ก๊ทธ๋จ์ ์ ์ญ ๋ณ์์ ์ ์ (Static)๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ
Heap
โ ์ฌ์ฉ์๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌ(ํ ๋น ๋ฐ ํด์ )ํ๋ ์์ญ
โ Java
- Object ํ์ ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ (String, Integer, ArrayList...)
- new ์ฐ์ฐ์ ํตํด ์์ฑํ ๊ฐ์ฒด ์ ์ฅ
- GC๋ฅผ ํตํด ๊ด๋ฆฌ (Unreachable object ์ญ์ )
Stack
โ ์ง์ญ ๋ณ์ ๋ฐ ๋งค๊ฐ ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ
โ ๊ฐ๊ฐ์ ์ค๋ ๋๋ง๋ค ํ ๋น
โ Java
- ์์(Primitive) ํ์ ๋ฐ์ดํฐ ์ ์ฅ
- ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ(reference)ํ๋ ๋ณ์ ์ ์ฅ
11. Disk Scheduling (๋์คํฌ ์ค์ผ์ค๋ง)
โ Disk Access ์์ฒญ๋ค์ ์ฒ๋ฆฌ ์์ ๊ฒฐ์
โ Optimizing Seek Time (๋์คํฌ head๋ฅผ ํ์ํ cylinder๋ก ์ด๋ํ๋ ์๊ฐ)
- Rotational Delay๋ฅผ ์ค์ด๋ ์๊ณ ๋ฆฌ์ฆ
- SLTF (Shortest Latency Time First)
- SPTF (Shortest Positioning TIme First)
FCFS (First Come First Service)
![](https://blog.kakaocdn.net/dn/mtmyd/btr1EgtbsI3/xUOWdxhJrdxPWuGXKET2nK/img.png)
โ ์์ฒญ์ด ๋์ฐฉ์ฐ ์์์ ๋ฐ๋ผ ์ฒ๋ฆฌ
โ Simple, but ์ต์ ์ฑ๋ฅ ๋ฌ์ฑ์ ๋ํ ๊ณ ๋ ค x
โ Disk access ๋ถํ๊ฐ ์ ์ ๊ฒฝ์ฐ์ ์ ํฉ
SSTF (Shortest Seek Time First)
![](https://blog.kakaocdn.net/dn/p8CDX/btr1EevmAeD/s51mBxeCNIbG4DB3nSkWiK/img.png)
โ ํ์ฌ head ์์น์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ฒญ ๋จผ์ ์ฒ๋ฆฌ
โ ํ๊ท ์๋ต ์๊ฐ ↓
โ ์์ธก ๋ถ๊ฐ, starvation ํ์ ๋ฐ์
โ ์ผ๊ด์ฒ๋ฆฌ ์์คํ ์ ์ ํฉ (์ฒ๋ฆฌ ์๊ฐ > ์์)
Scan Scheduling
![](https://blog.kakaocdn.net/dn/6yil7/btr1yAMnqlS/QxYY6YnAZRfLsn7toOs2l0/img.png)
โ ํ์ฌ head์ ์งํ ๋ฐฉํฅ์์, head์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ฒญ ๋จผ์ ์ฒ๋ฆฌ
โ (์งํ๋ฐฉํฅ ๊ธฐ์ค)๋ง์ง๋ง cylinder ๋์ฐฉ ํ, ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์งํ
C-Scan (Circular Scan) Scheduling
![](https://blog.kakaocdn.net/dn/bqRLbd/btr1ddSPuyY/QwhitVk8wAIQvoR1534BrK/img.png)
โ Scan๊ณผ ์ ์ฌ
โ Head๊ฐ ๋ฏธ๋ฆฌ ์ ํด์ง ๋ฐฉํฅ์ผ๋ก๋ง ์ด๋
- ๋ง์ง๋ง cylinder ๋์ฐฉ ํ, ์์ cylinder๋ก ์ด๋ ํ ์ฌ์์
โ Scan ๋๋น ๊ท ๋ฑํ ๊ธฐํ ์ ๊ณต
Look Scheduling
![](https://blog.kakaocdn.net/dn/xPSHV/btr1vsgGHDq/lUAaFxRE6gZ2qiPAkr3j2k/img.png)
โ Elevator Algorithm
โ Scan(C-scan)์์ ํ์ฌ ์งํ ๋ฐฉํฅ์ ์์ฒญ์ด ์์ผ๋ฉด ๋ฐฉํฅ ์ ํ
12. RAID
โ Redundant Array of Inexpensive DIsks(RAID)
โ ์ฌ๋ฌ ๊ฐ์ ๋ฌผ๋ฆฌ disk๋ฅผ ํ๋์ ๋ ผ๋ฆฌ disk๋ก ์ฌ์ฉ
RAID 0
![](https://blog.kakaocdn.net/dn/bM1iQ5/btr06WKP6VV/QlQ3kw1jjfEyC5cLIdsyJk/img.png)
โ Disk striping
- ๋ ผ๋ฆฌ์ ์ธ ํ block์ ์ผ์ ํ ํฌ๊ธฐ๋ก ๋์ฐ์ด ๊ฐ disk์ ๋๋์ด ์ ์ฅ
โ ๋ชจ๋ disk์ ์ ์ถ๋ ฅ ๋ถํ ๊ท ๋ฑ ๋ถ๋ฐฐ
RAID 1
![](https://blog.kakaocdn.net/dn/eRKS49/btr1zmAsXxp/jw6Rs4uOtMj0vFKcctp141/img.png)
โ Disk mirroring
- ๋์ผํ ๋ฐ์ดํฐ๋ฅผ mirroring disk์ ์ค๋ณต ์ ์ฅ
โ ํ disk์ ์ฅ์ ๊ฐ ์๊ฒจ๋ ๋ฐ์ดํฐ ์์ค x
RAID 3
![](https://blog.kakaocdn.net/dn/M3wXU/btr06XbXeOH/Syfl9Oz8rHMO8QRcZg57Zk/img.png)
โ RAID 0 + parity disk
- Byte ๋จ์ ๋ถํ ์ ์ฅ
- ๋ชจ๋ disk์ ์ ์ถ๋ ฅ ๋ถํ ๊ท ๋ฑ ๋ถ๋ฐฐ
โ ํ disk์ ์ฅ์ ๋ฐ์ ์, parity ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๋ณต๊ตฌ
RAID 4
![](https://blog.kakaocdn.net/dn/doe3Ro/btr1lAzXYQ2/rL0pHtFZlezJY8KGcZ29LK/img.png)
โ RAID 3๊ณผ ์ ์ฌ, ๋จ block ๋จ์๋ก ๋ถ์ฐ ์ ์ฅ
- ๋ ๋ฆฝ๋ access ๋ฐฉ๋ฒ
- Disk๊ฐ ๊ท ๋ฑ ๋ถ๋ฐฐ๊ฐ ์๋ ์ ์์
RAID 5
![](https://blog.kakaocdn.net/dn/cBBMIK/btr1udcRw56/0cAPstLzGU2um0V4II7qZK/img.png)
โ RAID 4์ ์ ์ฌ
- ๋ ๋ฆฝ๋ access ๋ฐฉ๋ฒ
โ Parity ์ ๋ณด๋ฅผ ๊ฐ disk๋ค์ ๋ถ์ฐ ์ ์ฅ
- ๋ณ๋ชฉ ํ์ ํด์
โ ํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ RAID level ์ค ํ๋
'โญ Personal_Study > CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2023.03.11 |
---|---|
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ์ด์์ฒด์ 1 (3) | 2023.03.02 |
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ๋คํธ์ํฌ (0) | 2023.02.23 |
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ์๊ณ ๋ฆฌ์ฆ (0) | 2023.02.19 |
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ์๋ฃ๊ตฌ์กฐ (0) | 2023.02.12 |
๋๊ธ