๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

mutatingmutating์€ ๊ฐ’ ํƒ€์ž…์ธ ๊ตฌ์กฐ์ฒด๋‚˜ ์—ด๊ฑฐํ˜•์˜ ๋ฉ”์„œ๋“œ์—์„œ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค.struct Person { var name: String mutating func changeName() { name = "Lee" }}var person = Person(name: "Kim")person.changeName()print(person.name) // Lee ๊ตฌ์กฐ์ฒด๋‚˜ ์—ด๊ฑฐํ˜•์—์„œ๋งŒ mutating์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ตฌ์กฐ์ฒด๋‚˜ ์—ด๊ฑฐํ˜•์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์— mutating์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.๊ตฌ์กฐ์ฒด์™€ ์—ด๊ฑฐํ˜•์€ ๊ฐ’ ํƒ€์ž…์ด๊ณ , ๊ฐ’ ํƒ€์ž…์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต์‚ฌํ•˜๋ฉด ์›๋ณธ ๋ฐ์ดํ„ฐ๋Š” ๊ทธ๋Œ€๋กœ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ..
Multiple-Processor Scheduling(๋‹ค์ค‘ ์ฒ˜๋ฆฌ๊ธฐ ์Šค์ผ€์ค„๋ง)๋‹ค์ค‘ ์ฒ˜๋ฆฌ๊ธฐ ์Šค์ผ€์ค„๋ง์€ CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ํ™˜๊ฒฝ์—์„œ์˜ ์Šค์ผ€์ค„๋ง์œผ๋กœ, ๋”์šฑ ๋ณต์žกํ•ด์ง„๋‹ค. โ–  Homogeneous Processor์ธ ๊ฒฝ์šฐ (์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ํ™˜๊ฒฝ)Queue์— ํ•œ ์ค„๋กœ ์„ธ์›Œ์„œ ๊ฐ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์•Œ์•„์„œ ๊บผ๋‚ด๊ฐ€๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.๋ฐ˜๋“œ์‹œ ํŠน์ • ํ”„๋กœ์„ธ์„œ์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ๋” ๋ณต์žกํ•ด์ง„๋‹ค. โ–  Long Sharing์ผ๋ถ€ ํ”„๋กœ์„ธ์„œ์— job์ด ๋ชฐ๋ฆฌ์ง€ ์•Š๋„๋ก ๋ถ€ํ•˜๋ฅผ ์ ์ ˆํžˆ ๊ณต์œ ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•˜๋‹ค.๋ณ„๊ฐœ์˜ ํ๋ฅผ ๋‘๋Š” ๋ฐฉ๋ฒ• vs. ๊ณต๋™ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• โ–  Symmetric Multiprocessing (SMP)๋ชจ๋“  CPU๋“ค์ด ๋Œ€๋“ฑํ•˜๊ฒŒ ์ผ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๊ฐ์ž ์•Œ์•„์„œ ์Šค์ผ€์ค„๋ง ๊ฒฐ์ • โ–  Asy..
CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜nonpreemptive(๋น„์„ ์ ํ˜•)CPU๋ฅผ ๊ฐ•์ œ๋กœ ๋นผ์•—์ง€ ์•Š๊ณ  ์ž์ง„ ๋ฐ˜๋‚ฉํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ์ฃผ์—ˆ์„ ๋•Œ ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋‹ค ์‚ฌ์šฉํ•˜๊ณ  ๋‚ด์–ด๋†“์„ ๋•Œ๊นŒ์ง€ ๋นผ์•—์ง€ ์•Š๋Š”๋‹ค. preemptive(์„ ์ ํ˜•)CPU๋ฅผ ๊ฐ•์ œ๋กœ ๋นผ์•—์Œํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ์ฃผ์—ˆ๋‹ค๊ฐ€๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ฃผ์–ด์•ผ ํ•  ๋•Œ ๋นผ์•—๋Š”๋‹ค. CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜1๏ธโƒฃ FCFS (First-Come First-Served)๋จผ์ € ์˜จ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์„ ์ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ๋จผ์ € ์˜จ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ฒ„ํ‹ฐ๊ณ  ์žˆ๋А๋ƒ์— ๋”ฐ๋ผ์„œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ต‰์žฅํžˆ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์€ ์Šค์ผ€์ค„๋ง ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค. โ–  Convoy Effect (ํ˜ธ์œ„ ํšจ๊ณผ)๊ธด burst time์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์งง์€ burst time์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค ์•ž์—์„œ ..
CPU ์Šค์ผ€์ค„๋งCPU ์Šค์ผ€์ค„๋ง์ด๋ž€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์กด์žฌํ•  ๋•Œ ์–ด๋А ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ๋จผ์ € ์ค„ ๊ฒƒ์ธ์ง€, ์–ผ๋งˆ๋งŒํผ์˜ ์‹œ๊ฐ„ ๋™์•ˆ CPU๋ฅผ ์ค„ ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. CPU and I/O Bursts in Program Executionํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์˜ ์ผ์ƒ์€ ์‹œ์ž‘๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€ CPU burst์™€ I/O burst๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.burst๋Š” ํ•œ ์ž‘์—…์„ ์—ฐ์†์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.CPU burst: CPU์—์„œ ๊ธฐ๊ณ„์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„I/O burst: I/O ์ž‘์—… ๋‹จ๊ณ„ CPU-burst Time์˜ ๋ถ„ํฌ ์–ด๋А ์ž‘์—…์—๊ฒŒ CPU๋ฅผ ์„ ์ ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ /๊ณต์ •ํ•œ ๊ฒƒ์ผ๊นŒ?์‹œ์Šคํ…œ ์•ˆ์—์„œ ์ด์งˆ์ ์ธ ์ž‘์—…๋“ค์ด ์„ž์—ฌ ์žˆ์ง€ ์•Š๋‹ค๋ฉด CPU ์Šค์ผ€์ค„๋ง์ด ์ค‘์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.CPU๋ฅผ ์˜ค๋ž˜ ์‚ฌ์šฉํ•˜๋ ค๋Š” job๊ณผ ..
ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ (Process Creation)๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณต์ œ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋•Œ ๋ถ€๋ชจ์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋ณ„๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋œ๋‹ค.์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ ์ง์ ‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์šด์˜์ฒด์ œ์—๊ฒŒ System Call์„ ์š”์ฒญํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค. (fork() System Call)ํ”„๋กœ์„ธ์Šค์˜ ํŠธ๋ฆฌ(๊ณ„์ธต ๊ตฌ์กฐ) ํ˜•์„ฑํ”„๋กœ์„ธ์Šค๋Š” ์ž์›์„ ํ•„์š”๋กœ ํ•จ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ๋ฐ›๊ณ , ๋ถ€๋ชจ์™€ ๊ณต์œ ํ•œ๋‹ค.๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค๋ผ๋ฆฌ๋Š” ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ž์›์„ ์–ป์œผ๋ ค๊ณ  ๊ฒฝ์Ÿํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ถ€๋ชจ์™€ ์ž์‹ ๊ด€๊ณ„์˜ ํ”„๋กœ์„ธ์Šค ๋“ค์€ ์ด๋ก€์ ์ธ ๊ฒฝ์šฐ๋กœ ์•ฝ๊ฐ„์˜ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.์ž์›์˜ ๊ณต์œ ๋ถ€๋ชจ์™€ ์ž์‹์ด ๋ชจ๋“  ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ๋ชจ๋ธ์ผ๋ถ€๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ชจ๋ธ์ „ํ˜€ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋ธ์ˆ˜ํ–‰(Execution)๋ถ€๋ชจ์™€ ์ž์‹์€ ๊ณต์กดํ•˜๋ฉฐ ์ˆ˜ํ–‰๋˜๋Š” ..
Threadํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ CPU ์ˆ˜ํ–‰ ๋‹จ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ๊ฐ๊ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์ด ์ƒ์„ฑ๋˜๊ณ , ์šด์˜์ฒด์ œ๊ฐ€ ์ด ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ PCB๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.์ด๋•Œ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘์„ ํ•  ๋•Œ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋ฉด ๊ณต๊ฐ„ ๋‚ญ๋น„๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Thread๋ฅผ ๋‘”๋‹ค. ๋™์ผํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ƒ์„ฑ๋œ๋‹ค. ๊ฐ๊ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ถ„์˜ code๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ํ”„๋กœ์„ธ์Šค์—์„œ CPU ์ˆ˜ํ–‰๊ณผ ๊ด€๋ จ๋œ ๋ถ€๋ถ„๋งŒ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Thread๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.๊ทธ ์™ธ์˜ ๋ถ€๋ถ„๋“ค์€ ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค๋กœ ๊ณต์œ ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋™์ž‘ํ•œ๋‹ค. Thread์˜ ์žฅ์ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฌธ๋งฅ ๊ตํ™˜์€ context๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ณต์›ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ..
ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ๋…“Process is a program in execution.”์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ(Context)CPU ์ˆ˜ํ–‰ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋“œ์›จ์–ด ๋ฌธ๋งฅ์œผ๋กœ, CPU์—์„œ ๋ฌด์—‡์„, ์–ด๋–ป๊ฒŒ, ์–ด๋””๊นŒ์ง€ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.Program Counter๊ฐ์ข… registerํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ๋งฅ ์š”์†Œcode, data, stackํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ์ปค๋„ ์ž๋ฃŒ ๊ตฌ์กฐPCBkernel stack ํ”„๋กœ์„ธ์Šค ์ƒํƒœ(Process State)ํ”„๋กœ์„ธ์Šค๋Š” ์ƒํƒœ(state)๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉฐ ์ˆ˜ํ–‰๋œ๋‹ค. New(์ƒ์„ฑ)ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ ์ค‘์ธ ์ƒํƒœReady(์ค€๋น„)CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ (๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ๋‹ค๋ฅธ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๊ณ )ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š”..
ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ (๋ฉ”๋ชจ๋ฆฌ Load)ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๋‹จ๊ณ„ํ”„๋กœ๊ทธ๋žจ์€ File System์— ์‹คํ–‰ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.์‹คํ–‰ ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ์‹คํ–‰ ํŒŒ์ผ์€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋œ๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ(Virtual Memory)์‹คํ–‰ ํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ธฐ ์ „์— ํ•œ ๋‹จ๊ณ„๋ฅผ ๋” ๊ฑฐ์นœ๋‹ค.๊ฐ๊ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ๋Š” ๊ทธ ํ”„๋กœ๊ทธ๋žจ์˜ ๋…์ž์ ์ธ ์ฃผ์†Œ ๊ณต๊ฐ„(Adress Space)์ด ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ์ด๋ฅผ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค.๋‹น์žฅ ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๋‚˜๋จธ์ง€๋Š” Swap Area์— ๋ฐฐ์น˜๋œ๋‹ค. ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ๋‚ด์šฉCode์‹คํ–‰ ํŒŒ์ผ์— ์žˆ๋Š” ์ฝ”๋“œ์‹ค์ œ๋กœ CPU์—์„œ ์‹คํ–‰ํ•  ๊ธฐ๊ณ„์–ด๋“ค์ด ์œ„์น˜ํ•ด ์žˆ๋Š” ๊ณณData๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์ „์—ญ ๋ณ€์ˆ˜๋‚˜ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜๊ณ  ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๋‚จ์•„ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€..
๊ทธ๋ž˜ํ”„(Graph)๊ทธ๋ž˜ํ”„๋Š” ๋…ธ๋“œ์™€ ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ํ‘œํ˜„ํ•˜๋Š” ํ˜•ํƒœ๋กœ, ๊ฐ ์ •์  ๊ฐ„์—๋Š” ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๊ฐ€ ์—†๋‹ค.๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS), ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ์‹์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜ํ”„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋…ธ๋“œ/์ •์ (Vertex): ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ธฐ๋ณธ ๊ฐ์ฒด๊ฐ„์„ (Edge): ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์„ ์ธ์ ‘ ์ •์ : ๊ฐ„์„ ์— ์˜ํ•ด ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋กœ, ํ•œ ์ •์ ์—์„œ ๊ฐ„์„ ์„ ํ•œ ๋ฒˆ์— ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์ •์ ๋“ค์€ ์ธ์ ‘ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.๋‹จ์ˆœ ๊ฒฝ๋กœ: ๊ฒฝ๋กœ ์ค‘์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ์ •์ ์ด ์—†๋Š” ๊ฒฝ์šฐ ๊ทธ๋ž˜ํ”„ ์ข…๋ฅ˜๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ชจ๋“  ๊ฐ„์„ ์ด ์–‘๋ฐฉํ–ฅ์ธ ๊ทธ๋ž˜ํ”„๋กœ, ๋ฐฉํ–ฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–‘์ชฝ์˜ ๋ฐฉํ–ฅ ๋ชจ๋‘ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๊ฐ„์„ ๋“ค์˜ ๋ฐฉํ–ฅ์ด ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋กœ, ..
์˜์กด์„ฑ์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐํ•œ ํด๋ž˜์Šค์—์„œ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ์ ‘๊ทผํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ์ ‘๊ทผ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํด๋ž˜์ŠคB๋Š” ํด๋ž˜์ŠคA์— ์˜์กดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.์˜์กด์„ฑ์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด ์‚ฌ์ด์— ์˜์กด ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.class A { var name: String = "A"}class B { // ํด๋ž˜์ŠคB๋Š” ํด๋ž˜์ŠคA์— ์˜์กดํ•œ๋‹ค. (์˜์กด์„ฑ์ด ์ƒ๊ธด๋‹ค.) var a: A = A() func printName() { print(a.name) }}let b: B = B()b.printName() // "A" ์˜์กด์„ฑ ์ฃผ์ž…์ด๋ ‡๊ฒŒ ์˜์กด์„ฑ์ด ์ƒ๊ธฐ๋Š” ์ฝ”๋“œ๋“ค์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค ๋‚ด์˜ ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์˜์กดํ•˜๊ณ  ์žˆ๋˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋“ค๋„ ์ˆ˜์ •ํ•ด ์ฃผ์–ด์•ผ ํ•˜๊ธฐ ..
kiuun
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)