[Malloc Lab] Overline

da__ellยท2022๋…„ 11์›” 3์ผ
0

MALLOC-LAB

๋ชฉ๋ก ๋ณด๊ธฐ
1/3
post-thumbnail

๐Ÿ“Œ ๋ชฉ์ 

๐Ÿ“ย ํ•ด๋‹น ์‹ค์Šต์„ ํ†ตํ•ด ์ง์ ‘ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ธฐ(storage allocator)๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

๐Ÿ“ย Malloc, Free, Realloc์„ ๊ตฌํ˜„ํ•œ๋‹ค.

๐Ÿ“ย mdriver๊ฐ€ memory ultilization(๋ฉ”๋ชจ๋ฆฌ ์ด์šฉ๋„), throughout(์ฒ˜๋ฆฌ๋Ÿ‰) ์ธก๋ฉด์—์„œ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•œ๋‹ค.

๐Ÿ“Œ ์™œ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

  • ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ด์œ ๋Š” ์ข…์ข… ์ด๋“ค์ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹ค์ œ๋กœ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์ „์—๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์ตœ๋Œ€ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์ •์  ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๋ฉด ํ•ด๊ฒฐ ๋  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ๊ณผ๋„ํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.
  • ๋˜ ๋ฐฐ์—ด์„ ์ •ํ•ด์ง„ ํฌ๊ธฐ๋ฅผ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ์ด์™€ ๊ฐ™์ด MAXN์ด๋ผ๋Š” ์ž„์˜์˜ ๊ฐ’์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜์˜€๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.
  • ๋งŒ์•ฝ ํ”„๋กœ๊ทธ๋žจ์˜ ์‚ฌ์šฉ์ž๊ฐ€ MAXN๋ณด๋‹ค ๋” ํฐ ํฌ๊ธฐ N๊ฐœ์˜ ํŒŒ์ผ์„ ์ฝ์œผ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, error๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค. (11-12ํ–‰ ์ฐธ๊ณ )
  • ๋‹ค์‹œ ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐฉ์‹๋„ ์žˆ์œผ๋‚˜ ํฐ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ๋‚˜ ์ฝ”๋“œ์—์„œ๋Š” ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ N์˜ ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ์„ ๋•Œ ๋ฐฐ์—ด์„ ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜๋˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ๊ฐ€์šฉํ•œ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘์— ์˜ํ•ด์„œ๋งŒ ์ œํ•œ๋˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•œ ๊ฒƒ์ด๋‹ค.

๐Ÿ“Œ What is important in implementation?

  • ๐Ÿ“‹ย  Indicator of Performance
    • Dynamic memory allocator์˜ ์„ฑ๋Šฅ์˜ ์ง€ํ‘œ๋Š” memory ultilization(๋ฉ”๋ชจ๋ฆฌ ์ด์šฉ๋„), throughout(์ฒ˜๋ฆฌ๋Ÿ‰)์ด๋‹ค.
    • memory utilization : heap segment๋ฅผ ๋‚ญ๋น„ํ•˜๋Š” ๊ณต๊ฐ„ ์—†์ด ์ฆ‰ fragmentation(๋‹จํŽธํ™”)๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ๋Œ€ํ•œ ์ €์žฅ(write)ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€์ด๋‹ค.
    • throughout : ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ application์˜ malloc, free, realloc ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€์˜ ๋ฌธ์ œ์ด๋‹ค.
    • ๋‘ ์ง€ํ‘œ๋Š” trade-off, ์ƒ์ถฉํ•˜๋Š” ๊ด€๊ณ„์ด๋ฏ€๋กœ ์ ์ ˆํ•œ ๊ท ํ˜•์„ ๋งž์ถ”์–ด์•ผ ํ•œ๋‹ค.
    • implicit๋ฐฉ์‹์„ ์˜ˆ๋กœ ๋“ค๋ฉด throughout์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ header์™€ footer์— size์™€ allocated์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋‹ด๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ application์ด ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋ฐ˜๋ฉด ์ด๋Ÿฌํ•œ overhead ๋ฐ์ดํ„ฐ๋Š” ๊ผญ ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ญ๋น„ํ•˜๋Š” ๊ณต๊ฐ„์— ํ•ด๋‹น๋˜๊ณ , ์ด๋Ÿฌํ•œ ์ ์œผ๋กœ ์ธํ•ด memory utilization์ด ๋‚ฎ์•„์ง„๋‹ค.

ํ•ด๋‹น ๊ธ€์€ ์ œ๊ฐ€ ์ดํ•ดํ•œ ์ˆ˜์ค€์œผ๋กœ ์ž‘์„ฑ๋œ ๊ธ€์ด๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ์„ ๋ฐํž˜

profile
daelkdev@gmail.com

0๊ฐœ์˜ ๋Œ“๊ธ€