CS/OS
xv6 Test code
Dortmoot
2022. 6. 2. 17:12
Github = https://github.com/Kimuksung/Xv6 를 참고하시면 됩니다.
Test Code를 돌리기 전에 Kaist Os Lab을 참고하여 작성하였습니다.
해당 OS lab pdf를 먼저 참고오시면 매우 도움이 됩니다.
1. Execute a Program in Xv6
제가 임의로 만든 test.c 와 practice1.c 를 돌려볼 예정입니다.
xv6 제공하는 header file이 정해져 있기 때문에 아래와 같은 상황을 주의해야합니다.
따라서 stdio.h 사용할 수 없습니다. 대신에 아래 header file로 생성해야 합니다. 상황에 맞게 가져다가 사용하면 됩니다.
“types.h” : header file for variable types
“user.h” : header file for system calls
“fcntl.h” : header file for file IO
test.c 는 간단하게 출력하여 주는 코드이며, practice1.c 코드는 Process를 fork되는 과정을 보여줍니다.
코드는 아래와 같습니다.
//test.c
#include "types.h"
#include "user.h"
int main(int argc , char *argv[]){
printf(1,"Hello world! \n " );
exit();
}
//practice1.c
#include "types.h"
#include "user.h"
int main(int argc , char *argv[]){
int pid = fork();
if(pid>0){
printf(1,"parent:child=%d\n",pid);
pid = wait();
printf(1,"child %d is done\n",pid);
} else if(pid==0){
printf(1,"child exiting\n");
exit();
}
else{
printf(1,"fork error\n");
}
exit();
}
여기서 중요한 점은 해당 코드는 실행하기 위해서는 별도로 Makefile에 추가하여 주어야 합니다.
실행할 File명을 _File명/ 형태로 추가로 저장하여 주면 됩니다.
아래는 실제 실행된 결과입니다.