πŸ”₯[Pintos][Project 1][2023.05.26~2023.06.01]Team WIL

PyotatoΒ·2023λ…„ 5μ›” 31일
0
post-thumbnail

읡λͺ…μ„± 보μž₯을 μœ„ν•΄ νŒ€μ› 1,2,3으둜 ν‘œκΈ°ν–ˆμŠ΅λ‹ˆλ‹€.
μ €λŠ” νŒ€μ›3μž…λ‹ˆλ‹€.

βœ… task 1 & 2

πŸ“‹μƒˆλ‘œ 배우게 된 λ‚΄μš©λ“€

  1. 포인터 μ‚¬μš©μ— μ’€ 더 μ΅μˆ™ν•΄ 쑌고, ν•¨μˆ˜κ°€ μ‚¬μš©λ˜λŠ” 방법을 reference 검색을 ν†΅ν•΄μ„œ μ°Ύμ•„λ΄„
  1. pintosλ₯Ό μ‹œμž‘ν•˜λ©΄μ„œ busy waiting의 λ°©μ‹μœΌλ‘œ context switching이 이루어지고 μžˆμ—ˆλ‹€λŠ” 것을 λ§ν•©λ‹ˆλ‹€.
    κ·Έλ ‡λ‹€λ©΄ context switchingμ΄λž€ λ¬΄μ—‡μΈκ°€μš”?
    context swiching은 ν˜„μž¬ μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€μ—μ„œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œ cpuμ œμ–΄λ₯Ό μ „ν™˜ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
    busy waiting은 νŠΉμ • 쑰건이 좩쑱될 λ•ŒκΉŒμ§€ ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œκ°€ λŒ€κΈ°ν•˜λŠ” 방식을 λ§ν•©λ‹ˆλ‹€.
    μ—¬κΈ°μ„œ λŒ€κΈ°ν•œλ‹€λŠ” ν‘œν˜„μ€ μŠ€λ ˆλ“œκ°€ 싀행을 λ©ˆμΆ”κ³  μƒνƒœλ₯Ό ν™•μΈν•˜λŠ” 것이 μ•„λ‹ˆλΌ, cpuκ°€ μŠ€λ ˆλ“œμ˜ λͺ…령을 계속 μˆ˜ν–‰ν•˜λ©΄μ„œ ν•΄λ‹Ή 쑰건이 μΆ©μ‘±λ˜λŠ” 지λ₯Ό 계속 μ²΄ν¬ν•˜κ²Œ λœλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€.
  1. C언어와 deadlockμƒνƒœλ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ λ°©λ²•λ“€λ‘œ mutex, semaphoreλ“±μ˜ κ°œλ…μ„ μ ‘ν•˜κ²Œ λ˜μ—ˆκ³ , ν•¨μˆ˜λ“€μ„ 좔상화(?)ν•˜λŠ” 방법을 읡힌 것 κ°™μŠ΅λ‹ˆλ‹€. ν•¨μˆ˜κ°€ μ›μžμ μœΌλ‘œ (atomically) μž‘λ™λœλ‹€λŠ” 거에 λŒ€ν•œ κ°œλ….

πŸ€”μ–΄λ €μ› λ˜ 점

  • νŒ€μ› 1: μ •κΈ€ λ“€μ–΄μ˜€κΈ° 전에 μ‹œμž‘ν•œ λ―Έλ‹ˆ ν”„λ‘œμ νŠΈμ˜ λ§ˆκ°κΈ°ν•œκ³Ό κ²Ήμ³μ„œ 일정 κ΄€λ¦¬μ˜ 어렀움
  • νŒ€μ› 2: μ–΄λ €μ› λ˜ 점이라고 ν•œλ‹€λ©΄ sftpμ—μ„œ 경둜λ₯Ό 잘 λͺ» μ„€μ •ν•˜μ—¬ ν™˜κ²½ μ„€μ •ν•˜λŠ” 데 였랜 μ‹œκ°„μ΄ μ†Œλͺ¨λ˜μ—ˆλ˜ λΆ€λΆ„
  • νŒ€μ› 3: Cμ–Έμ–΄κ°€ μ΅μˆ™ν•˜μ§€ μ•Šμ•„μ„œ ν•¨μˆ˜λ“€μ„ 타고 λ“€μ–΄κ°€μ„œ 일일히 λ΄μ•Όν–ˆμ—ˆλ‹€. κ°œλ… 곡뢀도 같이 λ³‘ν–‰ν•΄μ•Όν•΄μ„œ μ‹œκ°„μ΄ μ΄‰λ°•ν–ˆμ—ˆλ‹€.

πŸ€— Solution

  1. μ•ŒλžŒ ν΄λ½μ—μ„œ
    global tickκ³Ό local tick 의 ν˜Όλ™μ΄ μžˆμ—ˆμŒ
    global tick은 osκ°€ μ‹œμž‘ν•  λ•Œ λΆ€ν„° 계속 μ¦κ°€ν•˜λŠ” κ°’
    local tick은 threadμ•ˆμ— μ €μž₯될 κΉ¨μ–΄λ‚  μ‹œκ°„μœΌλ‘œ κ³ μ •λœ κ°’
  2. sftp의 경우 경둜λ₯Ό μ²˜μŒμ— 잘 λͺ» μ„€μ •ν•˜μ—¬ λ¬Έμ œκ°€ λ°œμƒν•˜μ˜€κ³  경둜λ₯Ό λ°”κΎΈμ–΄μ£Όλ©΄μ„œ 해결해보렀고 ν–ˆμ§€λ§Œ μ œλŒ€λ‘œ λ˜μ§€ μ•Šμ•„ ec2섀정을 μ²˜μŒλΆ€ν„° λ‹€μ‹œ ν•˜μ—¬ 파일이 μ €μž₯λ˜λŠ” 경둜λ₯Ό λ‹€μ‹œ 섀정해보고 pathλ₯Ό μˆ˜μ • ν•˜λ©΄μ„œ λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ 해결해보렀고 ν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μ— .vscode의 폴더 μœ„μΉ˜κ°€ 잘 λͺ» λ˜μ–΄ sftpκ°€ μ œλŒ€λ‘œ 읽어 지지 λͺ»ν•œλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ–΄ 이 문제λ₯Ό ν•΄κ²°ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  3. μ²˜μŒμ—λ§Œ κ·ΈλŸ¬λ‹€κ°€ λ‚˜μ€‘μ—λŠ” μ–΄λŠμ •λ„ 흐름이 읽히기 μ‹œμž‘ν•΄μ„œ κ΅¬ν˜„ν•  수 μžˆμ—ˆλ””. λ‹€λ₯Έ ν•¨μˆ˜λ“€μ—μ„œ μ‚¬μš©λœ 방식을 ν™œμš©ν•΄μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν–ˆλ‹€.

πŸ§‘β€πŸ’» μ½”λ“œ ν•œμ€„ μ†Œκ°œ

  • νŒ€μ› 1λ‹˜ : μ „μ—­ λ³€μˆ˜ μ„€μ •, list.h에 μžˆλŠ” func을 thread.cμ—μ„œ κ°€μ Έμ™€μ„œ μ‚¬μš©ν•˜λŠ” 방법
  • νŒ€μ› 2λ‹˜ :
  • νŒ€μ› 3λ‹˜ : /threads/synch.c의 nested_donation(struct lock *lock, int priority) ➑️lock aquire & lock release해쀄 λ•Œ nested priority donate ν•΄μ£ΌκΈ° μœ„ν•œ

🧐Project1 마감 μ†Œκ° & λŠλ‚€μ 

  • νŒ€μ› 1λ‹˜ : μ•ŒλžŒ 클락 make check ν•œλ²ˆμ— ν†΅κ³Όλ˜μ„œ λ„ˆλ¬΄ μ’‹λ„€μš”.
  • νŒ€μ› 2λ‹˜ : μ € μžμ‹ μ˜ λΆ€μ‘±ν•œ 점을 많이 느끼게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 특히 μ € 슀슀둜 ν•΄κ²°ν•  수 μ—†λŠ” λ¬Έμ œλ“€μ΄ λ§Žλ‹€λŠ” 것을 λŠκΌˆμŠ΅λ‹ˆλ‹€. C언어에 λŒ€ν•œ 이해도 λΆ€μ‘±ν–ˆκ³  이둠적인 뢀뢄도 λ§Žμ€ λΆ€μ‘±ν–ˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ μ£Όκ°€ 걱정이 λ˜μ§€λ§Œ ν¬κΈ°ν•˜μ§€ μ•Šκ³  더 μ—΄μ‹¬νžˆ ν•΄μ•Όκ² λ‹€λŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€.
  • νŒ€μ› 3λ‹˜ : μ½”λ“œμ˜ μΆ”μƒν™”λΌλŠ” 말이 μ–΄λ ΅κ³  λ‚―μ„€μ—ˆμ§€λ§Œ 이번 ν”„λ‘œμ νŠΈλ₯Ό 톡해 κ°œλ…μ΄ ν™• μ™€λ‹Ώμ•˜μŠ΅λ‹ˆλ‹€. μ²˜μŒμ—λŠ” ν•¨μˆ˜λ₯Ό ν•˜λ‚˜ν•˜λ‚˜ λœ―μ–΄λ΄μ•Όν–ˆμ§€λ§Œ λ‚˜μ€‘μ—λŠ” κΈ€ 읽듯이 μ½νžˆλŠ”(?) λŠλ‚Œμ΄ λ“€μ–΄μ„œ μ‹ κΈ°ν•˜κ³  μž¬λ°Œμ—ˆμŠ΅λ‹ˆλ‹€.

βœοΈνŒ€μ›λ“€ ν•œμ€„ μ†Œκ°

profile
https://pyotato-dev.tistory.com/ 둜 이사쀑 πŸššπŸ’¨πŸš›πŸ’¨πŸššπŸ’¨

0개의 λŒ“κΈ€