-
xv6 Test codeCS/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명/ 형태로 추가로 저장하여 주면 됩니다.
아래는 실제 실행된 결과입니다.
'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