๐Ÿ‘จโ€๐Ÿ’ป Seungineer's GitHub Contribution

๐Ÿงญ KAIST JUNGLE/Pintos 9

[PintOS] Virtual Memory - Final (Project 3, WIL)

2024.05.19 - [๐Ÿงญ KAIST JUNGLE/Pintos] - [PintOS] Virtual Memory - ๋“ค์–ด๊ฐ€๊ธฐ(Project 3, TIL) [PintOS] Virtual Memory - ๋“ค์–ด๊ฐ€๊ธฐ(Project 3, TIL)Virtual Memory๋Š” ์™œ ํ•„์š”ํ• ๊นŒ?๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ์ƒํ•ด ๋ณด์ž. ์Œ์•… ์žฌ์ƒ ํ”Œ๋ ˆ์ด์–ด์™€ ๊ฒŒ์ž„ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ๊ฐ๊ฐ ์žฌ์ƒ ์‹œ๊ฐ„๊ณผ ์บ๋ฆญํ„ฐ์˜ ์ฒด๋ ฅ ์ •๋ณด๊ฐ€ ๋‹ด๊ธฐ๋ฉด ์–ด๋–ป๊ฒŒseungineer.tistory.comAnonymous pageํŽ˜์ด์ง€ ํƒ€์ž…Uninit Page(์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€)๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ, ํŠน์ • ํƒ€์ž…์œผ๋กœ์˜ ๋ณ€๊ฒฝ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” lazy loading์„ ์œ„ํ•œ ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ์—ญํ• ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€ ์ฃผ์†Œ๋ฅผ..

[PintOS] Virtual Memory - Mid Check (Project 3, WIL)

2024.05.19 - [๐Ÿงญ KAIST JUNGLE/โญ Pintos] - [PintOS] Virtual Memory - ๋“ค์–ด๊ฐ€๊ธฐ(Project 3, TIL) [PintOS] Virtual Memory - ๋“ค์–ด๊ฐ€๊ธฐ(Project 3, TIL)Virtual Memory๋Š” ์™œ ํ•„์š”ํ• ๊นŒ?๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ์ƒํ•ด ๋ณด์ž. ์Œ์•… ์žฌ์ƒ ํ”Œ๋ ˆ์ด์–ด์™€ ๊ฒŒ์ž„ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ๊ฐ๊ฐ ์žฌ์ƒ ์‹œ๊ฐ„๊ณผ ์บ๋ฆญํ„ฐ์˜ ์ฒด๋ ฅ ์ •๋ณด๊ฐ€ ๋‹ด๊ธฐ๋ฉด ์–ด๋–ป๊ฒŒseungineer.tistory.com์ง„ํ–‰ ์ƒํ™ฉโœ… Memory Managementโœ… Anonymous Pageโœ… Stack GrowthโŽ Memory Mapped FilesโŽ Swap In/Out Project3์˜ Virtual Memory๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•œ ํ›„์˜ ๋™์ž‘ m..

[PintOS] Virtual Memory - ๋“ค์–ด๊ฐ€๊ธฐ(Project 3, TIL)

Virtual Memory๋Š” ์™œ ํ•„์š”ํ• ๊นŒ?๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ์ƒํ•ด ๋ณด์ž. ์Œ์•… ์žฌ์ƒ ํ”Œ๋ ˆ์ด์–ด์™€ ๊ฒŒ์ž„ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ๊ฐ๊ฐ ์žฌ์ƒ ์‹œ๊ฐ„๊ณผ ์บ๋ฆญํ„ฐ์˜ ์ฒด๋ ฅ ์ •๋ณด๊ฐ€ ๋‹ด๊ธฐ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ๊ณ ํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋กœ์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉํ•˜๋˜ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ค๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค. ์˜๋„์น˜ ์•Š๊ฒŒ ์บ๋ฆญํ„ฐ์˜ ์ฒด๋ ฅ์ด ์ ์  ์ฆ๊ฐ€ํ•œ๋‹ค๋˜๊ฐ€, ์บ๋ฆญํ„ฐ์˜ ์ฒด๋ ฅ์ด ๋‹ณ์„ ๋•Œ ์Œ์•… ์žฌ์ƒ ์‹œ๊ฐ„์ด ๋’ค๋กœ ์ด๋™ํ•œ๋‹ค๋˜๊ฐ€ ๐Ÿ™„.Virtual Memory๋ฅผ ๋„์ž…ํ•ด ์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” Virtual Memory ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ์— ํ”„๋กœ์„ธ์Šค๋ณ„ ๊ฐ™์€ ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค ํ•˜๋”๋ผ๋„ ์‹ค์ œ ๋ฌผ๋ฆฌ Memory(RAM)์— ๋งคํ•‘๋˜์–ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์€ ๋‹ค๋ฅด๊ฒŒ ๋œ๋‹ค! ์ด๋Š” data security ์ธก๋ฉด์—์„œ์˜ Virtu..

[PintOS] User Program - System Call2 (Project 2, TIL)

KAIST PintOS ๊ฐ•์˜ ๋ฐ Instruction, ํ•œ์–‘๋Œ€ PintOS Slides๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉฐ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.ํ•™์Šต ๋„์ค‘ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด๋ผ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.fork() ํ•จ์ˆ˜ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ์„œ ์‹œ๊ฐ„์„ ๋„ˆ๋ฌด ๋งŽ์ด ์ผ๋‹ค. ์œ„ ์งค์ฒ˜๋Ÿผ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น˜๋ฉด, ๋‹ค๋ฅธ ๋ฐ์„œ ๋ฒ„๊ทธ๊ฐ€ ๋‚ฌ๊ณ , ๊ทธ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น˜๋ฉด ์ด์ „ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ํ†ต๊ณผ๊ฐ€ ์•ˆ ๋˜๋Š” ์ผ์ด ์—„์ฒญ ๋งŽ์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฌดํ•œ ๋ฒ„๊ทธ์˜ ๊ตด๋ ˆ ๋์— 'ALL PASSED' ๋ฌธ๊ตฌ๋ฅผ ๋ดค์„ ๋•Œ์˜ ๊ฐ๋™์„ ์•„์ง๋„ ์žŠ์ง€ ๋ชป ํ•˜๊ฒ ๋‹ค(์งœ๋ฆฟํ•ด).ํ”„๋กœ์„ธ์Šค ๊ณ„์ธต ๊ตฌ์กฐ ๊ฐœ์š”Process์˜ ์ •๋ณด์— ๋ถ€๋ชจ์™€ ์ž์‹ field๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ œ์ž‘ํ•œ๋‹ค. ์ด๋•Œ, project1์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๋˜ semaphore ๊ฐœ๋…์ด ์‚ฌ์šฉ๋œ๋‹ค. Process ๊ด€๋ จ system call์—๋Š” ..

[PintOS] User Program - System Call (Project 2, TIL)

KAIST PintOS ๊ฐ•์˜ ๋ฐ Instruction, ํ•œ์–‘๋Œ€ PintOS Slides๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉฐ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.ํ•™์Šต ๋„์ค‘ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด๋ผ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋“ค์–ด๊ฐ€๊ธฐ ์ „์—๋ ˆ์ง€์Šคํ„ฐ ์—ญํ•  ์ •๋ฆฌ%rax : system call number ์ €์žฅ โ–ถ๏ธ ์šด์˜์ฒด์ œ๊ฐ€ ์–ด๋–ค ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ%rdi, %rsi, %r10, % r8, %r9 : system call arguments ์ „๋‹ฌ์— ์‚ฌ์šฉ(ํ˜ธ์ถœ์— ๋”ฐ๋ผ ์ผ๋ถ€๋งŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ˆœ์„œ๋Œ€๋กœ ํ• ๋‹น๋จ)%rcx : syscall ๋ช…๋ น์–ด ์‚ฌ์šฉ ์‹œ %rcx ๋ ˆ์ง€์Šคํ„ฐ์— ๋ณต๊ท€ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋จ(์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ์—๋Š” ์Šคํƒ์— ์ €์žฅ!) โฌ…๏ธ ์šด์˜์ฒด์ œ์—์„œ ์ž๋™ ์ฒ˜๋ฆฌ%r11 : syscall ๋ช…๋ น์–ด ์‚ฌ์šฉ ์‹œ ํ˜„์žฌ process stat..

[PintOS] User Program - Arguments parsing (Project 2, TIL)

KAIST PintOS ๊ฐ•์˜ ๋ฐ Instruction, ํ•œ์–‘๋Œ€ PintOS Slides๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉฐ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.ํ•™์Šต ๋„์ค‘ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด๋ผ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Arguments ParsingCommand Line์— ๋Œ€ํ•ด ๊ณต๋ฐฑ(' ') ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ํ˜„์žฌ๋Š” Arguments๊ฐ€ ๋ถ„ํ• ๋˜์ง€ ์•Š์•„ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด๋กœ ์ž…๋ ฅ๋˜๊ณ  ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ž…๋ ฅ๋˜๋ฉด, filename์„ ์ฐพ์„ ์ˆ˜๋„ ์—†๊ฑฐ๋‹ˆ์™€ ์—ฌ๋Ÿฌ ๋ช…๋ น ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. ํ•€ํ† ์Šค์—์„œ๋Š” '๋ฌธ์ž์—ด ๋ถ„๋ฆฌ' ํ•จ์ˆ˜(strtok_r())๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.strtok_r()tid_tprocess_create_initd (const char *file_name) { char *fn_copy; char *temp_ptr; char..

[PintOS] User Program - ๋ฐฐ๊ฒฝ์ง€์‹(Project 2, TIL)

KAIST PintOS ๊ฐ•์˜ ๋ฐ Instruction, ํ•œ์–‘๋Œ€ PintOS Slides๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉฐ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.ํ•™์Šต ๋„์ค‘ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด๋ผ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.Project 2 : User Programs์ตœ์ข… ๊ตฌํ˜„๋˜์–ด์•ผ ํ•  ๊ฒƒํ˜„์žฌ ํ•€ํ† ์Šค๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค(User process)๋ฅผ ์ƒ์„ฑํ•œ ํ›„ scheduling() ๋  ๋•Œ Init process๊ฐ€ ์ข…๋ฃŒ(exit)๋˜๊ธฐ์— User process ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ตœ์ข… ๊ตฌํ˜„ ํ›„์—๋Š” Init process๊ฐ€ mother of all process๋กœ, '์ž์‹ process์˜ ์™„๋ฃŒ ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋˜๊ณ , User process ์ข…๋ฃŒ ํ›„์— exit ๋ฐ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•œ๋‹ค.thread_create()์ปค๋„ ์Šคํƒ์— 4KB ๊ณต๊ฐ„์˜ Page๋ฅผ ํ•˜๋‚˜..

[PintOS] Thread - Priority Scheduling (Project 1, WIL)

๋“ค์–ด๊ฐ€๊ธฐ ์ „์—์šด์˜์ฒด์ œ์˜ ๋™์ž‘ ๊ณผ์ •(Dual-Mode Execution)User Mode : ์ผ๋ฐ˜์  ์‘์šฉํ”„๋กœ๊ทธ๋žจ ๊ตฌ๋™ ํ™˜๊ฒฝKernel Mode : ์ปค๋„ ๊ตฌ๋™ ํ™˜๊ฒฝ(User Mode์™€ ๋‹ฌ๋ฆฌ system call(H/W ๊ด€๋ จ) ํ˜ธ์ถœ ๊ฐ€๋Šฅ) โ—€๏ธ PintOS ํ™˜๊ฒฝ์ฒซ ์šด์˜์ฒด์ œ ๊ตฌ๋™ ์‹œ ์ดˆ๊ธฐํ™” ์ž‘์—… ๋ฐ ๋ถ€ํŒ… ์ž‘์—…์œผ๋กœ ์ธํ•ด ์ปค๋„ ๋ชจ๋“œ๋กœ ์‹œ์ž‘๋˜๊ณ , ๊ณง๋ฐ”๋กœ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋กœ ์ „ํ™˜๋œ๋‹ค. ์ด๋Š” Kernel Mode์—์„œ์˜ ์ž‘์—…์ด ์ปดํ“จํ„ฐ ์ „๋ฐ˜์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์ด๊ธฐ์— ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.User Mode์—์„œ 'system call'์„ ํ˜ธ์ถœUser Mode์—์„œ ์ž‘์—…์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์šด์˜์ฒด์ œ์— ์œ„์ž„Interrupt?Interrupt(์ธํ„ฐ๋ŸฝํŠธ)๋ž€ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” '์ค‘๋‹จ ์‹ ํ˜ธ'๋กœ CPU๊ฐ€ ํŠน์ • ํ”„๋กœ๊ทธ..

[PintOS] Thread - Alarm Clock (Project 1)

KAIST Jungle 7์ฃผ์ฐจ, OS ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—ํ”„๋กœ์„ธ์Šค๋Š” ๋ญ๊ณ  ์Šค๋ ˆ๋“œ๋Š” ๋ญ”๊ฐ€์š”? [์œ ํŠœ๋ธŒ ์˜์ƒ ๊ฐ•์˜]CPU์˜ ๋™์‹œ์„ฑ์€ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ผ๋ถ€๋ถ„์”ฉ context switching ํ•˜๋ฉด์„œ ์ง„ํ–‰๋จA, B, C ์ž‘์—… ๋™์‹œ ์ฒ˜๋ฆฌ ์‹œ ์ˆœ์„œ๋Œ€๋กœ A(5% ์ˆ˜ํ–‰)โ–ถ๏ธ B(5% ์ˆ˜ํ–‰) โ–ถ๏ธ C(5% ์ˆ˜ํ–‰) โ–ถ๏ธ A(10% ์ˆ˜ํ–‰)โ–ถ๏ธ B(10% ์ˆ˜ํ–‰) โ–ถ๏ธ C(10% ์ˆ˜ํ–‰) ... (๋ฐ˜๋ณต) โ–ถ๏ธ A(100% ์ˆ˜ํ–‰)โ–ถ๏ธ B(100% ์ˆ˜ํ–‰) โ–ถ๏ธC(100% ์ˆ˜ํ–‰)๋ณ‘๋ ฌ์„ฑ์€ ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜์— ์ฝ”์–ด ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋‹ฌ๋ ค์„œ ๊ฐ๊ฐ์ด ์ž‘์—…์„ ๋™์‹œ์— ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ(์ž‘์—…๋ถ„๋‹ด)์ฒซ ๋ฒˆ์งธ ์ฝ”์–ด์—์„œ A์ž‘์—…, ๋‘ ๋ฒˆ์งธ ์ฝ”์–ด์—์„œ B์ž‘์—…, ์„ธ ๋ฒˆ์งธ ์ฝ”์–ด์—์„œ C์ž‘์—…์„ ๊ฐ™์€ ์‹œ์ ์— ์ž‘์—…ํ•จํ•œ ํ”„๋กœ์„ธ์Šค(ex. ํฌ๋กฌ) ๋‚ด..