[PintOS] Project2: WIL

김상호·2022년 6월 24일
0

Development Log

목록 보기
36/45

WIL

Project2 요약 정리

벌써 pintos project 1,2가 끝났다. 2.5주라는 시간이 어떻게 지났는지 모르겠다. 열심히 테스트를 통과하려고 개념도 보고 코드도 열심히 봤던 것 같다.

  1. 시작 전 개념 정리

  2. 과제

Project2 고민한 것들

  • interrupt frame이 무엇인가
  • FDT 를 어떻게 선언할 것인가
    • 64개 개수 고정
    • 투포인터 할당 & 해제
  • system call을 호출하면 interrupt frame에 argument들이 어떻게 반영이 되어 kernel이 알게 되는것인가? 레지스터에 바로 넣지 않나?!?!?
  • 디버깅 기록
    • hex_dump 빼기
    • exit 종료문구 출력 위치
      • exit system call에서만!
  • thread_create_initd로 exec하고 자기 스레드 버렸었는데 파일명이 바뀌어버림
  • exec에서 왜 새로이 할당을 받아야 하는가?
    • 새로 실행시켜야 할 file이 처음 생성시 할당받은 메모리보다 훨씬 클 수도 작을 수도 있기 때문이다.
    • file 시스템의 장점?
  • 자식 스레드가 종료되는 것을 뭐를 기준으로 기다리지? 언제 종료되는거지?
  • 세마포어 사용
    • 0보다 크면 스레드를 실행 가능한 상태
    • 음수면 sleep으로 줄세워야함
  • copy on write?
  • semaphore는 각 스레드가 가지고 있는데, 다른 스레드니까 lock을 부모와 자식에 따로 걸면 다른 게 아님???
  • wait할 때 자식 스레드의 sema list에 부모가 들어가야하는 것
  • exec할 때 deep copy 하지 않으면 파일명이 같아도 const char → void 안됨

어려웠던 점과 느낀점

Project1에서 느꼈던 것이랑 차원이 다른 어려움이였다. 기간이 1.5주 중에 개념을 보고난 후 코드를 보는데 벙찌는 기분이 좀 많이 들었던 것 같다. 개념은 아 이렇게 되는구나 이런거구나 알겠지만 막상 코드를 보면서 이게 머지 어떻게 흘러가는건지 이해하는 시간이 많이 필요했던 것 같다.

프로젝트를 진행하면서 점점 test case 통과를 위해 하고 있다는 생각이 들었다. pintos와 리눅스와의 차이가 존재했고 알던 개념이 깨지는 그런 경우도 있어서 많이 혼란스러웠다. 그래서 중간중간 집중을 못했던 것 같아서 많이 아쉬웠다.

이제 pintos도 3주밖에 남지 않았다. 다음 프로젝트도 많이 어렵겠지만 화이팅해야겠다..

2.5주동안 같이 했던 우리팀 고생하셨습니다 : )

PintOS Project2 GIthub 주소 PintOS

0개의 댓글