👨‍💻 Seungineer's GitHub Contribution

아자아자 3

[PintOS] User Program - System Call (Project 2, TIL)

KAIST PintOS 강의 및 Instruction, 한양대 PintOS Slides를 참고하며 학습한 내용을 정리하였습니다.학습 도중 작성한 내용이라 틀린 내용이 있을 수 있습니다.들어가기 전에레지스터 역할 정리%rax : system call number 저장 ▶️ 운영체제가 어떤 시스템 호출을 수행할지 결정하는 데 사용됨%rdi, %rsi, %r10, % r8, %r9 : system call arguments 전달에 사용(호출에 따라 일부만 사용될 수 있으며, 순서대로 할당됨)%rcx : syscall 명령어 사용 시 %rcx 레지스터에 복귀 주소가 저장됨(일반적인 함수 호출 시에는 스택에 저장!) ⬅️ 운영체제에서 자동 처리%r11 : syscall 명령어 사용 시 현재 process stat..

[PintOS] User Program - Arguments parsing (Project 2, TIL)

KAIST PintOS 강의 및 Instruction, 한양대 PintOS Slides를 참고하며 학습한 내용을 정리하였습니다.학습 도중 작성한 내용이라 틀린 내용이 있을 수 있습니다. Arguments ParsingCommand Line에 대해 공백(' ') 단위로 분리해야 한다. 현재는 Arguments가 분할되지 않아 하나의 배열로 입력되고 있다. 이렇게 입력되면, filename을 찾을 수도 없거니와 여러 명령 옵션을 사용할 수가 없다. 핀토스에서는 '문자열 분리' 함수(strtok_r())를 지원하므로 이를 사용할 수 있다.strtok_r()tid_tprocess_create_initd (const char *file_name) { char *fn_copy; char *temp_ptr; char..

[PintOS] User Program - 배경지식(Project 2, TIL)

KAIST PintOS 강의 및 Instruction, 한양대 PintOS Slides를 참고하며 학습한 내용을 정리하였습니다.학습 도중 작성한 내용이라 틀린 내용이 있을 수 있습니다.Project 2 : User Programs최종 구현되어야 할 것현재 핀토스는 새로운 프로세스(User process)를 생성한 후 scheduling() 될 때 Init process가 종료(exit)되기에 User process 실행이 불가능하다. 최종 구현 후에는 Init process가 mother of all process로, '자식 process의 완료 대기 상태가 되고, User process 종료 후에 exit 및 프로세스 종료되어야 한다.thread_create()커널 스택에 4KB 공간의 Page를 하나..