XV6
-
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..
-
xv6 (linux Init)CS/OS 2022. 6. 2. 14:22
linux 설치 Orcale VM Virtual Machine -> OS( LTS 18.04 build-essential 시에 20.04는 충돌이 난다) setting sudo apt-get install git wget qemu sudo apt install build-essential git clone https://github.com/mit-pdos/xv6-public.git sudo apt-get install gdb ( if you don't have it.. ) cd xv6-public make qemu-nox CPUS=1 #qemu exit Ctrl+A -> X Run #init.c // init: The initial user-level program #include "types.h" #i..
-
XV6 - 이론 정리_2CS/OS 2022. 5. 13. 18:33
이제부터는 XV6가 어떻게 동작하는 지 실제 부팅부터 알아볼 겁니다. Step1 - Booting PC powers on -> load bootloader(bootasm.S, bootmain.c) -> load kernel -> execute kernel entry 컴퓨터는 하드웨어를 초기화 및 부트로더라는 프로그램(bootasm.S)을 실행시킨다. 부트로더(xv6에서 bootasm.S, bootmain.c의 코드로 구성된다.)는 항상 디스크의 첫번째 섹터에 위치하며 커널 이미지를 메모리로 로드한다. 부트로더는 항상 xv6 kernel을 물리메모리 0x100000 번지에 위치시킨다. 더 낮은 번지의 물리메모리는 I/O device에 관해 쓰인다. 부트로더가 xv6의 entry(entry.S)에 진입함으로..
-
XV6 - 이론 정리_1CS/OS 2022. 5. 13. 18:03
앞서 배운 OS 내용을 바탕으로 실제 MIT 교육용 코드에서 어떻게 동작하는지 알아보겠습니다. XV6 라는 OS를 가져와서 사용하였습니다. OS 중요 요소는 Time-sharing / Isolation / Interaction으로 나눌 수 있는데, Time-sharing은 하나의 Program이 독점하는 것을 막기 위해, Isolation은 사용자에게 모든 권한을 주지 않으며, Kernel 영역에서만 Resource를 접근하기 위함이라고 설명하였다. 그렇다면, Interaction은 어떻게 이루어질까? Unix System에서는 Process간에 file descriptor를 통하여 Interaction이 발생한다. File Descriptor가 존재함으로써, Kernel이 예외 사항을 처리 할 수 있다..