Skip to content
Snippets Groups Projects
Commit f5700cb5 authored by 홍 유빈's avatar 홍 유빈
Browse files

Update Getting Started.md

parent 4a56085f
Branches
No related tags found
No related merge requests found
...@@ -20,33 +20,42 @@ $ source ./activate ...@@ -20,33 +20,42 @@ $ source ./activate
### 소스 트리 개요 ### 소스 트리 개요
디렉토리 안의 내용을 확인해 봅시다. pintos/ 디렉토리에서 확인할 수 있는 디렉터리 구조는 다음과 같습니다: 디렉토리 안의 내용을 확인해 봅시다. pintos/ 디렉토리에서 확인할 수 있는 디렉터리 구조는 다음과 같습니다:
-threads/: 기본 커널의 소스 코드가 포함되어 있으며, 프로젝트 1부터 이 코드를 수정하게 됩니다. -threads/: 기본 커널의 소스 코드가 포함되어 있으며, 프로젝트 1부터 이 코드를 수정하게 됩니다.
userprog/: 사용자 프로그램 로더의 소스 코드가 포함되어 있으며, 프로젝트 2부터 이 코드를 수정하게 됩니다. userprog/: 사용자 프로그램 로더의 소스 코드가 포함되어 있으며, 프로젝트 2부터 이 코드를 수정하게 됩니다.
vm/: 거의 비어 있는 디렉터리입니다. 프로젝트 3에서 가상 메모리를 이곳에 구현하게 됩니다. vm/: 거의 비어 있는 디렉터리입니다. 프로젝트 3에서 가상 메모리를 이곳에 구현하게 됩니다.
filesys/: 기본 파일 시스템의 소스 코드가 포함되어 있습니다. 프로젝트 2부터 이 파일 시스템을 사용하지만, 프로젝트 4까지는 수정하지 않습니다. filesys/: 기본 파일 시스템의 소스 코드가 포함되어 있습니다. 프로젝트 2부터 이 파일 시스템을 사용하지만, 프로젝트 4까지는 수정하지 않습니다.
devices/: I/O 장치를 인터페이스하는 소스 코드가 포함되어 있습니다 : 키보드, 타이머, 디스크 등. 프로젝트 1에서 타이머 구현을 수정합니다. 그 외에는 이 코드를 변경할 필요가 없습니다. devices/: I/O 장치를 인터페이스하는 소스 코드가 포함되어 있습니다 : 키보드, 타이머, 디스크 등. 프로젝트 1에서 타이머 구현을 수정합니다. 그 외에는 이 코드를 변경할 필요가 없습니다.
lib/: 표준 C 라이브러리의 일부를 구현한 코드가 포함되어 있습니다. 이 디렉터리의 코드는 Pintos 커널에 컴파일되며, 프로젝트 2부터는 Pintos에서 실행되는 사용자 프로그램에도 사용됩니다. 이 코드는 수정할 필요가 거의 없습니다. lib/: 표준 C 라이브러리의 일부를 구현한 코드가 포함되어 있습니다. 이 디렉터리의 코드는 Pintos 커널에 컴파일되며, 프로젝트 2부터는 Pintos에서 실행되는 사용자 프로그램에도 사용됩니다. 이 코드는 수정할 필요가 거의 없습니다.
include/lib/kernel/: Pintos 커널에만 포함되는 C 라이브러리의 일부가 들어 있습니다. 비트맵, 이중 연결 리스트, 해시 테이블과 같은 데이터 타입 구현이 포함되어 있으며, 커널 코드에서 자유롭게 사용할 수 있습니다. 커널에서 이 디렉터리의 헤더는 #include <...> 형식으로 포함할 수 있습니다. include/lib/kernel/: Pintos 커널에만 포함되는 C 라이브러리의 일부가 들어 있습니다. 비트맵, 이중 연결 리스트, 해시 테이블과 같은 데이터 타입 구현이 포함되어 있으며, 커널 코드에서 자유롭게 사용할 수 있습니다. 커널에서 이 디렉터리의 헤더는 #include <...> 형식으로 포함할 수 있습니다.
include/lib/user/: Pintos 사용자 프로그램에만 포함되는 C 라이브러리의 일부가 들어 있습니다. 사용자 프로그램에서는 이 디렉터리의 헤더를 #include <...> 형식으로 포함할 수 있습니다. include/lib/user/: Pintos 사용자 프로그램에만 포함되는 C 라이브러리의 일부가 들어 있습니다. 사용자 프로그램에서는 이 디렉터리의 헤더를 #include <...> 형식으로 포함할 수 있습니다.
tests/: 각 프로젝트를 위한 테스트 코드가 포함되어 있습니다. 제출물 테스트를 위해 이 코드를 수정할 수 있습니다. 그러나 채점 시에는 원본 코드로 대체됩니다. tests/: 각 프로젝트를 위한 테스트 코드가 포함되어 있습니다. 제출물 테스트를 위해 이 코드를 수정할 수 있습니다. 그러나 채점 시에는 원본 코드로 대체됩니다.
examples/: 프로젝트 2부터 사용할 예제 사용자 프로그램이 포함되어 있습니다. examples/: 프로젝트 2부터 사용할 예제 사용자 프로그램이 포함되어 있습니다.
include/: 헤더 파일 (*.h) 의 소스 코드가 포함되어 있습니다. include/: 헤더 파일 (*.h) 의 소스 코드가 포함되어 있습니다.
### Pintos 빌드하기 ### Pintos 빌드하기
다음 단계로, 첫 번째 프로젝트를 위해 제공된 소스 코드를 빌드합니다.
먼저, threads 디렉토리로 이동(cd)합니다. 이후 make 명령을 실행합니다. 다음 단계로, 첫 번째 프로젝트를 위해 제공된 소스 코드를 빌드합니다. 먼저, threads 디렉토리로 이동(cd)합니다. 이후 make 명령을 실행합니다. 이 명령은 threads 디렉토리 아래에 build 디렉토리를 생성하고, 해당 디렉토리에 Makefile과 몇 개의 하위 디렉토리를 생성한 후, 커널을 빌드합니다.
이 명령은 threads 디렉토리 아래에 build 디렉토리를 생성하고, 해당 디렉토리에 Makefile과 몇 개의 하위 디렉토리를 생성한 후, 커널을 빌드합니다.
빌드 후, build 디렉토리에 생성된 주요 파일은 다음과 같습니다: 빌드 후, build 디렉토리에 생성된 주요 파일은 다음과 같습니다:
•Makefile:
pintos/src/Makefile.build의 복사본입니다. 커널을 빌드하는 방법을 설명합니다. •Makefile: pintos/src/Makefile.build의 복사본입니다. 커널을 빌드하는 방법을 설명합니다.
•kernel.o: •kernel.o: 전체 커널의 오브젝트 파일입니다. 각 커널 소스 파일에서 컴파일된 개별 오브젝트 파일들을 하나로 링킹(linking)하여 생성된 오브젝트 파일입니다. 디버그 정보를 포함하고 있어 GDB(참고: GDB)나 백트레이스(참고: Backtraces)를 실행할 수 있습니다.
전체 커널의 오브젝트 파일입니다. 각 커널 소스 파일에서 컴파일된 개별 오브젝트 파일들을 하나로 링킹(linking)하여 생성된 오브젝트 파일입니다. 디버그 정보를 포함하고 있어 GDB(참고: GDB)나 백트레이스(참고: Backtraces)를 실행할 수 있습니다. / •kernel.bin: Pintos 커널을 실행하기 위해 정확한 바이트 데이터가 메모리에 로드되는 커널의 메모리 이미지(memory image)입니다. 이는 디버그 정보가 제거된 kernel.o 파일로, 메모리 공간을 크게 절약하여 커널이 커널 로더의 설계의 512kB 크기 제한을 초과하지 않도록 합니다.
•kernel.bin: •loader.bin: 커널 로더의 메모리 이미지입니다. 이는 어셈블리 언어로 작성된 작은 코드 덩어리로, 디스크에서 커널을 메모리로 읽어 들여 실행을 시작합니다. 이 파일의 크기는 PC BIOS에 의해 고정된 512바이트입니다. build 디렉토리의 하위 디렉토리에는 컴파일러가 생성한 오브젝트 파일(.o)과 의존성 파일(.d)이 포함되어 있습니다. 의존성 파일은 다른 소스 파일이나 헤더 파일이 변경되었을 때, make가 어떤 소스 파일을 재컴파일해야 할지 판단하는 데 필요한 정보를 제공합니다.
Pintos 커널을 실행하기 위해 정확한 바이트 데이터가 메모리에 로드되는 커널의 메모리 이미지(memory image)입니다. 이는 디버그 정보가 제거된 kernel.o 파일로, 메모리 공간을 크게 절약하여 커널이 커널 로더의 설계의 512kB 크기 제한을 초과하지 않도록 합니다.
•loader.bin:
커널 로더의 메모리 이미지입니다. 이는 어셈블리 언어로 작성된 작은 코드 덩어리로, 디스크에서 커널을 메모리로 읽어 들여 실행을 시작합니다. 이 파일의 크기는 PC BIOS에 의해 고정된 512바이트입니다. build 디렉토리의 하위 디렉토리에는 컴파일러가 생성한 오브젝트 파일(.o)과 의존성 파일(.d)이 포함되어 있습니다. 의존성 파일은 다른 소스 파일이나 헤더 파일이 변경되었을 때, make가 어떤 소스 파일을 재컴파일해야 할지 판단하는 데 필요한 정보를 제공합니다.
### Pintos 실행하기 ### Pintos 실행하기
우리는 시뮬레이터에서 Pintos를 편리하게 실행할 수 있는 pintos라는 프로그램을 제공합니다. 가장 간단한 경우로, pintos를 pintos 인자(argument)... 형태로 실행할 수 있습니다. 각 인자는 Pintos 커널에 전달되어 실행됩니다. 한번 실행해 보세요. 먼저 새로 생성된 build 디렉토리로 이동합니다(cd). 그런 다음 pintos run alarm-multiple 명령어를 실행합니다. 이 명령은 run alarm-multiple 인자를 Pintos 커널에 전달합니다. 이 인자에서 run은 커널에 테스트를 실행하도록 지시하고, 이때 alarm-multiple이 실행할 테스트입니다. Pintos는 부팅한 뒤 alarm-multiple 테스트 프로그램을 실행하며, 이는 몇 화면 분량의 텍스트를 출력합니다. 우리는 시뮬레이터에서 Pintos를 편리하게 실행할 수 있는 pintos라는 프로그램을 제공합니다. 가장 간단한 경우로, pintos를 pintos 인자(argument)... 형태로 실행할 수 있습니다. 각 인자는 Pintos 커널에 전달되어 실행됩니다. 한번 실행해 보세요. 먼저 새로 생성된 build 디렉토리로 이동합니다(cd). 그런 다음 pintos run alarm-multiple 명령어를 실행합니다. 이 명령은 run alarm-multiple 인자를 Pintos 커널에 전달합니다. 이 인자에서 run은 커널에 테스트를 실행하도록 지시하고, 이때 alarm-multiple이 실행할 테스트입니다. Pintos는 부팅한 뒤 alarm-multiple 테스트 프로그램을 실행하며, 이는 몇 화면 분량의 텍스트를 출력합니다.
명령줄(command line)에서 리디렉션을 사용하여 시리얼 출력을 파일에 기록할 수도 있습니다. 예시: pintos -- run alarm-multiple > logfile. pintos 프로그램은 qemu 또는 가상 하드웨어를 구성할 수 있는 여러 옵션을 제공합니다. 옵션을 지정하려면 커널에 전달할 명령어보다 앞에 작성해야 하며, 옵션과 명령어는 --로 구분해야 합니다. 따라서 전체 명령은 pintos 옵션... -- 인자... 형태가 됩니다. pintos를 인자 없이 실행하면 사용 가능한 옵션 목록을 확인할 수 있습니다. 옵션에는 VM 출력 방식을 설정하는 기능이 포함되어 있으며, -v를 사용하여 VGA 출력을 비활성화하거나, -s를 사용하여 표준 입력(stdin) 및 표준 출력(stdout)으로의 시리얼 입출력을 억제할 수 있습니다. Pintos 커널은 run 명령 외에도 다양한 명령어와 옵션을 제공합니다. 지금 이것들은 크게 중요하지 않지만, -h를 사용하여 목록을 확인할 수 있습니다. 예: pintos –h 명령줄(command line)에서 리디렉션을 사용하여 시리얼 출력을 파일에 기록할 수도 있습니다. 예시: pintos -- run alarm-multiple > logfile. pintos 프로그램은 qemu 또는 가상 하드웨어를 구성할 수 있는 여러 옵션을 제공합니다. 옵션을 지정하려면 커널에 전달할 명령어보다 앞에 작성해야 하며, 옵션과 명령어는 --로 구분해야 합니다. 따라서 전체 명령은 pintos 옵션... -- 인자... 형태가 됩니다. pintos를 인자 없이 실행하면 사용 가능한 옵션 목록을 확인할 수 있습니다. 옵션에는 VM 출력 방식을 설정하는 기능이 포함되어 있으며, -v를 사용하여 VGA 출력을 비활성화하거나, -s를 사용하여 표준 입력(stdin) 및 표준 출력(stdout)으로의 시리얼 입출력을 억제할 수 있습니다. Pintos 커널은 run 명령 외에도 다양한 명령어와 옵션을 제공합니다. 지금 이것들은 크게 중요하지 않지만, -h를 사용하여 목록을 확인할 수 있습니다. 예: pintos –h
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment