๐Ÿ’ก struct OS PintOS;

ALL OS Posted by Sunio on February 03, 2021 · 5 mins read

์šด์˜์ฒด์ œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋‹ค. 03.02.ํ™” (์ˆ˜์ •).

Tools

  • C, AWS Linux, ๋ญ ๊ธฐํƒ€ ๋“ฑ๋“ฑ โ€ฆ

๊ฐ์ƒ ํšŒ๊ณ 

๐ŸŽฐ[3์ฃผ์ฐจ]
์ž์กด๊ฐ์ด ๋ฐ”๋‹ฅ์„ ์น˜๋Š” ๊ฒฝํ—˜์„ ํ•˜๊ณ ์‹ถ์œผ๋ฉด ๋ฐ”๋กœ ํ•€ํ† ์Šค ๊ฐœ๋ฐœ์„ ํ•˜๋ผ๊ณ  ๊ถŒํ•˜๊ณ  ์‹ถ๋‹ค.
CS๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ณผ์ •์ด ๋‚ด ๋‚˜๋ฆ„ ์ ์„ฑ์— ๋งž๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๊ทน์‹ฌํ•œ ์šฐ์šธ๊ฐ๊ณผ ํ•จ๊ป˜ ์ง„๋กœ์— ๋Œ€ํ•ด ์‹ฌ๊ฐํ•˜๊ฒŒ ๊ณ ๋ฏผํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.
gdb๋ฅผ ์ข€ ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ–ˆ์œผ๋ฉด ๋””๋ฒ„๊น…์ด ๋” ์‰ฌ์—ˆ์„๊นŒ ์‹ถ์ง€๋งŒ, ๋‚˜์˜ ๋นˆํ‹ˆ์—†๋Š”(์ง„์งœ ์—†์—ˆ๋‹ค.) printf ์•ž์—์„œ ๋ฌด๋„ˆ์ ธ ๋‚ด๋ ค๊ฐ€๋Š” fail ์ˆ˜์— ๋งŒ์กฑํ•˜๊ณ  ๊ทธ๋ƒฅ ์ง„ํ–‰ํ–ˆ๋‹ค.
์ด๋ฒˆ ์ฃผ์ฐจ์˜ ํ•€ํ† ์Šค ๋นก์นจ ํฌ์ธํŠธ๋Š” ์ดํ•ด๋ฅผ ์กฐ๊ธˆ ํ–ˆ๋‹ค์‹ถ์œผ๋ฉด, ๋ชจ์ž๋ž€ ์ง€์‹์˜ ๊นŠ์ด๋ฅผ ์ธ์ •ํ•˜๊ณ  ์ฑ…๊ณผ gitbook์„ ํŽด๋ณด๊ฒŒ ๋˜๋Š” ๋ถ€๋„๋Ÿฌ์šด ๋‚ด ์ž์‹ ์„ ๋ณด๋Š” ๊ฒƒ๊ณผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ํ•˜๊ณ  ๋‚œ ๋’ค์— make check ํ•˜์—ฌ ๋ถ„๋ช…ํžˆ pass๊ฐ€ ๋œฌ tc์—์„œ ๋ฌด์–ธ๊ฐ€ ์ฐธ์‹ ํ•œ ์ƒˆ๋ผ ๊ฐ€ ๋‚˜์™€์„œ ๋‚˜๋ฅผ ๊ดด๋กญํžˆ๋Š” ๊ฒƒ์„ ์ง€์ผœ๋ณด๋Š” ์ผ์ธ๋ฐ, ๋‘๋”์ง€ ๊ฒŒ์ž„ ๋งˆ๋ƒฅ ํ•ญ์ƒ ๋‹ค๋ฅธ ํƒ€์ด๋ฐ์— ๋‹ค๋ฅธ ๊ณต๊ฐ„์—์„œ ๊ฐ€๋”์”ฉ ์–ผ๊ตด์„ ๋‚ด๋ฏผ๋‹ค.
๋ˆ„๊ฐ€ ์ด๊ธฐ๋‚˜ ๋ณด์ž๋Š” ์‹์œผ๋กœ ๋‘๋“œ๋ฆฌ๋Š” ์ˆ˜์‹ญ๋ฒˆ์˜ make check์—์„œ pass๊ฐ€ ๋œจ๊ธธ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์ž๋ฉด ํŒŒ์นญ์ฝ” ์žฅ์— ์˜จ ๊ธฐ๋ถ„์„ ๋Š๋‚„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์ฐํžˆ๋Š” addr๋„ 0x18์ธ๋ฐ ์š•๋งŒ ๋Š˜๊ณ  ๋ฏธ์น  ๊ฒƒ ๊ฐ™๋‹ค. ์ฃผ๋ณ€์˜ ๋งŽ์€ ๋„์›€์œผ๋กœ ๋†’์€ ํ™•๋ฅ ๋กœ tc๋ฅผ ํ†ต๊ณผํ•˜๊ณ  ์žˆ์ง€๋งŒ coccurrency๋ฅผ ์™„์ „ํžˆ ์ •๋ณตํ•˜์ง€ ๋ชปํ•˜๋ฉด ๊ณ„์† ์ด ์ง€๊ฒฝ์ผ ๊ฑด๋ฐ deadline์ด ์ง€๋‚œ ์ด ์‹œ์ ์— ํŒจ๋ฐฐ๊ฐ์ด ๋ฐ€๋ ค์˜จ๋‹ค. ํŒจํ‡ดํ–ˆ๋‹ค.
PROJECT3๋Š” VIRTUAL MEMORY๋ฅผ ์ฃผ์ œ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ƒ์—์„œ ๊ฐ€์ƒ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ๋ฐ›์•„ ๋ฌผ๋ฆฌ์ ์ธ ํ•œ๊ณ„๋ฅผ ๋›ฐ์–ด๋„˜์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŠธ๋ฆญ์„ ์ƒ์„ฑํ•ด OS, Kernel์ด ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.
์ด์ „ ์ฃผ์ฐจ๊นŒ์ง€์˜ ํ•€ํ† ์Šค๊ฐ€ Kernel space์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋˜ ๊ฒƒ์„ Virtual Memory์˜ ๊ฐœ๋…์œผ๋กœ์„œ์˜ ๋ณธ์—ฐ์˜ ๋ชฉ์ ์„ ๊ฐ€์ง€๋„๋ก ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ๋˜์—ˆ๋‹ค. ์ต๋ช… ํŽ˜์ด์ง€์™€ ํŒŒ์ผ ํŽ˜์ด์ง€ ๋“ฑ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํŠน์ง•๊ณผ ์ผ์ • ํฌ๊ธฐ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ข€ ๋” ํ™•์žฅํ•˜์—ฌ ๋งŽ์€ ์ •๋ณด๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ€์ง€๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์ด ํ•„์š”ํ•œ ๊ฒƒ์€ ์—ญ์‹œ๋‚˜ ์‹œ๊ฐ„์ด๋ผ๋Š” ๊ฒƒ(๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋Š”๊ฑด ๊ธฐ๋ณธ์ด๊ณ )์„ ๋‹จ์ถ•ํ•˜๊ธฐ ์œ„ํ•จ์ธ๋ฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ๋ฌผ๋ฆฌ์ ์ธ ์—ฐ๊ฒฐ์„ ์ตœ๋Œ€ํ•œ ์ง€์–‘ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋…ธ๋ ฅ์˜ ์ผํ™˜์ด๋ผ๊ณ  ํ•ด์„ํ•˜๊ณ  ์žˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์ ์žฌํ•จ(Swap In/Swap Out)์œผ๋กœ์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.
์•„์ง๋„ ๋””๋ฒ„๊น…์„ ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋‹ค์Œ ์ฃผ์ฐจ๊นŒ์ง€ ํŒ€์›๋“ค๊ณผ ์–ต์ง€ ํŒŒ์ดํŒ…์„ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๐Ÿ“—[2์ฃผ์ฐจ]
USER PROGRAMMING์„ ๊ฐœ๋ฐœํ•˜๋Š” 2์ฃผ์ฐจ๋ฅผ ๋งˆ์ณค๋‹ค. /USERPROG/ ์•ˆ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ 92๊ฐœ๊ฐ€ ์žˆ๋Š”๋ฐ ํŠน์ • ์ผ€์ด์Šค๋ฅผ ์œ„ํ•ด ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์„ ๊ฒช์œผ๋ฉด, ๋งž์•˜๋˜๊ฒŒ ํ‹€๋ฆฌ๊ณ , 3๊ฐœ์˜ fail์ด ๋œจ๋˜ ์ค‘ ์ˆ˜์ •์„ ํ•˜๋‹ˆ 23๊ฐœ๊ฐ€ ํ‹€๋ฆฌ๋Š” ๊ธฐ์ด ํ˜„์ƒ์„ ์ž์ฃผ ๊ฒฝํ—˜ํ–ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ์ฝ”๋“œ๊ฐ€ ์œ ๊ธฐ์ ์œผ๋กœ ๋Œ์•„๊ฐ€๋Š”์ง€ ์ง์ ‘ ๋Š๋‚„ ์ˆ˜ ์žˆ์–ด์„œ ์‹ ๊ธฐํ•˜๋ฉด์„œ๋„ ๊ต‰์žฅํ•œ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›๊ฒŒ ๋˜์—ˆ๋‹ค.
์‚ฌ์‹ค, ๋Œ์ด์ผœ๋ณด๋‹ˆ ๋ถ€๋ถ„์ ์ธ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ํž˜์“ฐ๋Š๋ผ ์ „์ฒด์ ์ธ ํ๋ฆ„๊ณผ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์ƒ์„ธํ•˜๊ฒŒ ๊ธฐ์ˆ ํ•  ์ •๋„๋กœ ์ต์ˆ™ํ•˜์ง€๋Š” ๋ชปํ•˜๋‹ค. ๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ, ์ถ”๊ฐ€์ ์œผ๋กœ ์ด์— ๋Œ€ํ•ด ๋” ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๊ฑฐ๋‚˜, ์ด ํ›„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์ง€์‹์„ ๊พธ์ค€ํžˆ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ด ์–ด์ฉŒ๋ฉด ๋‹น์—ฐํ•ด ๋ณด์ธ๋‹ค.
์–ด์…ˆ๋ธ”๋ฆฌ์–ด์™€ C์–ธ์–ด์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๊นŠ์–ด์งˆ ์ˆ˜ ์žˆ์—ˆ๋˜ ํ•œ ์ฃผ์˜€๋‹ค. ISA์— ๋ชจ๋“  ์ •๋ณด?๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž… ํ˜น์€ ์ฃผ์†Œ ํƒ€์ž…์œผ๋กœ ์ €์žฅ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์•„์ง๊นŒ์ง€๋„ ๊ต‰์žฅํžˆ ์ถฉ๊ฒฉ์ ์œผ๋กœ ๋‹ค๊ฐ€์˜จ๋‹ค.
์™œ ๊ทธ๋“ค์ด C์–ธ์–ด๋ฅผ ์ดํ•ดํ•˜๋ฉด ์ข‹์€์ง€์— ๋Œ€ํ•ด ์„คํŒŒํ•˜๋Š”์ง€ ์กฐ๊ธˆ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค. ์š”๋Š” ์ด๊ฒƒ์ด๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ์™€ C์–ธ์–ด๋Š” ๋ชจ๋“  ์ •๋ณด?๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž… ํ˜น์€ ์ฃผ์†Œ ํƒ€์ž…์œผ๋กœโ€™๋งŒโ€™ ์ €์žฅ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค (ISA์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ํ•™์Šต์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.), ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์–ด์…ˆ๋ธ”๋ฆฌ์— ๋งตํ•‘๋˜๋Š” ์–ธ์–ด๋กœ์„œ(๊ธฐ๊ณ„์— ๊ทผ์ ‘ํ•œ ์–ธ์–ด๋กœ์„œ)์˜ ์œ„์ƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
๋ชจ๋“  ํ–‰์œ„๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ์ฃผ์†Œ ํƒ€์ž…๊ณผ ๊ฐ’ ํƒ€์ž…์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ฒฝ์™ธ๊ฐ์„ ๋Š๋‚€๋‹ค.

๐Ÿ“•[1์ฃผ์ฐจ]
๋‹คํ–‰ํžˆ๋„ 1์ฃผ ์ฐจ๋Š” ์ข‹์€ ๊ฐ€์ด๋“œ๋ผ์ธ์ด ์žˆ์–ด ์‹œ๊ฐ„ ์•ˆ์— ๋ฌธ์ œ๋ฅผ ์ž˜ ํ•ด๊ฒฐ ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.
์ธํ„ฐ๋ŸฝํŠธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋Š”, ํฌ์ธํ„ฐ๋“ค์˜ ์ฃผ์†Œ ๊ฐ’์ด NULL์ด ์•„๋‹Œ์ง€ ์ฒดํฌ๋ฅผ ๊ผญ ํ•˜์ž.
๋„คํŠธ์›Œํฌ ์Šคํ„ฐ๋””, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””๋ฅผ ๋ณ‘ํ–‰ํ•˜๊ณ  ์žˆ์–ด ์‹œ๊ฐ„ ์กฐ์œจํ•˜๋Š” ๊ณผ์ •์—์„œ ๋งŽ์€ ์ •์‹ ์ , ์ฒด๋ ฅ์  ์†Œ๋ชจ๊ฐ€ ์žˆ์—ˆ๋‹ค. 1์ฃผ์ฐจ์—์„œ ์ด๋Ÿฐ ๊ฐ์ •์„ ๋Š๊ปด ์กฐ๊ธˆ ๋ถˆ์•ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ค‘์ด๋‹ค.
ํ”„๋ก ํŠธ์—”๋“œ ์Šคํ„ฐ๋””๋„ ์‹œ์ž‘ํ•ด์•ผํ•˜๋Š”๋ฐ ์Šคํ„ฐ๋””๋ฅผ ์กฐ๊ธˆ ์ค„์—ฌ์•ผ ํ•˜๋Š”๊ฐ€ ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

ํ–‰๊ตฐ ์‹œ์ž‘

๊ตฐ๋Œ€์—์„œ ํ–‰๊ตฐํ•˜๋˜ ๋•Œ๊ฐ€ ์ƒ๊ฐ๋‚œ๋‹ค. ๊นœ๊นœํ•œ ๋„๋กœ๋ฅผ ์ •์ฒ˜์—†์ด ๊ฑท๋‹ค๊ฐ€๋ณด๋ฉด ๊ฒฐ๊ตญ ๋„์ฐฉ์ง€์— ๋„๋‹ฌํ•  ๊ฒƒ๋งŒ ๊ฐ™๋‹ค. ์ง€๊ธˆ ๋‚ด ๋ชจ์Šต์ด๋‹ค ์ƒˆ๋ฒฝ 3์‹œโ€ฆ ๋ฐฐ๊ณ ํ”„๊ณ  ์กธ๋ฆฌ๋‹ค.

2๋‹ฌ ๋’ค์— ๋‚˜๋„ ์ง์ ‘ ์ณ๋ณด๋ฆฌ๋ผโ€ฆ. ssxbxl done

์ด ํฌ์ŠคํŠธ๋Š” PintOS๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉฐ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.
์ •๊ธ€์—์„œ์˜ ํ™œ๋™ 2๋‹ฌ์—ฌ ๊ฐ„์˜ ์‹œ๊ฐ„ ๋™์•ˆ ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, Malloc Lab , Tiny Web Server ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์ณค๋‹ค. ์ด์–ด์„œ ์šฐ๋ฆฌ๋Š” 2๋‹ฌ์—ฌ ๊ฐ„ Kaist์˜ ์‹ค์ œ ํ•™๋ถ€ ๊ณผ์ •์— ์žˆ๋Š” PintOS ๊ฐœ๋ฐœ์— ๋Œ์ž…ํ–ˆ๋‹ค. ๐ŸŽฏ
์‹œ๊ฐ„์ด๋‚˜ ์ฑ•ํ„ฐ ๋‹จ์œ„๋กœ ์ง„ํ–‰ํ•˜๊ณ  ๊ทธ ๋•Œ๋งˆ๋‹ค ํฌ์ŠคํŒ…์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ๊ฐ™๊ตฌ, ๋‚ด์šฉ์ด ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•œ๋‹ค๊ณ  ๋ณด์žฅํ•˜์ง€๋Š” ๋ชปํ•  ๊ฒƒ ๊ฐ™๋‹ค..

์šฐ๋ฆฌ๋Š” 3๋ช…์ด ํ•œ ์กฐ๊ฐ€ ๋˜์–ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ,
๋งค ์ฃผ ํ•˜๋‚˜์˜ PROJECT๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ด์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•  ๊ฒƒ์ด๋‹ค. ๋‚ด๊ฐ€ ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ๊ผญ ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ณ  ์‹ถ์€ ํฌ์ธํŠธ๋งŒ ์ ์–ด๋ณด๋ จ๋‹ค.

๐Ÿ“Œ PROJECT1 : THREADS

  1. Alarm Clock
  2. Priority Scheduling
  3. Advanced Schedular

๐Ÿ“Œ PROJECT2 : USER PROGRAMMING

  1. Argument Passing
  2. User Memory
  3. System Calls
  4. Process Termination Messages
  5. Denying Writes to Executables
  6. Extend File Description

๐Ÿ“Œ PROJECT3 : VIRTUAL MEMORY

  1. Memory Management
  2. Anonymouse Page
  3. Stack Growth
  4. Memory Mapped Files
  5. Swap In/Out
  6. Copy-On-Write

๐Ÿ“Œ PROJECT4 : FILE SYSTEM

  1. Indexed and Extensible Files
  2. Subdirectories and Soft Links
  3. Buffer Cache
  4. Synchronization
  5. Mount
  6. FileSystem Journaling

Reference


KAIST PintOS Intro


โ€ข 0 Comments