๐Ÿ–ฅ Computer Science/์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

97์ ์งœ๋ฆฌ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.. 100์  ๋„์ „์€ ํ•ด๋ณด์•˜๋Š”๋ฐ, ์ •์ƒ์ ์œผ๋กœ๋Š” ์•ˆ๋˜๋”๋ผ๊ตฌ์š”.. ํ˜น์‹œ ๋ˆ„๊ตฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ 100์ ์„ ๋ฐ›์•˜๋‹ค๋ฉด.. ์Šฌ์ฉ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.. ํ™”์ดํŒ…ํ•˜์„ธ์š” :)
๐Ÿง ํ”„๋กœ์„ธ์Šค ์šฐ์„  ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „์—, ํ”„๋กœ์„ธ์Šค์™€ ๊ฐ™์ด ์•Œ์•„๋‘์–ด์•ผ ํ•  ์šฉ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ํ”„๋กœ๊ทธ๋žจ๊ณผ Task์ž…๋‹ˆ๋‹ค. ๐Ÿ“• ํ”„๋กœ๊ทธ๋žจ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋“œ ๋””์Šคํฌ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์‹คํ–‰์ฝ”๋“œ๋ฅผ ๋œปํ•˜๋Š”๋ฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์นด์นด์˜คํ†ก, ์›Œ๋“œ, ํ•œ๊ธ€ ๋“ฑ์ด ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ์นด์นด์˜คํ†ก์„ ์˜ˆ์‹œ๋กœ ๊ณ„์† ์„ค๋ช…ํ•˜์ž๋ฉด, ์นด์นด์˜คํ†ก์„ ์ปดํ“จํ„ฐ์— ์„ค์น˜ํ•˜๊ธฐ๋งŒ ํ•ด์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์นด์นด์˜คํ†ก ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์—ฌ์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์นด์นด์˜คํ†ก ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” OS๊ฐ€ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ๋Š” User, Kernel, HW ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜์–ด์ง‘๋‹ˆ๋‹ค. ์นด์นด์˜คํ†ก, ์›Œ๋“œ ๋“ฑ์˜ ํ”„๋กœ๊ทธ๋žจ์€ User ์˜์—ญ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, Kernel ์˜์—ญ์—..
๐Ÿง ๋ถ„๋ฆฌ ๊ฐ€์šฉ ๋ฆฌ์ŠคํŠธ(Segregated free list) ์ด์ „ ๊ธ€๋“ค์—์„œ ์‚ดํŽด๋ณธ ๊ฒƒ๊ณผ ๊ฐ™์ด ๊ฐ€์šฉ ๋ธ”๋ก ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹จ ํ•œ๊ฐœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ํ• ๋‹น๊ธฐ๋Š” ํ•œ ๊ฐœ์˜ ๋ธ”๋ก์„ ํ• ๋‹นํ•˜๋Š” ๋ฐ ๋ธ”๋ก์˜ ์ˆ˜(ํ˜น์€ ๊ฐ€์šฉ ๋ธ”๋ก์˜ ์ˆ˜)์— ๋น„๋ก€ํ•˜๋Š” ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์•Œ๋ ค์ง„ ๋ถ„๋ฆฌ ์ €์žฅ์žฅ์น˜(Segregated Storage)๋Š” ๋‹ค์ˆ˜์˜ ๊ฐ€์šฉ ๋ฆฌ์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ๊ฐ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฑฐ์˜ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ๋ธ”๋ก๋“ค์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์•„์ด๋””์–ด๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๋ธ”๋ก์˜ ํฌ๊ธฐ๋ฅผ ํฌ๊ธฐ ํด๋ž˜์Šค(size class)๋ผ๊ณ  ํ•˜๋Š” ๋™์ผ ํด๋ž˜์Šค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํฌ๊ธฐ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์ ์€ ํฌ๊ธฐ์˜ ๋ธ”๋ก๋“ค์€ ๋งค ํฌ๊ธฐ๋งˆ๋‹ค ํด๋ž˜์Šค๋ฅผ ๊ฐ–๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.(2, 3, 4, ...) ํฌ๊ธฐ๊ฐ€ ํฐ ๊ฒฝ์šฐ์—..
๐Ÿง ๋ช…์‹œ์  ๋ฆฌ์ŠคํŠธ(Explicit List) ๋ฌต์‹œ์  ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ๋ธ”๋ก ํ• ๋‹น ์‹œ๊ฐ„์ด ์ „์ฒด ํž™ ๋ธ”๋ก์˜ ์ˆ˜์— ๋น„๋ก€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ช…์‹œ์  ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ์  ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹์€ ๊ฐ€์šฉ ๋ธ”๋ก๋“ค์„ ์ด์ „ ๊ฐ€์šฉ ๋ธ”๋Ÿญ๊ณผ ๋‹ค์Œ ๊ฐ€์šฉ ๋ธ”๋Ÿญ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง„ ์ผ์ข…์˜ ์ด์ค‘ ์—ฐ๊ฒฐ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ€์šฉ ๋ธ”๋Ÿญ์€ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํฌ์ธํ„ฐ๋“ค์€ ๊ฐ€์šฉ ๋ธ”๋ก์˜ ๋ณธ์ฒด ๋‚ด์— ์ €์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ ๊ทธ๋ฆผ์—์„œ์ฒ˜๋Ÿผ ๊ฐ ๊ฐ€์šฉ ๋ธ”๋ก ๋‚ด์— pred(predeccesor)์™€ succ(successor) ํฌ์ธํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ์ด์ค‘ ์—ฐ๊ฒฐ ๊ฐ€์šฉ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ• ๋‹น๋œ ๋ธ”๋ก์˜ ๊ตฌ์กฐ๋Š”..
์ด์ „ ๊ธ€์— ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์œผ๋กœ, ๊ฐ€์šฉ ๋ธ”๋ก์„ ๊ด€๋ฆฌํ•˜๋Š” ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ธ ๋ฌต์‹œ์  ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿง ๋ฌต์‹œ์  ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹ (Implicit List) ๐Ÿ‘‰ ํ—ค๋”(Header) ๋ชจ๋“  ํ• ๋‹น๊ธฐ๋Š” ๋ธ”๋ก ๊ฒฝ๊ณ„๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ํ• ๋‹น๋œ ๋ธ”๋ก๊ณผ ๊ฐ€์šฉ ๋ธ”๋ก์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ• ๋‹น๊ธฐ๊ฐ€ ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋ธ”๋ก ๋‚ด๋ถ€์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ 1๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋ก ์•ž์— ๋ธ”๋ก์˜ ํฌ๊ธฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ถ”๊ฐ€์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” 1 ์›Œ๋“œ๋ฅผ ํ—ค๋”(Header)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ—ค๋”๋Š” ๋ธ”๋ก ํฌ๊ธฐ์™€ ๋ธ”๋ก์ด ํ• ๋‹น๋˜์—ˆ๋Š”์ง€, ํ˜น์€ ๊ฐ€์šฉ ์ƒํƒœ์ธ์ง€๋ฅผ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋”๋ธ” ์›Œ๋“œ(8๋ฐ”์ดํŠธ) ์ •๋ ฌ ์ œ์•ฝ์กฐ๊ฑด์„ ์„ค์ •ํ•œ๋‹ค๋ฉด, ๋ธ”๋ก ํฌ๊ธฐ๋Š” ํ•ญ์ƒ 8์˜ ๋ฐฐ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ฆ‰ ๋ธ”๋ก ํฌ๊ธฐ์˜ ํ•˜์œ„ 3๋น„ํŠธ๋Š” ..
๐Ÿง ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์—๋Š” ๊ทธ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋Ÿฐํƒ€์ž„ ์‹œ์— ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ธฐ๋Š” ํž™(heap)์ด๋ผ๊ณ  ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‹œ์Šคํ…œ๋งˆ๋‹ค ๋‹ค๋ฅด์ง€๋งŒ, ์ผ๋ฐ˜ํ™”์˜ ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•˜์ง€ ์•Š๋Š” ํ•œ๋„์—์„œ, ํž™ ์˜์—ญ์ด ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์˜์—ญ ์ดํ›„๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์œ„์ชฝ(์ฃผ์†Œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ)์œผ๋กœ ์ปค์ง€๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋ผ ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•˜์—ฌ, ์ปค๋„์€ ํž™ ์˜์—ญ์˜ ๊ผญ๋Œ€๊ธฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ(brk ptr)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ธฐ๋Š” ํž™์„ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ๋ธ”๋ก ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋ช…์‹œ์ (Explicit)์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋ฌต์‹œ์ (Implici..
๐Ÿง Trace00 EOF(ctrl + d) ์ž…๋ ฅ์„ ๋ฐ›์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”๋ณด๊ธฐ main๋ฌธ์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. while(1)์„ ํ†ตํ•ด ์‰˜์„ ๊ณ„์† ์‹คํ–‰์‹œํ‚ค๋‹ค๊ฐ€ ctrl + d๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง Trace01 quit ๋ช…๋ น์–ด๋ฅผ built-in command๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. quit์ด ์ž…๋ ฅ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”๋ณด๊ธฐ void eval(char *cmdline) { cahr * argv[MAXARGS]; parseline(cmdline, argv); builtin_cmd(argv); return; } int builtin_cmd(char **argv) { char * cmd = argv[0]; if (!strcmp(cmd,..
๐Ÿง ์‹œ๊ทธ๋„ ์ด๋ฒคํŠธ๊ฐ€ ์‹œ์Šคํ…œ์— ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์งง์€ ๋ฉ”์„ธ์ง€ ์‹œ๊ทธ๋„์€ ์ƒ์œ„์ˆ˜์ค€์˜ ์†Œํ”„ํŠธ์›จ์–ด ํ˜•ํƒœ์˜ ์˜ˆ์™ธ์ ์ธ ์ œ์–ดํ๋ฆ„์œผ๋กœ์จ, ์‹œ๊ทธ๋„์€ ํ”„๋กœ์„ธ์Šค์™€ ์ปค๋„์ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ทธ๋„์€ ์˜ˆ์™ธ์ƒํ™ฉ๊ณผ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ปค๋„์—์„œ ์ถ”์ƒํ™”ํ•œ ๊ฐœ๋…์œผ๋กœ์จ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ปค๋„์ด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ๋กœ ์‹œ๊ทธ๋„์„ ๋ณด๋‚ด์ฃผ๋Š” ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์‹œ๊ทธ๋„์—๋Š” 30๊ฐœ์˜ ์ข…๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ฐ ์‹œ๊ทธ๋„์€ ์ •์ˆ˜ ์•„์ด๋””๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.(1 - 30) ์‹œ๊ทธ๋„์— ํฌํ•จ๋œ ์ •๋ณด๋Š” ์‹œ๊ทธ๋„์˜ ์•„์ด๋””์™€ ์‹œ๊ทธ๋„์ด ๋„์ฐฉํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ช‡๋ช‡ ์‹œ๊ทธ๋„๋“ค์ž…๋‹ˆ๋‹ค. ์‹œ๊ทธ๋„์„ ๋ชฉ์ ์ง€ ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ทธ๋„ ์†ก์‹ ๊ณผ ์‹œ๊ทธ๋„ ์ˆ˜์‹ ์˜ ๋‘ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๐Ÿง ์‹œ๊ทธ๋„ ์†ก์‹  ์ปค๋„์€ ๋ชฉ์ ์ง€ ํ”„๋กœ์„ธ์Šค์˜ ์ปจํ…์ŠคํŠธ ๋‚ด์— ์žˆ๋Š” ์ผ๋ถ€ ์ƒํƒœ๋ฅผ ๊ฐฑ..
๋ง ๋ž‘
'๐Ÿ–ฅ Computer Science/์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก