[Pint OS] 에러: multi-oom

2023. 6. 17. 01:28·프로젝트/Pint OS

발생

FAIL: multi-oom

프로젝트 2를 구현한 후 multi-oom을 제외한 모든 테스트 케이스에서 pass했다. 여기서 특이한 것은 pass 여부가 가상 환경 사양에 따라 갈린다는 점이었다. 도커로 로컬 노트북으로 돌린 나의 경우에는 multi-oom을 통과하지만, git clone으로 받아서 AWS에서 돌린 동료들은 전부 FAIL이 뜬다. 여기서 또 신기한 점은 AWS의 t2.large 서버에서 테스트해본 동료는 또 pass했다 ㅋㅋ. 아무래도 가상 환경의 메모리 용량에 따라 multi-oom이 터지는 걸로 추정된다.

 

다른 동료의 코드와 한참을 비교해보다가 동료가 해결해주었다.

 

 

솔루션

tid_t
process_fork (const char *name, struce intr_frame *if_) {
	...
    if (child->exit_status == TID_ERROR) {
		sema_up(&child->exit_sema); // 여기가 추가됨.
		return TID_ERROR;
	}
}

- 자식 프로세스가 로드가 실패했다거나 에러가 떴을 경우, 자식 프로세스의 exit_status는 TID_ERROR를 가지고 있는데 이 때 fork를 호출한 부모 프로세스에게 TID_ERROR를 반환하면서 에러가 발생했음을 알려준다. 자식이 죽었으니 자식의 exit_sema를 풀어줬어야 했는데 안 해줘서 multi-oom에서 틀렸었다.

 

 

의문점

 

- 왜 메모리가 많은 가상 환경에서는 제대로 돌아가는가?

- 왜 multi-oom만 터지는가? 

 

의문점이 2개나 남았다. 코드를 고친 이후 모든 가상 환경에서 multi-oom이 통과했기 때문에 sema_up의 문제가 맞다는 걸 알 수 있다. 그러나 자식이 터진 후 세마포어를 풀어주는 것은 꽤나 큰 문제인 것 같은데, multi-oom에서만 터졌다는 것이 신기하다. 부모가 자식 프로세스의 세마포어를 풀어주지 않으면 자식 프로세스는 죽지 못한 채 좀비 프로세스로 계속 살아있을텐데.. 신기하다.

 

메모리가 많은 가상 환경에서 터지지 않는 이유는 메모리 공간이 넉넉해서 페이지 폴트가 일어나지 않기 때문이 아닐까 추정된다. 자식 프로세스가 계속해서 살아서 자원을 낭비해도 어차피 공간이 넉넉하기 때문에 별 문제가 없는 것 같다.

'프로젝트 > Pint OS' 카테고리의 다른 글

[Pint OS] Lazy loading(1)  (0) 2023.06.18
[Pint OS] System Calls (6)  (0) 2023.06.17
[Pint OS] System Calls (5)  (1) 2023.06.14
[Pint OS] System Calls (4)  (0) 2023.06.11
[Pint OS] System Calls (3)  (0) 2023.06.11
'프로젝트/Pint OS' 카테고리의 다른 글
  • [Pint OS] Lazy loading(1)
  • [Pint OS] System Calls (6)
  • [Pint OS] System Calls (5)
  • [Pint OS] System Calls (4)
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (576) N
      • 혼잣말 (88)
      • TIL (3) N
      • 커리어 (24)
        • Sendy (21)
        • 외부활동 기록 (2)
      • 프로젝트 (186)
        • 티스토리 API (5)
        • 코드프레소 체험단 (89)
        • Web3 (3)
        • Pint OS (16)
        • 나만무 (14)
        • 대회 (6)
        • 정글 FE 스터디 (16)
        • MailBadara (12)
        • github.io (1)
        • 인공지능 동아리, AID (5)
        • 졸업과제 (18)
        • OSSCA 2024 (1)
      • 크래프톤 정글 2기 (80)
      • IT (169) N
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (40) N
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Velog
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바스크립트
    머신러닝
    사이드프로젝트
    코드프레소
    MailBadara
    NEAR Protocol
    알고리즘
    Pint OS
    부산대
    핀토스
    docker
    pintos
    react
    글리치해커톤
    파이썬
    RNN
    프로그래머스
    OS
    리액트
    블록체인
    크래프톤정글
    센디
    numpy
    니어프로토콜
    해커톤
    Flutter
    나만무
    JavaScript
    딥러닝
    졸업과제
  • hELLO· Designed By정상우.v4.10.3
KimCookieYa
[Pint OS] 에러: multi-oom
상단으로

티스토리툴바