. 'Pintos Project/Project 2' 카테고리의 글 목록
본문 바로가기

Pintos Project/Project 23

[PintOS, Project2] System Call 0. System Call이란? 시스템 콜은 사용자가 커널 영역에 접근하고 싶을 때, 원하는 목적을 대신해서 작업하는 프로그래밍 인터페이스이다. 그렇기 때문에 시스템 콜은 커널 모드에서 실행되고, 작업 후 사용자 모드로 복귀한다. PintOS에서는 이를 시스템 콜 핸들러를 통해 시스템 콜 (halt, exit, create, remove)를 호출한다. 시스템 콜을 호출할 때, 원하는 기능에 해당하는 시스템 콜 번호를 rax에 담는다. 그리고 시스템 콜 핸들러는 rax의 숫자로 시스템 콜을 호출하고, 해당 콜의 반환값을 다시 rax에 담아서 intr frame(인터럽트 프레임)에 저장한다. 1. Syscall Handler @/userprog/syscall.c /* The main system call i.. 2021. 2. 17.
[PintOS, Project2] 명령어 실행 기능 구현 1. Process_Exec() 수정 유저 프로그램이 실행하기 전에, 커널은 레지스터에 맨 처음 function의 argument를 저장해야한다. Process_Exec()은 유저가 입력한 명령어를 수행할 수 있도록, 프로그램을 메모리에 적재하고 실행하는 함수이다. 해당 프로그램은 f_name에 문자열로 이름이 저장되어있으나, 문제는 파일 이름 뿐만 아니라 옵션 (예를 들어서 rm -rf *을 명령어로 입력한다면, 실행 프로그램 파일은 rm이 되지만, 현재 f_name은 rm 뿐 아니라 -rf, * 도 함께 들어가있다.) 이 있기 때문에 이를 분리해줘야한다. 우선 원본은 아래와 같다. @/userprog/process.c /* Switch the current execution context to the.. 2021. 2. 17.
[PintOS, Project 2] User Programs Introduction - 만약 추과 과제의 테스트케이스를 도전하고 싶으면 userprog/Make.vars를 수정하라. - TODO가 없는 코드는 수정할 필요가 없다. We allow more than one process to run at a time. Each process has one thread (multithreaded processes are not supported). - 다중 프로세스로 구성되어 있다. User programs are written under the illusion that they have the entire machine. - UP는 전체 장치들이 있다는 가정하에 작성한다. From now on, we will test your operating system by running user p.. 2021. 2. 5.