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명/ 형태로 추가로 저장하여 주면 됩니다.

아래는 실제 실행된 결과입니다.

Makefile Init
결과