๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, Memory Architecture

  1. ์šด์˜์ฒด์ œ OS
  • ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•จ.
  1. ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ
  • ์ปดํ“จํ„ฐ์— ์žฅ์ฐฉ๋œ RAM(Random Access Memory)
  • ์ž„์˜ ์œ„์น˜์—์„œ ๋™์ผํ•œ ์‹œ๊ฐ„์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•œ๋‹ค.
  • ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ ์ €์žฅ์— ์šฉ์ดํ•จ.
  1. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ
  • RAM์˜ ๋ถ€์กฑ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด OS์— ์˜ํ•ด RAM์ฒ˜๋Ÿผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ.
  • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” Pasing๋˜์–ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ด๋™ํ•จ.
  1. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ณต๊ฐ„
  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง€๋Š” ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„
  • 32bit ํ”„๋กœ์„ธ์Šค: 4GB, 64bit ํ”„๋กœ์„ธ์Šค: 16E
  • ์ฝ”๋“œ ์˜์—ญ, ๋ฐ์ดํ„ฐ ์˜์—ญ, ํž™, ์Šคํƒ
  • ์ฝ”๋“œ ์˜์—ญ: ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๊ฐ€ ์œ„์น˜ํ•จ.
  • ๋ฐ์ดํ„ฐ ์˜์—ญ: ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜๊ฐ€ ์œ„์น˜ํ•จ.
  • ํž™(Heap): ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์œ„ํ•ด ์‚ฌ์šฉ๋จ
  • ์Šคํƒ(Stack): ์ง€์—ญ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ •๋ณด๋ฅผ ์ €์žฅํ•จ.
  1. Commit ์˜์—ญ

  2. Reserve ์˜์—ญ

  3. Free ์˜์—ญ

  4. Pasing ๋ฉ”๋ชจ๋ฆฌ

C# (.NET) ํƒ€์ž…

ํƒ€์ž… ๊ตฌ๋ถ„ ๋‚ด์žฅ ํƒ€์ž… ์ •์˜ ํƒ€์ž…
๊ฐ’ ํƒ€์ž… char, int, long, float, double โ€ฆ enum, struct
์ฐธ์กฐ ํƒ€์ž… object, string class, delegate, interface

struct ๊ฐ’ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

์‚ฌ์šฉ์ž ์ง€์ • struct ๊ตฌ์กฐ์ฒด์™€, intํ˜•์‹์€ ๊ฐ’ํƒ€์ž…์ด๋‹ค.

class ์ฐธ์กฐ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๊ตฌ์กฐ

class๋Š” new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋˜๊ณ , ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ ํฌ์ธํ„ฐ ์—ญํ• ์„ ํ•œ๋‹ค.

Blocking

Non-blocking

System.Threading:

  • System.Threading ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ฃผ๋กœ ์Šค๋ ˆ๋“œ ๋ฐ ๋™๊ธฐํ™” ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ.
  • ์Šค๋ ˆ๋“œ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๊ณ , ๋ฝ, ๋ฎคํ…์Šค, ์ด๋ฒคํŠธ ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ๋™๊ธฐํ™”๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • ์ฃผ์š” ํด๋ž˜์Šค
    • Thread: ์ง์ ‘ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Mutex, Semaphore, AutoResetEvent, ManualResetEvent: ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”์™€ ๊ด€๋ จ๋œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
    • Timer: ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ด๋จธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

System.Threading.Tasks:

  • System.Threading.Tasks ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ฃผ๋กœ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ ๋ณ‘๋ ฌ ์ž‘์—… ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋จ.
  • ์ž‘์—…(Task)์„ ํ†ตํ•ด ๋น„๋™๊ธฐ ๋ฐ ๋ณ‘๋ ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • Task ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ .NET์˜ async/await ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•จ

  • ์ฃผ์š” ํด๋ž˜์Šค:
    • Task: ์ž‘์—… ๋‹จ์œ„๋กœ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Task: ํŠน์ • ํƒ€์ž…์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • TaskFactory, TaskScheduler: ์ž‘์—…์„ ์Šค์ผ€์ค„๋งํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • โ€ป๋Š” ์ œ๋„ค๋ฆญ ํƒ€์ž… Generic Type์„ ์ •์˜ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๋‹ค. Type์˜ ์•ฝ์ž