코치님의 구현 팁

0. 전체 구조 파악

1. 자식 프로세스 실행 제어 및 동기화 (Process Control & Synchronization)

2. 프로세스 인자 파싱 (Argument Parsing)

❗️주의:64bit 아키텍쳐와 32 bit 아키텍쳐는 function call 하는 방식 자체가 다름
  - 32bit: argument를 stack에 값까지 다 넣게 되어있음
  - 64bit: argument를 레지스터에 넣음

3. 프로세스 생성 및 종료 (Process Creation and Termination)

추가 정보

Project 2: 사용자 프로그램

Pintos의 인프라와 스레드 패키지에 익숙해졌다면 이제 사용자 프로그램을 실행할 수 있도록 시스템을 확장할 차례입니다. 기본 제공 코드는 이미 사용자 프로그램을 로드하고 실행하는 기능을 지원하지만, I/O나 상호작용은 아직 불가능합니다. 이번 프로젝트에서는 시스템 호출을 통해 사용자 프로그램이 운영체제와 상호작용할 수 있도록 구현해야 합니다.

이 과제는 userprog 디렉토리를 중심으로 작업하지만, Pintos의 거의 모든 다른 부분과도 상호작용하게 됩니다. 이 문서에서는 관련된 부분들을 설명합니다.

Project 1 기반 위에 작업해야 함

Project 2는 Project 1 위에서 구축되어야 하며, 비록 Project 1의 코드가 직접적으로 Project 2의 코드에 영향을 주지는 않지만, Project 1의 테스트 케이스들을 통과해야 합니다. 이는 단계적으로 완성해 나가는 프로젝트이기 때문입니다.

추가 도전 과제 (Optional)

Project 2에는 추가 도전 과제가 있습니다. 이 구현은 선택 사항이며, 제공되는 스켈레톤 코드는 없고, 테스트 케이스만 제공됩니다. 설계는 전적으로 본인이 직접 해야 합니다. 추가 도전 과제를 제출하고 테스트하려면 userprog/Make.vars 파일을 수정해야 합니다.

주의사항