๐Ÿ”ฅ[Pintos][Project 3][2023.06.18~2023.06.25]Team WIL

Pyotatoยท2023๋…„ 6์›” 25์ผ
0
post-thumbnail

๐Ÿคซ์ต๋ช…์„ฑ ๋ณด์žฅ์„ ์œ„ํ•ด ํŒ€์› 1,2,3์œผ๋กœ ํ‘œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ–๏ธ์ €๋Š” ํŒ€์›3์ž…๋‹ˆ๋‹ค.

๐Ÿ“‘๊ฒฐ๊ณผ

  • copy on write (cow) ์ œ์™ธ pass

๐Ÿค”Trouble-shooting

  • ํŒ€์› 1: ์ดˆ๋ฐ˜์— ์•Œ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜๋กœ ์ธํ•˜์—ฌ ์‹œ๊ฐ„์„ ๋งŽ์ด ํ—ˆ๋น„ํ–ˆ๋‹ค. argument passing ๊ด€๋ จํ•œ ๋ถ€๋ถ„์ด๋ผ๊ณ  ์–ด๋ ดํ’‹์ด ์ƒ๊ฐํ•˜๊ณ  ๋””๋ฒ„๊น…์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

  • ํŒ€์› 2: ๊ตฌํ˜„ ์ค‘ ๋ชจ๋“  test case์— ๋Œ€ํ•˜์—ฌ Kernel Panic์œผ๋กœ Kill ๋ฐœ์ƒ. ๋ชจ๋“  case์—์„œ kill ๋ฐœ์ƒํ•˜์—ฌ syscall์ด๋‚˜ process/thread ์ƒ์„ฑ ๋ฐ ํ•ด์ œ๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ๊ฐ€ ์žˆ์„๊ฒƒ์ด๋ผ ์ƒ๊ฐ.

  • ํŒ€์› 3: ์šฐ๋ถ„ํˆฌ์—์„œ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ ค๋‹ˆ boot ์ž์ฒด๊ฐ€ ์•ˆ๋˜๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ! ๋กœ์ปฌ์—์„œ ํ‘ธ์‰ฌํ•˜๊ณ  ์šฐ๋ถ„ํˆฌ์—์„œ๋Š” ๋˜๋„๋ก ํ•˜์ง€๋ง๋ผ๊ณ ๋Š” ํ•˜์ง€๋งŒ ์‹ค์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋‹ˆ ๋‹ค๋ฅธ ๋Œ€์ฒ˜๋ฐฉ์‹์€ ์—†์„๊นŒ ์ƒ๊ฐ

๐Ÿค— Solution

  1. ์˜ˆ์ƒ๋Œ€๋กœ argument passing์— ํ•„์š”ํ•œ argument_stack ํ•จ์ˆ˜์˜ ์ธ์ž ์ „๋‹ฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Œ. ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋‹ˆ ํ†ต๊ณผ!

  2. project2์—์„œ ๋งˆ์ง€๋ง‰์— oom ํ•ด๊ฒฐ์„ ์œ„ํ•ด

    palloc_get_multiple, palloc_get_page, palloc_free_page, palloc_free_multiple ์„ ํ˜ผ์žฌํ•ด์„œ ์‚ฌ์šฉ

    โ†’ palloc_get_page - palloc_free_page ์Œ์œผ๋กœ ํ†ต์ผ.

  1. ์›์ธ ๋ถ„์„ : ํ•€ํ† ์Šค ํ”„๋กœ์ ํŠธ์—์„œ pythonํŒŒ์ผ๋“ค์€ 'util์— ์žˆ๋Š” pintos์™€ backtrace' ๋ฐ–์— ์—†์Œ. โžก๏ธ"/usr/bin/env: 'python3\r': ๊ทธ๋Ÿฐ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค" ์—๋Ÿฌ ๋ฉ”์„ธ์ง€ โžก๏ธ ๊ตฌ๊ธ€๋ง ๊ฒฐ๊ณผ
    ์›์ธ : ์œˆ๋„์šฐ ํ™˜๊ฒฝ์˜ line ending(CR(\r)+LF(\n) )์Šคํƒ€์ผ๋กœ ์ƒ์„ฑ ์ €์žฅํ–ˆ๋˜ ๊ฒƒ๊ณผ ๋ฆฌ๋ˆ…์Šค์ธ ์šฐ๋ถ„ํˆฌ ํ™˜๊ฒฝ์—์„œ line ending(LF(\n))ํ•ด์ฃผ๋Š” ์Šคํƒ€์ผ์ด ๋‹ค๋ฆ„ โžก๏ธ ์œˆ๋„์šฐ์—์„œ ํŒŒ์ผ ์˜ฌ๋ ค์„œ CR(\r)์ด ์ƒ๊ฒจ๋ฒ„๋ฆผ

    ๐Ÿ› ๏ธํ•ด๊ฒฐ ๋ฐฉ์•ˆ : dos2unix tool์„ ์‚ฌ์šฉํ•ด์„œ ์œˆ๋„์šฐ/DOS ์Šคํƒ€์ผ์˜ ์ค„ ๋ฐ”๊ฟˆ์„ ๋ฆฌ๋ˆ…์Šค ์Šคํƒ€์ผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅ

    $ sudo apt install dos2unix
    $ dos2unix pintos # pintos.py ํŒŒ์ผ์„ ๋ฆฌ๋ˆ…์Šค ์Šคํƒ€์ผ๋กœ ๋ณ€ํ™˜
    $ dos2unix backtrace # backtrace.py ํŒŒ์ผ์„ ๋ฆฌ๋ˆ…์Šค ์Šคํƒ€์ผ๋กœ ๋ณ€ํ™˜

๐Ÿง‘โ€๐Ÿ’ป ๋ฐฐ์šด ๊ฒƒ ํ•œ์ค„ ์†Œ๊ฐœ

  • ํŒ€์› 1๋‹˜ : Lazy loading์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ์‹œ์  ์ „๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ ๋กœ๋“œ๋ฅผ ๋ฏธ๋ฃจ๋Š” ๊ฒƒ์ด๋‹ค. page fault๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, ํ•ด๋‹น ๊ฐ€์ƒ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ ๊ทธ์ œ์„œ์•ผ load๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ํ˜„์ œ ์Šค๋ ˆ๋“œ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์ˆœ๊ฐ„์—๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌผ๋ฆฌ ๊ณต๊ฐ„์— ์กด์žฌํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— Lazy loading์„ ํ†ตํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์ดˆ๊ธฐ ๋ถ€ํŒ…์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œ์ผœ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํŒ€์› 2๋‹˜ :

  • evict policy : page์˜ access bit๋ฅผ ๊ณ ๋ คํ•ด์„œ victim๊ณ ๋ฅด๊ธฐ
  • lru๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์—ˆ๋‹ค๋ฉด evictํ•ด์ค„ ์ฒซํ›„๋ณด๋กœ ์„ค์ •
  • pml4_is_accessed()ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด PML4 entry์˜accessed flag๊ฐ€ false์ธ์ง€ ํ™•์ธํ•ด์„œ, cache์—์„œ evict ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹นํ–ˆ์„ ๋•Œ๋ถ€ํ„ฐ page access๊ฐ€ ์žˆ์—ˆ๋Š”์ง€ ํ™•์ธ
  • ๋งŒ์•ฝ access ์•ˆ๋๋‹ค๋ฉด lru์— ๋”ฐ๋ผ victim์œผ๋กœ ์„ค์ •ํ•˜๊ณ  loop ๋‚˜๊ฐ€๊ธฐ
  • victim (๋งˆ์ง€๋ง‰ evict๋œ ์‹œ์  ํ›„ access์•ˆ๋œ ํŽ˜์ด์ง€) ์ฐพ์€ ํ›„, ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ ‘๊ทผ๋์—ˆ๋‹ค๊ณ  PML4_entry๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์ฃผ๊ธฐ
  • clock_elem ํฌ์ธํ„ฐ ์—…๋ฐ์ดํŠธ(clock์˜ ๋‹ค์Œ elem ๊ฐ€๋ฅดํ‚ค๋„๋ก)ํ•˜๊ณ  ํ›„๋ณด์—†์• ๊ณ  victim page ๋ฆฌํ„ดํ•ด์ฃผ๊ธฐ

    • cicular linked list ๋งŒ๋“ค์–ด์ฃผ๊ธฐ
    • list์˜ ๋งˆ์ง€๋ง‰ elem์ด ์ฒซ elem์ด ๋์„ ๊ฐ€๋ฅดํ‚ค๊ณ  ๋ elem ์ฒซ elem ๊ฐ€๋ฅดํ‚ค๋„๋ก




๐ŸงProject3 ๋งˆ๊ฐ ์†Œ๊ฐ & ๋Š๋‚€์ 

  • ํŒ€์› 1๋‹˜ : ์‹œ๊ฐ„์ด ์ •๋ง ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์‹ค๊ฐํ–ˆ๋‹ค. ์ด๋ฒˆ ํŒŒํŠธ์— 2์ฃผ๊ฐ€ ์ฃผ์–ด์ง„ ์ด์œ ๋ฅผ ๋ผˆ์ €๋ฆฌ๊ฒŒ ๋Š๊ผ‡๋‹ค.

  • ํŒ€์› 2๋‹˜ : ๋จธ๋ฆฌ์†์— ์ด๊ฒƒ์ €๊ฒƒ ์ง‘์–ด๋„ฃ๊ณ , ์ฝ”๋“œ๋„ ์ •์‹ ์—†์ด ์ž‘์„ฑ์€ ํ–ˆ๋Š”๋ฐโ€ฆ ์ •๋ฆฌ๊ฐ€ ์ž˜ ์•ˆ๋œ ๋Š๋‚Œ์ด๋‹ค. ๊นŒ๋จน๊ธฐ ์ „์— ๋‹ค์‹œ ์ •๋ฆฌ๋ฅผ ํ•ด์•ผ๊ฒ ๋‹ค. (+a ์ถ”ํ›„ ๋ณต์Šต์„ ์œ„ํ•ด์„œ๋ผ๋„)

  • ํŒ€์› 3๋‹˜ : ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋‹ฌ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž๋ฃŒ๊ฐ€ ์ด ์ •๋„ ๋ฐ–์— ์—†์–ด? ์‹ถ์–ด๋„ ๊ณ„์† ๋ญ”๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ๋‚˜๋ฅผ ๋ฐœ๊ฒฌ

profile
https://pyotato-dev.tistory.com/ ๋กœ ์ด์‚ฌ์ค‘ ๐Ÿšš๐Ÿ’จ๐Ÿš›๐Ÿ’จ๐Ÿšš๐Ÿ’จ

0๊ฐœ์˜ ๋Œ“๊ธ€