[Pintos-Kaist] Project3 - Memory Management
·
운영체제
핀토스 프로젝트 3에서는 Virtual Memory에 관한 내용들을 토대로 구현을 시작합니다. 우선 첫 번째 구현 요소인 Memory Management에 대해서 알아보겠습니다. Memory Management 가상 메모리 시스템을 지원하려면 가상 페이지와 물리적 프레임을 효과적으로 관리해야 합니다. 즉, 어떤 (가상 또는 물리적) 메모리 영역이 어떤 목적으로, 누가, 어떤 용도로 사용되고 있는지 등을 추적해야 합니다. 먼저 보충 페이지 테이블을 다룬 다음 물리적 프레임을 다룰 것입니다. 이해를 돕기 위해 가상 페이지에는 '페이지'라는 용어를, 물리적 페이지에는 '프레임'이라는 용어를 사용한다는 점에 유의하세요. Struct page struct page에 hash_elem 멤버를 추가해서 해당 페이지를..
[Pintos-Kaist] Project2 - System Call(1) - (halt, exit, create, remove)
·
운영체제
과제 목표 시스템 콜 핸들러 및 시스템 콜(halt, exit, create, remove) 구현 과제 설명 핀토스는 시스템 콜 핸들러가 구현되어 있지 않아 시스템 콜이 처리되지 않음. 핀토스의 시스템 콜 메커니즘을 이해하고 시스템 콜 핸들러를 구현한다. 시스템 콜(halt, exit, createm remove)을 구현하고 시스템 콜 핸들러를 통해 호출한다. 💡 시스템 콜 시스템 콜은 운영 체제가 제공하는 서비스에 대한 프로그래밍 인터페이스입니다. 시스템 콜은 커널모드에서 실행되고, 처리 후 사용자 모드로 복귀됩니다. 시스템 콜의 핵심은 시스템 콜 호출 시, 하드웨어 인터럽트가 발생하여 실행모드 의 우선순위가 특수모드로 상향조정 되는 것입니다. 유저 프로그램에서 write() 함수를 호출한다. writ..
[Pintos-Kaist] Project2 - Argument Passing
·
운영체제
과제 목표 Command line Parsing 기능 구현 과제 설명 Pintos는 프로그램과 인자를 구분하지 못하는 구조로 되어있습니다. ex) /bin/ls -l foo bar 의 경우 null 포인터를 인식하지못하고 문자열 전체로 인식. 명령어를 널포인터 기준으로 단어를 분할해서 /bin/ls, -l, foo, bar로 나눠서 스택에 푸시한다. 스택에 저장된 인자를 응용 프로그램에 전달하는 기능을 구현합니다. 수정 부분 process_create_initd() 함수에서 프로그램을 실행 할 프로세스를 생성합니다. process_exec() 함수에서 프로그램을 메모리에 탑재하고 응용 프로그램을 실행합니다. argument_stack() 함수에서 함수 호출 규약에 따라 유저 스택에 프로그램 이름과 인자들..
yunchan^.^
'핀토스' 태그의 글 목록