ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • xv6 Test code
    CS/OS 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
    결과

    'CS > OS' 카테고리의 다른 글

    9. Virtual Memory advantages and paging algorithm  (0) 2022.06.23
    8. Vitrual Memory  (0) 2022.06.23
    xv6 (linux Init)  (0) 2022.06.02
    7.Posix thread(Pthread)  (0) 2022.05.25
    5. Process_Scheduling  (0) 2022.05.19

    댓글

Designed by Tistory.