Study/study

Managed code / Unmanaged code / Native code ์ฐจ์ด

์œค์ •_ 2025. 2. 27. 16:54

 

Managed code

[์ •์˜]

  • ๊ด€๋ฆฌํ˜• ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ

 

[ํŠน์ง•]

  • CLR(Common Language Runtime)์—์„œ ์‹คํ–‰๋˜๋ฉฐ CLR์€ ๋‹ค์–‘ํ•œ ๊ด€๋ฆฌ ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํ•ด์ œ๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜ํ•œ ์ž๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ๊ด€๋ฆฌํ˜• ํ™˜๊ฒฝ์ด ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

  • .NET Framework๋‚˜ Java ๊ฐ™์€ ๊ด€๋ฆฌํ˜• ๋Ÿฐํƒ€์ž„์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • CLR์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋””๋ฒ„๊น…๊ณผ ํ”„๋กœํŒŒ์ผ๋ง์„ ์ง€์›ํ•ด์ค๋‹ˆ๋‹ค.

 

[์˜ˆ์‹œ]

  • C#
  • VB.NET

 

 

Unmanaged code

[์ •์˜]

  • ์šด์˜์ฒด์ œ๋‚˜ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์˜ ์ž๋™ ๊ด€๋ฆฌ ์—†์ด ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ

 

[ํŠน์ง•]

  • ์šด์˜์ฒด์ œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ํ•ด์ œ(malloc ๋ฐ free)๋ฅผ ์ง์ ‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹ค์ˆ˜๋กœ ์ธํ•œ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ, ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ์˜ค๋ฅ˜ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ด€๋ฆฌํ˜• ์ฝ”๋“œ์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‹œ์Šคํ…œ ์ž์›์— ๋” ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์šด์˜์ฒด์ œ์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

[์˜ˆ์‹œ]

  • C, C++
  • Windows API์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ฝ”๋“œ

 

 

Native code

[์ •์˜]

  • ํŠน์ • ์šด์˜์ฒด์ œ์˜ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜๋œ ์ฝ”๋“œ๋กœ, ํ•ด๋‹น ์šด์˜์ฒด์ œ์—์„œ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ

 

[ํŠน์ง•]

  • ์šด์˜์ฒด์ œ์˜ ์•„ํ‚คํ…์ฒ˜์— ๋งž๊ฒŒ ์ž‘์„ฑ๋˜์–ด ํ•ด๋‹น ์‹œ์Šคํ…œ์—์„œ ์ตœ์ ํ™”๋˜์–ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ์šด์˜์ฒด์ œ์™€ ํ•˜๋“œ์›จ์–ด์˜ ํŠน์„ฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ํ”Œ๋žซํผ์—์„œ ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ทธ๋Ÿฌ๋‚˜ ํŠน์ • ์šด์˜์ฒด์ œ๋‚˜ ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ์ข…์†์ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, windows์—์„œ ์‹คํ–‰๋˜๋Š” native ์ฝ”๋“œ์™€ linux์—์„œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • ์ปดํŒŒ์ผ๋œ ๊ธฐ๊ณ„์–ด๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ๋งค์šฐ ์šฐ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

  • ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ปดํŒŒ์ผ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ด์‹์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค.

 

[์˜ˆ์‹œ]

  • C, C++๋กœ ์ž‘์„ฑ๋˜์–ด .exe, .dll๋กœ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ
  • ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด
  • ํ•˜๋“œ์›จ์–ด ๋“œ๋ผ์ด๋ฒ„๋‚˜ ์šด์˜์ฒด์ œ ์ปค๋„ ์ฝ”๋“œ

 

 


managed code๋Š” MS์—์„œ ๋งŒ๋“  ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„๋Œ€๋กœ code๊ฐ€ managed ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋กœ Java๋Š” JVM(Java Virtual Machine), C#์€ .NET Framework์˜ ๊ด€๋ฆฌ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

managed code์˜ ๋ฐ˜๋Œ“๋ง๋กœ unmanaged code ๋˜๋Š” native code๋ผ๊ณ  ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ‹€๋ฆฐ ๋ง์€ ์•„๋‹ˆ์ง€๋งŒ unmanaged code์™€ native code๊ฐ€ ๋™์˜์–ด๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

unmanaged code์™€ native code๋Š” managed code์™€ ๋‹ค๋ฅด๊ฒŒ ์ž๋™ ๊ด€๋ฆฌ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‘˜๋‹ค ์ง์ ‘์ ์ธ ๊ด€๋ฆฌ ์—†์ด ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. native code๋Š” unmanaged code์˜ ์ผ์ข…์œผ๋กœ ์šด์˜์ฒด์ œ์—์„œ ๋ฐ”๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.