๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‚จ์•„ ์žˆ๋Š”๋ฐ, ์™œ ์•ฑ์€ ๋ฉˆ์นซํ• ๊นŒ

Intro์•ฑ์ด ๋ฒ„๋ฒ…์ผ ๋•Œ ์šฐ๋ฆฌ๋Š” ๋ณดํ†ต ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค. “CPU๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์“ฐ๊ณ  ์žˆ๋‚˜?”“๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ๊ฐ€?” ๊ทธ๋Ÿฐ๋ฐ ์‹ค์ œ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚จ์•„ ์žˆ์–ด ๋ณด์—ฌ๋„์•ฑ์ด ์ˆœ๊ฐ„์ ์œผ๋กœ ๋ฉˆ์นซํ•˜๊ฑฐ๋‚˜, ์ฒ˜์Œ ์ง„์ž…ํ•  ๋•Œ ๋ฒ„๋ฒ…์ด๊ฑฐ๋‚˜,์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ ์ฝ๋Š” ์ˆœ๊ฐ„ ํ•œ ๋ฐ•์ž ๋Šฆ๋Š” ์ผ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์ด์œ ๋Š” ์•ฑ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ณผ์ •์€ ์ƒ๊ฐ๋ณด๋‹ค ๋‹จ์ˆœํ•˜์ง€ ์•Š๋‹ค.๋จผ์ € ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ฒˆ์—ญํ•ด์•ผ ํ•˜๊ณ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง RAM์— ์—†์œผ๋ฉด ๊ฐ€์ ธ์™€์•ผ ํ•˜๊ณ ์ด ๊ณผ์ • ์ž์ฒด๋„ ๋น„์šฉ์ด ๋“ ๋‹ค์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ, ํŽ˜์ด์ง€, page fault, TLB๋ฅผ ํ•˜๋‚˜์˜ ํ๋ฆ„์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.1. ์•ฑ์ด ํŒŒ์ผ์„ ์ฝ๋Š”๋‹ค๊ณ  ํ•ด์„œ, ํŒŒ์ผ ์ „์ฒด๊ฐ€ RAM์—..

์บ์‹œ ๋ผ์ธ๊ณผ ์ง€์—ญ์„ฑ: CPU๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํŒจํ„ด

Day 5) ์บ์‹œ/์ง€์—ญ์„ฑ: ๋ชจ๋ฐ”์ผ ์ฒด๊ฐ ์„ฑ๋Šฅ์˜ ํ•ต์‹ฌ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต: L1/L2/(๊ณต์œ  ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„ ์บ์‹œ) ↔ DRAM์บ์‹œ ๋ผ์ธ(cache line), ์ง€์—ญ์„ฑ(locality)ํฌ์ธํŠธ: ๊ฐ™์€ O(N)์ด๋ผ๋„ ์ ‘๊ทผ ํŒจํ„ด์ด ๋‹ค๋ฅด๋ฉด ์‹ค์ œ ์„ฑ๋Šฅ์€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค์ •๋ฆฌ ์งˆ๋ฌธ๋‚ด ์ฝ”๋“œ์—์„œ ‘๋žœ๋ค ์ ‘๊ทผ’์ด ๋˜๋Š” ๋ถ€๋ถ„์€ ์–ด๋””์ธ๊ฐ€?Intro์ฝ”๋“œ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.“๋‘˜ ๋‹ค O(N)์ด๋ฉด ์„ฑ๋Šฅ๋„ ๋น„์Šทํ•˜์ง€ ์•Š์„๊นŒ?”๊ทธ๋Ÿฐ๋ฐ ์‹ค์ œ CPU๋Š” ๊ทธ๋ ‡๊ฒŒ ๋‹จ์ˆœํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.CPU๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค DRAM์— ์ง์ ‘ ๊ฐ€์„œ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์ฝ์ง€ ์•Š๋Š”๋‹ค.ํ›จ์”ฌ ๊ฐ€๊นŒ์šด ์บ์‹œ(cache) ๋ฅผ ๋จผ์ € ํ™•์ธํ•˜๊ณ , ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋„ ๊ฐ’ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ cache line ๋‹จ์œ„๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. ์ฆ‰, ์„ฑ๋Šฅ์€ ๋‹จ์ˆœํžˆ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์ ‘๊ทผํ–ˆ..

์ปค๋„๋กœ ๋“ค์–ด๊ฐ€๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ Page Fault๊นŒ์ง€

0. ๋“ค์–ด๊ฐ€๊ธฐ์šด์˜์ฒด์ œ๋ฅผ ๋ณด๋ฉด ์šฉ์–ด๊ฐ€ ํ•œ ๋ฒˆ์— ๋“ฑ์žฅํ•œ๋‹ค.interrupt, system call, exceptionpage table, TLB, page faultswap, thrashing, working set์ด ๊ธ€์€ ๊ฐœ๋…์„ ๋‚˜์—ดํ•˜๊ธฐ๋ณด๋‹ค, ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์ •๋ฆฌํ•˜๋Š” ๊ฑธ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.1. ์ปค๋„๋กœ ๋“ค์–ด๊ฐ€๋Š” ์‚ฌ๊ฑด์€ 3๊ฐ€์ง€๋กœ ๋ฌถ์ธ๋‹คCPU๋Š” ์›๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•œ๋‹ค.๊ทธ๋Ÿฐ๋ฐ ์–ด๋–ค ์ˆœ๊ฐ„์—๋Š” ์‹คํ–‰์ด ๋Š๊ธฐ๊ณ  ์ปค๋„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.์ด ์‚ฌ๊ฑด์€ ํฌ๊ฒŒ 3๊ฐ€์ง€๋‹ค.1.1. Hardware Interrupt (์™ธ๋ถ€์—์„œ ๋“ค์–ด์˜ด)์™ธ๋ถ€ ์žฅ์น˜/ํƒ€์ด๋จธ/I/O ์™„๋ฃŒ/์ž…๋ ฅ ๊ฐ™์€ ์ด๋ฒคํŠธ๊ฐ€ ์›์ธ์ด๋‹ค.๋น„๋™๊ธฐ(asynchronous) ์„ฑ๊ฒฉ์ด๋ผ ํ˜„์žฌ ์ฝ”๋“œ ํ๋ฆ„๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.interrupt handler๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์ „ํ†ต์ ์œผ๋กœ..

Swift Hashable์€ ์™œ Equatable์„ ์ƒ์†ํ• ๊นŒ?

0. ์„œ๋ก Swift์—์„œ Hashable ํ”„๋กœํ† ์ฝœ์€ Equatable์„ ์ƒ์†ํ•œ๋‹ค.์ฆ‰ Hashable์„ ์ฑ„ํƒํ•˜๋ ค๋ฉด == ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•œ ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.์ด๋ฅผ ์ฒ˜์Œ ๋ดค์„ ๋•Œ “ํ•ด์‹œ๋งŒ ์žˆ์œผ๋ฉด ๋˜์ง€ ์™œ equality๊นŒ์ง€ ์–ธ์–ด ์ฐจ์›์—์„œ ๊ฐ•์ œํ• ๊นŒ”๋ผ๋Š” ์˜๋ฌธ์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด ์˜๋ฌธ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Dictionary/Set์˜ ๋™์ž‘ ๋ฐฉ์‹๊ณผ ํ•ด์‹œ ์ถฉ๋Œ(collision)์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ณ  ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.1. Dictionary์˜ Key์™€ Set์˜ Element๋Š” Hashable์ด์–ด์•ผ ํ•œ๋‹คSwift ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋‹ค์Œ์€ ์ด๋ฏธ ๊ฒฐ์ •๋˜์–ด ์žˆ๋‹ค.Dictionary์—์„œ Key๋Š” Hashable์ด์–ด์•ผ ํ•œ๋‹ค.Set์—์„œ Element๋Š” Hashable์ด์–ด์•ผ ํ•œ๋‹ค.์ฆ‰, ํ•ด์‹œ ๊ธฐ๋ฐ˜ ์ปฌ๋ ‰์…˜์˜ ๊ตฌ์„ฑ์›์ด ๋˜๋ ค๋ฉด Hashable..

๐ŸŽ Apple/Swift 2026. 2. 16. 23:50