diff --git a/Introduction/Getting Started.md b/Introduction/Getting Started.md index e4e888060eb9d71490a33a770ca680e2fa73df20..dca35b99c393e8165bebd949d22d3eb8501551ec 100644 --- a/Introduction/Getting Started.md +++ b/Introduction/Getting Started.md @@ -23,25 +23,25 @@ $ source ./activate -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 빌드하기 @@ -50,8 +50,11 @@ include/: 헤더 파일 (*.h) 의 소스 코드가 포함되어 있습니다. 빌드 후, build 디렉토리에 생성된 주요 파일은 다음과 같습니다: •Makefile: pintos/src/Makefile.build의 복사본입니다. 커널을 빌드하는 방법을 설명합니다. + •kernel.o: 전체 커널의 오브젝트 파일입니다. 각 커널 소스 파일에서 컴파일된 개별 오브젝트 파일들을 하나로 링킹(linking)하여 생성된 오브젝트 파일입니다. 디버그 정보를 포함하고 있어 GDB(참고: GDB)나 백트레이스(참고: Backtraces)를 실행할 수 있습니다. + •kernel.bin: Pintos 커널을 실행하기 위해 정확한 바이트 데이터가 메모리에 로드되는 커널의 메모리 이미지(memory image)입니다. 이는 디버그 정보가 제거된 kernel.o 파일로, 메모리 공간을 크게 절약하여 커널이 커널 로더의 설계의 512kB 크기 제한을 초과하지 않도록 합니다. + •loader.bin: 커널 로더의 메모리 이미지입니다. 이는 어셈블리 언어로 작성된 작은 코드 덩어리로, 디스크에서 커널을 메모리로 읽어 들여 실행을 시작합니다. 이 파일의 크기는 PC BIOS에 의해 고정된 512바이트입니다. build 디렉토리의 하위 디렉토리에는 컴파일러가 생성한 오브젝트 파일(.o)과 의존성 파일(.d)이 포함되어 있습니다. 의존성 파일은 다른 소스 파일이나 헤더 파일이 변경되었을 때, make가 어떤 소스 파일을 재컴파일해야 할지 판단하는 데 필요한 정보를 제공합니다. ### Pintos 실행하기