๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (165)

Today, I will

[์ž๋ฃŒ๊ตฌ์กฐ, ํŒŒ์ด์ฌ] Linked list์˜ ํŠน์ง•๊ณผ ๊ตฌํ˜„, ์‹œ๊ฐ„๋ณต์žก๋„, ๋ฆฌํŠธ์ฝ”๋“œ ๋ฌธ์ œํ’€์ด

* ์ด๋ก ์„ ํ† ๋Œ€๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ ๋ฐœ์ƒ์‹œ ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ๋ฌผ๋ฆฌ์  ๋น„์—ฐ์†์ , ๋…ผ๋ฆฌ์  ์—ฐ์†์  Linked List๋Š” Node๋ผ๋Š” ๊ตฌ์กฐ์ฒด๊ฐ€ ์—ฐ๊ฒฐ๋˜๋Š” ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ์š”์†Œ(Node)๊ฐ€ ๋ฐ์ดํ„ฐ ๊ฐ’๊ณผ ๋‹ค์Œ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ(next node์˜ ์ฃผ์†Œ๊ฐ’)๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๊ฐ Node๋“ค์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋ฟ ์•„๋‹ˆ๋ผ, next node์˜ addr ์ •๋ณด๋„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋…ผ๋ฆฌ์ ์œผ๋กœ ์—ฐ์†์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Array์˜ ๊ฒฝ์šฐ ์—ฐ์†์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ, Linked lsit์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์ƒ์—์„œ ์—ฐ์†์„ฑ์„ ์œ ์ง€ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด..

[์ž๋ฃŒ๊ตฌ์กฐ] Array list์™€ ๋ฐฐ์—ด(Array) ๊ฐœ๋…๊ณผ ์žฅ๋‹จ์ , ์‹œ๊ฐ„๋ณต์žก๋„

1. List ์ž๋ฃŒ๊ตฌ์กฐ vs Set ์ž๋ฃŒ๊ตฌ์กฐ Set๊ณผ List๋Š” ๋‘˜ ๋‹ค ์„ ํ˜•์ž๋ฃŒ๊ตฌ์กฐ์ด์ง€๋งŒ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (1) ์ค‘๋ณต๋œ ์š”์†Œ (2) ์ˆœ์„œ๊ฐ€ ์žˆ๋Š”/์—†๋Š” (3) ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ (1) ์ค‘๋ณต ์š”์†Œ - Set์€ ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ์š”์†Œ๋Š” ์œ ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - List๋Š” ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์š”์†Œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (2) ์ˆœ์„œ - Set์€ ์ธ๋ฑ์Šค ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. [1,2,3],[2,1,3], [3,1,2]๊ฐ€ ๊ฐ ์ธ๋ฑ์Šค์™€ ๊ฐ’์ด ๋‹ฌ๋ผ๋„ set์— ๋“ค์–ด๊ฐ€๋ฉด [1,2,3]์œผ๋กœ ๋™์ผํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์š”์†Œ๊ฐ€ ์–ด๋–ค ์ˆœ์„œ๋กœ ๋“ค์–ด์˜ค๋“  ์ƒ๊ด€์—†์ด ํ•˜๋‚˜์”ฉ ์กด์žฌํ•œ๋‹ค๋Š” ์ ์—์„œ ๋ชจ๋‘ ๊ฐ™์€ set์ด ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์†Œ๋“ค์˜ ์ˆœ์„œ๋Š” ๊ตฌํ˜„์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ..

[์šด์˜์ฒด์ œ] ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์œ ์ €๋‹จ, ์ปค๋„๋‹จ ๊ฐœ๋… ์ •๋ฆฌ

๋ชฉ์ฐจ - (1) ์œ ์ €์˜์—ญ ์ปค๋„์˜์—ญ - (2) ์œ ์ €๋ชจ๋“œ ์ปค๋„๋ชจ๋“œ - (3) ์œ ์ €๋ ˆ๋ฒจ์“ฐ๋ ˆ๋“œ ์ปค๋„๋ ˆ๋ฒจ์“ฐ๋ ˆ๋“œ - (4) ์œ ์ €์Šคํƒ ์ปค๋„์Šคํƒ * ํ•€ํ† ์Šค ํ”„๋กœ์ ํŠธ1,2์— ์ž„ํ•˜๋ฉด์„œ ์ž‘์„ฑํ–ˆ๋˜ WIL์—์„œ ํ—ท๊ฐˆ๋ ธ๋˜ ์œ ์ €๋‹จ, ์ปค๋„๋‹จ ๊ฐœ๋…๋“ค๋งŒ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด๋‘” ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. (1) ์œ ์ €์˜์—ญ ์ปค๋„์˜์—ญ ์œ ์ € ์˜์—ญ : ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ → ์Šคํƒ ์˜์—ญ, ํž™ ์˜์—ญ, ๋ฐ์ดํ„ฐ ์˜์—ญ, ์ฝ”๋“œ ์˜์—ญ ์ปค๋„ ์˜์—ญ : ์šด์˜์ฒด์ œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์œ ์ € ์˜์—ญ์„ ์ œ์™ธํ•œ ์˜์—ญ ์ปค๋„์ด ์œ„์น˜ํ•จ + ์ปค๋„ : ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ๋ถ€๋กœ ์ปดํ“จํ„ฐ ์ž์›(CPU, ๋ฉ”๋ชจ๋ฆฌ, ํŒŒ์ผ ๋“ฑ)๋“ค์„ ๊ด€๋ฆฌํ•จ → ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ๋ถ€๋ถ„ = ์ปค๋„ โ€‹ ์ปค๋„์€ ์ปดํ“จํ„ฐ ์ž์›์„ ๊ด€๋ฆฌํ•˜๋ฉฐ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜์ง€ ์•Š์Œ (2) ์œ ์ €๋ชจ๋“œ..

[Pintos] Project 2 : syscall, ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ fdt

์‹œ์Šคํ…œ ์ฝœ(System Call) Argument Passing์—์„œ pintos์˜ ์ปค๋งจ๋“œ๋ผ์ธ์—์„œ ์ธ์ž๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ํŒจ์‹ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„์„ ํ–ˆ๋‹ค์ง€๋งŒ ์šฐ๋ฆฌ์˜ project2 ํ•€ํ† ์Šค์—์„œ๋Š” ์•„์ง ์‹œ์Šคํ…œ์ฝœ ํ•ธ๋“ค๋Ÿฌ์™€ ๊ฐ ์‹œ์Šคํ…œ ์ฝœ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ์ฝœ์ด ํ˜ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๋”ฐ๋ผ์„œ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋Œ€๋Œ€๋กœ ์“ฐ๊ณ , ์ฝ๊ณ , ์‹คํ–‰ํ•˜๋Š” ๋“ฑ์˜ ์ผ๋ จ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋ชจ๋“œ, ์ปค๋„๋ชจ๋“œ, ์ธํ„ฐ๋ŸฝํŠธ, ์‹œ์Šคํ…œ ์ฝœ์˜ ๊ด€๊ณ„ ์šด์˜์ฒด์ œ์—๋Š” ์‚ฌ์šฉ์ž ๋ชจ๋“œ(User mode)์™€ ์ปค๋„ ๋ชจ๋“œ(Kernel mode)๊ฐ€ ์žˆ๋Š”๋ฐ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ ์ž์›์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ปค๋„๋ชจ๋“œ๋Š” ์ปดํ“จํ„ฐ์˜ ๋ชจ๋“  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋””์Šคํฌ ์ฝ๊ธฐ์™€ ๊ฐ™์€ ๋ช…๋ น..

[Pintos] Project 2 : Argument Passing, ์ธํ„ฐ๋ŸฝํŠธ ํ”„๋ ˆ์ž„

1. Argument Passing ์ธ์ž ์ „๋‹ฌ Argument Passing์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ์ •๋ณด๋“ค(๋ช…๋ น์ค„ ์ธ์ž)์„ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ1) "grep apple fruits.txt"์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด, "grep"์€ ์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„์ด๋ฉฐ, "apple"์€ ๊ฒ€์ƒ‰ํ•  ๋‹จ์–ด, "fruits.txt"๋Š” ๊ฒ€์ƒ‰ ๋Œ€์ƒ ํŒŒ์ผ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ2) "gomoku start --size=15 --mode=multiplayer"์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ• ๋•Œ, "gomoku"๋Š” ์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„์ด๊ณ , "start"๋Š” ๊ฒŒ์ž„ ์‹œ์ž‘ ์˜ต์…˜, "--size=15"๋Š” ๊ฒŒ์ž„ํŒ์˜ ํฌ๊ธฐ๋ฅผ 15๋กœ ์„ค์ •, "--mode=multiplayer"๋Š” ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ๋ชจ๋“œ ๋“ฑ ์ด๋ ‡๊ฒŒ ์ž…๋ ฅ๋œ ์ •๋ณด๋ฅผ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ™œ..

์ •๊ธ€์‚ฌ๊ด€ํ•™๊ต 6๊ธฐ ํšŒ๊ณ , 7์ฃผ์ฐจ ๋ฉ‹์ง„ ์‚ฌ๋žŒ๋“ค ๋•๋ถ„์— ์„ฑ์žฅํ•˜๋‹ค

1. ์ •๊ธ€์‚ฌ๊ด€ํ•™๊ต 7์ฃผ์ฐจ ํšŒ๊ณ  ์•ˆ๋…•ํ•˜์„ธ์š”! FlyDuck Dev์ž…๋‹ˆ๋‹ค. ์ •๊ธ€ ์‚ฌ๊ด€ํ•™๊ต์—์„œ c์–ธ์–ด๋กœ ์†Œ์ผ“ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋งŒ๋‚œ 7์ฃผ์ฐจ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  8์ฃผ์ฐจ์— ์ ‘์–ด๋“ค์–ด ํ•œ์ฐฝ ์นด์ด์ŠคํŠธ ํ•€ํ† ์Šค ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 7์ฃผ์ฐจ๋Š” ์ดํƒ€์ ์ธ ํŒ€์›๋ถ„๋“ค ๋•๋ถ„์— ๋งŽ์€ ์„ฑ์žฅ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๊ธฐ๋ถ„ ์ข‹์€ ๋งˆ์Œ์œผ๋กœ ํŒ€ ์ „์›์ด ๋ฏธ์…˜์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ 7์ฃผ์ฐจ์— ๋А๋‚€ ์ข‹์€ ๋™๋ฃŒ์— ๋Œ€ํ•œ ๊ฐ์‚ฌ์™€ ์„ฑ์žฅ ๊ฒฝํ—˜์„ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ฒจ๋‘๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. 2. ์ฝ”์น˜๋‹˜์˜ ๊นœ์ง ๊ฐ•์—ฐ ๋ฐœ์ œ ์‹œ๊ฐ„์— ์˜ˆ์ƒ์น˜๋„ ๋ชปํ•œ ์ •์ฃผ์› ์ฝ”์น˜๋‹˜์˜ ๊นœ์ง ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…๋“ค์ด ๋Š˜ ๊ถ๊ธˆํ–ˆ์—ˆ๋Š”๋ฐ, ์ฝ”์น˜๋‹˜๊ป˜ ์ง์ ‘ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์„œ ์˜๊ด‘์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ๋‹ค์Œ ์ฃผ์—๋Š” ๊ถŒ์˜์ง„ ๊ต์ˆ˜๋‹˜์˜ OS ๊ฐ•์˜๊ฐ€ ์žˆ๋‹ค๋Š” ์†Œ์‹์„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์นด์ด์ŠคํŠธ..

[์ž๋ฐ”, ์Šคํ”„๋ง] ์Šคํ”„๋ง์€ ๊ฐ์ฒด ์ปจํ…Œ์ด๋„ˆ

* ์ตœ๋ฒ”๊ท ๋‹˜์˜ "์Šคํ”„๋ง5 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ" ์ฑ…์„ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ๋œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋ฉ”์ด๋ธ ์˜์กด ๊ทธ๋ž˜ํ”„ ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์€ ApplicationContext๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋˜์–ด ์žˆ๋‹ค. - BeanFactory ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ getBean() ๋ฉ”์„œ๋“œ๊ฐ€ BeanFacotry์— ์ •์˜๋˜์–ด ์žˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ ์ด์™ธ์— ์‹ฑ๊ธ€ํ†ค/ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค. - ApplicationContext ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฉ”์‹œ์ง€, ํ”„๋กœํ•„/ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€๋กœ ์ •์˜ํ•œ๋‹ค. - ๊ณ„์ธต๋„์˜ ๊ฐ€์žฅ ํ•˜๋‹จ์— ์œ„์น˜ํ•œ ์„ธ๊ฐœ์˜ ํด๋ž˜์Šค๋Š” BeanFactory์™€ A..

JAVA, SPRING 2023. 4. 19. 23:36