2025/05/24 2

[pintos] 2주차 - Argument Passing 구현 과정

디버깅 과정 몇 개를 소개하ㅏ겠다 구현한 코드static boolload (const char *file_name, struct intr_frame *if_) { struct thread *t = thread_current (); struct ELF ehdr; struct file *file = NULL; off_t file_ofs; bool success = false; int i; /* arguments set up */ int argc = 0; char *argv[128]; char **save_ptr; char *str; for(str = strtok_r(file_name, " ", save_ptr); str != NULL; str = strtok_r(file_name, " ", save_ptr)..

정글/Pintos 2025.05.24

[pintos] 2주차 - 키워드 정리

User mode vs Kernel mode일반 응용 프로그램은 하드웨어를 제어할 수 없게 만들기 위해서 유저모드와 커널모드를 분리시켰다.예를 들어 디스크에 저장된 정보들은 보호되어야 한다. 아무 응용 프로그램이나 읽을 수 있게 만들면 안 된다. 따라서 ‘시스템 콜’이라는 특정 절차를 거쳐 커널 모드로 진입해야 파일 시스템을 통해 디스크의 값을 읽고 쓸 수 있다.프로세스가 유저 모드에서 커널 모드로 진입하는 유일한 방법은 인터럽트, 오류, 트랩 시스템 콜 같은 예외를 통해서이다. 예외가 발생하여 제어가 예외 핸들러로 넘어가면 프로세서는 유저 모드에서 커널 모드로 전환한다. 핸들러는 커널 모드에서 돌아간다. 제어가 응용 코드로 돌아오면 프로세서는 모드를 커널 모드에서 다시 유저 모드로 변환한다.User m..

정글/Pintos 2025.05.24