[크래프톤 정글 2기] Day 68

2023. 6. 10. 15:36·크래프톤 정글 2기

회고

어제 하루 종일 매달렸던 문제를 간신히 해결했다. 원인을 알 수 없어서 이전 깃 푸쉬 내역으로 롤백하고 거기서 부터 다시 구현하다가 process_wait ()에서 시간을 많이 주니까 통과되더라... 너무 허탈했다.
 
fork와 wait 시스템 콜을 바로 하기는 어려울 것 같아서 exec 부터 먼저 구현해보기로 했다. 2시간 정도 걸린 것 같다. exec 시스템 콜이 fork를 써야 하는 줄 알았는데 그건 아니었다. exec는 실행하고 싶은 파일명을 인자로 담아 호출하면 현재 실행 중인 프로그램을 새 실행 파일이 대체하는 시스템 콜이다. 따라서 커널 영역에 파일 이름에 대한 공간만 할당해주고 process_exec (file_name)을 호출하면 끝이다! 프로그램을 실행시키는 process_exec () 함수가 이미 제공되었어서 이 부분에서 어려운 것은 없었지만, 일반적인 동적 메모리 할당을 사용할 수 없어서 파일 이름에 대한 공간을 할당해주는데 어려움이 있었다. 그러나 이것도 Pint OS에서 제공해주는 palloc 라이브러리를 사용하면 간단하다!
 

  • exec () 시스템 콜
int
exec (const char *cmd_line) {
	check_address (cmd_line);
	char *file_name = (char *)palloc_get_page (PAL_ASSERT);
	if (file_name == NULL)
		exit (-1);
	
	memcpy (file_name, cmd_line, strlen (cmd_line)+1);

	if (process_exec (file_name) == -1) {
		exit (-1);
	}
}

 
주의할 점은 syscall.c에 palloc 라이브러리에 대한 include가 명시되지 않았기 때문에 직접 적어줘야 한다! 빼먹으면 알 수 없는 커널 패닉에 빠진다.

오늘의 저녁

 

'크래프톤 정글 2기' 카테고리의 다른 글

[크래프톤 정글 2기] Day 70  (0) 2023.06.12
[크래프톤 정글 2기] Day 69  (0) 2023.06.11
[크래프톤 정글 2기] Day 67  (0) 2023.06.09
[크래프톤 정글 2기] Day 66  (0) 2023.06.08
[크래프톤 정글 2기] Day 65  (0) 2023.06.07
'크래프톤 정글 2기' 카테고리의 다른 글
  • [크래프톤 정글 2기] Day 70
  • [크래프톤 정글 2기] Day 69
  • [크래프톤 정글 2기] Day 67
  • [크래프톤 정글 2기] Day 66
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (572)
      • 혼잣말 (87)
      • TIL (2)
      • 커리어 (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 (167)
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (38)
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

티스토리툴바