Company
๊ต์œก ์ฒ ํ•™

์‹œ์ž‘ํ•˜๊ธฐ(Getting Started)

Pintos ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์‹œ์ž‘ ๊ฐ€์ด๋“œ

1. ์„ค์น˜ ์ „ ์ค€๋น„

โ€ข
Linux ํ™˜๊ฒฝ (์˜ˆ: Ubuntu 16.04 ์ด์ƒ) ๋˜๋Š” WSL2 (Windows์˜ ๊ฒฝ์šฐ)
โ€ข
ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Œ:
โ—ฆ
Ubuntu 16.04.6 LTS
โ—ฆ
gcc 7.4.0
โ—ฆ
qemu-system-x86 2.5.0
ํ•™๊ต ์ œ๊ณต ์„œ๋ฒ„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ํ™˜๊ฒฝ์€ ๊ณต์‹ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2. Pintos ์†Œ์Šค์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ

git clone https://github.com/casys-kaist/pintos-kaist cd pintos-kaist
Bash
๋ณต์‚ฌ
์ฃผ์˜: ์ด ์ €์žฅ์†Œ๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, fork(๋ณต์‚ฌ)ํ•œ ํ›„ ๋™๊ธฐํ™”(sync) ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
์ ˆ๋Œ€๋กœ public fork ๊ธˆ์ง€

3. ๊ฐœ๋ฐœ ๋„๊ตฌ ์„ค์น˜ (Ubuntu / WSL2 ๊ธฐ์ค€)

sudo apt update sudo apt install -y gcc make qemu-system-x86 python3
Bash
๋ณต์‚ฌ
โ€ป gcc๋Š” 32๋น„ํŠธ ์ปดํŒŒ์ผ์„ ์œ„ํ•ด multilib ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ:
sudo apt install gcc-multilib
Bash
๋ณต์‚ฌ

4. ํ™˜๊ฒฝ ์„ค์ • ํ™œ์„ฑํ™”

Pintos ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์•„๋ž˜ ๋ช…๋ น ์‹คํ–‰:
source ./activate
Bash
๋ณต์‚ฌ
์ด ๋ช…๋ น์€ ๋‹ค์Œ์„ ์ž๋™์œผ๋กœ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค:
โ€ข
PATH ๋“ฑ๋ก
โ€ข
Makefile ๋™์ž‘์„ ์œ„ํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜

5. ๋งค๋ฒˆ ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด .bashrc์— ์ถ”๊ฐ€

cd ~ code .bashrc # VSCode๋กœ ํŽธ์ง‘
Bash
๋ณต์‚ฌ
๋‹ค์Œ ๋ผ์ธ์„ ๊ฐ€์žฅ ์•„๋ž˜์— ์ถ”๊ฐ€:
# command for logging in source ~/pintos-kaist/activate
Bash
๋ณต์‚ฌ
๋ณ€๊ฒฝ ํ›„ ํ„ฐ๋ฏธ๋„ ์žฌ์‹œ์ž‘ ๋˜๋Š” ์•„๋ž˜ ๋ช…๋ น์œผ๋กœ ์ ์šฉ:
source ~/.bashrc
Bash
๋ณต์‚ฌ
์ด์ œ Pintos ์‹ค์Šต์„ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!
์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” WSL์˜ Pintos ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ VSCode๋กœ ์—ฐ๋™ํ•ด์„œ ํŽธํ•˜๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋“œ๋ฆด๊ฒŒ์š”.
Windows + WSL + VSCode ์กฐํ•ฉ์€ Pintos ๊ฐœ๋ฐœ์— ์•„์ฃผ ์ข‹์Šต๋‹ˆ๋‹ค.

1. VSCode์— WSL ํ™•์žฅ ์„ค์น˜

1.
VSCode ์‹คํ–‰
2.
์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”์—์„œ Extensions (ํ™•์žฅ) ํด๋ฆญ
3.
๊ฒ€์ƒ‰์ฐฝ์— Remote - WSL ์ž…๋ ฅ
4.
Microsoft์—์„œ ๋งŒ๋“  Remote - WSL ํ™•์žฅ ์„ค์น˜
ํ™•์žฅ ID: ms-vscode-remote.remote-wsl

2. WSL ํ™˜๊ฒฝ์—์„œ VSCode ์—ด๊ธฐ

๋ฐฉ๋ฒ• A. WSL ํ„ฐ๋ฏธ๋„์—์„œ VSCode ์‹คํ–‰

WSL Ubuntu ํ„ฐ๋ฏธ๋„์— ์•„๋ž˜ ์ž…๋ ฅ:
cd /mnt/d/Github/pintos-kaist #๋ณธ์ธ ์„ค์น˜ ๊ฒฝ๋กœ code .
Bash
๋ณต์‚ฌ
code . ๋ช…๋ น์ด ์‹คํ–‰๋˜๋ฉด, ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ VSCode์—์„œ ์—ด๋ฆฌ๋ฉฐ WSL ์—ฐ๋™๋œ ์ฐฝ์ด ๋œน๋‹ˆ๋‹ค.
์ƒ๋‹จ์— [WSL: Ubuntu] ํ‘œ์‹œ๊ฐ€ ๋ณด์ด๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.

3. VSCode ์„ค์ • ์ถ”์ฒœ

settings.json (์„ ํƒ์‚ฌํ•ญ)

.vscode/settings.json ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ๋งŒ๋“ค์–ด ์•„๋ž˜ ๋‚ด์šฉ ์ถ”๊ฐ€:
{ "terminal.integrated.defaultProfile.linux": "bash", "C_Cpp.default.configurationProvider": "ms-vscode.makefile-tools", "files.associations": { "*.h": "c" } }
JSON
๋ณต์‚ฌ
Makefile ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์„ค์ •์ž…๋‹ˆ๋‹ค.

4. C/C++ ํ™•์žฅ๋„ ์„ค์น˜

1.
VSCode ํ™•์žฅ ํƒญ์—์„œ C/C++ ๊ฒ€์ƒ‰
2.
Microsoft์—์„œ ๋งŒ๋“  ํ™•์žฅ ์„ค์น˜
ํ™•์žฅ ID: ms-vscode.cpptools

5. ๋นŒ๋“œ/์‹คํ–‰์€ ํ„ฐ๋ฏธ๋„์—์„œ

โ€ข
VSCode ๋‚ด์—์„œ Ctrl + ~ ํ‚ค ๋ˆŒ๋Ÿฌ ํ„ฐ๋ฏธ๋„ ์—ด๊ณ ,
โ€ข
Pintos ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ž‘์—…:
cd threads # cd = change directory (๋””๋ ‰ํ† ๋ฆฌ ์ด๋™) make # ์ปค๋„ ๋นŒ๋“œ make check # ํ…Œ์ŠคํŠธ ์‹คํ–‰ # ์˜ˆ์‹œ ๊ฒฐ๊ณผ: # 20 of 27 tests failed. (โ† ํ…Œ์ŠคํŠธ ํ†ต๊ณผ์œจ์„ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜ค๋Š” ๋ฉ”์‹œ์ง€)
Bash
๋ณต์‚ฌ
๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„, build ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์ฃผ์š” ํŒŒ์ผ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค
โ€ข
Makefile
pintos/src/Makefile.build์˜ ๋ณต์‚ฌ๋ณธ์ž…๋‹ˆ๋‹ค. ์ปค๋„์„ ์–ด๋–ป๊ฒŒ ๋นŒ๋“œํ•˜๋Š”์ง€๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
kernel.o
์ „์ฒด ์ปค๋„์˜ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
๊ฐ๊ฐ์˜ ์ปค๋„ ์†Œ์Šค ํŒŒ์ผ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ปดํŒŒ์ผํ•œ ํ›„ ์ด๋“ค์„ ํ•˜๋‚˜๋กœ ๋งํ‚นํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ๊ฒฐ๊ณผ๋ฌผ์ž…๋‹ˆ๋‹ค.
๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์„œ GDB ๋˜๋Š” Backtrace๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
kernel.bin
Pintos ์ปค๋„์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ๋•Œ ์‹ค์ œ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” **์‹คํ–‰ ์ด๋ฏธ์ง€(binary)**์ž…๋‹ˆ๋‹ค.
kernel.o์—์„œ ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•œ ๋ฒ„์ „์ด๋ฉฐ, ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜์—ฌ ์ปค๋„ ๋กœ๋”๊ฐ€ ๊ฐ•์ œํ•˜๋Š” 512kB ์ œํ•œ์„ ๋„˜์ง€ ์•Š๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.
โ€ข
loader.bin
์ปค๋„ ๋กœ๋”์˜ ๋ฉ”๋ชจ๋ฆฌ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค.
์ด๋Š” ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ์ปค๋„์„ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜๋Š” ์•„์ฃผ ์งง์€ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
PC BIOS์˜ ์ œ์•ฝ์œผ๋กœ ์ •ํ™•ํžˆ 512๋ฐ”์ดํŠธ ํฌ๊ธฐ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋“ค (build/ ๋‚ด๋ถ€)
์ปดํŒŒ์ผ๋œ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ(.o)๊ณผ ์˜์กด์„ฑ ํŒŒ์ผ(.d)๋“ค์ด ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
.d ํŒŒ์ผ์€ ์–ด๋–ค ํ—ค๋” ํŒŒ์ผ์ด ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ์–ด๋–ค .c ํŒŒ์ผ์„ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ make์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊น… ํ•˜๋Š” ๋ฐฉ๋ฒ•

Source Tree Overview โ€” ์†Œ์Šค ํŠธ๋ฆฌ ๋‘˜๋Ÿฌ๋ณด๊ธฐ

Let's take a look at what's inside. Here's the directory structure that you should see inย pintos/
pintos/ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”์ง€ ํ•จ๊ป˜ ์‚ดํŽด๋ด…์‹œ๋‹ค. ๋‹ค์Œ์€ pintos/ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค:
โ€ข
threads/
Project 1๋ถ€ํ„ฐ ์ˆ˜์ •ํ•˜๊ฒŒ ๋  ๊ธฐ๋ณธ ์ปค๋„์˜ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
userprog/
Project 2๋ถ€ํ„ฐ ์ˆ˜์ •ํ•˜๊ฒŒ ๋  ์œ ์ € ํ”„๋กœ๊ทธ๋žจ ๋กœ๋”์˜ ์†Œ์Šค ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
โ€ข
vm/
๊ฑฐ์˜ ๋น„์–ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. Project 3์—์„œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋Šฅ์„ ์ด๊ณณ์— ๊ตฌํ˜„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
โ€ข
filesys/
๊ธฐ๋ณธ์ ์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์†Œ์Šค ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. Project 2๋ถ€ํ„ฐ ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ Project 4๋ถ€ํ„ฐ์ž…๋‹ˆ๋‹ค.
โ€ข
devices/
I/O ์žฅ์น˜ ์ธํ„ฐํŽ˜์ด์‹ฑ์„ ์œ„ํ•œ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ: ํ‚ค๋ณด๋“œ, ํƒ€์ด๋จธ, ๋””์Šคํฌ ๋“ฑ)
Project 1์—์„œ๋Š” ํƒ€์ด๋จธ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉฐ, ๊ทธ ์™ธ์˜ ๋ถ€๋ถ„์€ ๋Œ€๋ถ€๋ถ„ ์ˆ˜์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.
โ€ข
lib/
ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€๋ถ„์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” Pintos ์ปค๋„๊ณผ Project 2๋ถ€ํ„ฐ ์‹คํ–‰๋˜๋Š” ์œ ์ € ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋‘์— ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์ˆ˜์ •ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
โ€ข
include/lib/kernel/
Pintos ์ปค๋„ ์ „์šฉ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ: ๋น„ํŠธ๋งต(bitmap), ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ, ํ•ด์‹œ ํ…Œ์ด๋ธ” ๋“ฑ ์ปค๋„ ์ฝ”๋“œ์—์„œ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ปค๋„์—์„œ๋Š” #include <...> ๋ฌธ๋ฒ•์œผ๋กœ ์ด ๋””๋ ‰ํ† ๋ฆฌ์˜ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
include/lib/user/
Pintos ์œ ์ € ํ”„๋กœ๊ทธ๋žจ ์ „์šฉ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
์œ ์ € ์ฝ”๋“œ์—์„œ๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ #include <...> ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
tests/
๊ฐ ํ”„๋กœ์ ํŠธ๋ณ„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ˆ˜์ •ํ•ด๋„ ๋˜์ง€๋งŒ, ์ตœ์ข… ์ฑ„์  ์‹œ์—๋Š” ์›๋ž˜ ์ฝ”๋“œ๋กœ ๊ต์ฒด๋˜์–ด ํ…Œ์ŠคํŠธ๋ฉ๋‹ˆ๋‹ค.
โ€ข
examples/
Project 2์—์„œ ์‚ฌ์šฉํ•  ์œ ์ € ํ”„๋กœ๊ทธ๋žจ ์˜ˆ์ œ ์ฝ”๋“œ๋“ค์ž…๋‹ˆ๋‹ค.
โ€ข
include/
ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ—ค๋” ํŒŒ์ผ(.h)๋“ค์˜ ์†Œ์Šค ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

Running Pintos โ€” Pintos ์‹คํ–‰ํ•˜๊ธฐ

We've supplied a program for conveniently running Pintos in a simulator, called pintos. In the simplest case, you can invoke pintos as pintos argument.... Each argument is passed to the Pintos kernel for it to act on.
pintos๋ผ๋Š” ์‹คํ–‰ ๋„๊ตฌ๋Š” ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ(QEMU)์—์„œ Pintos๋ฅผ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ๋กœ pintos argument...์™€ ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ํ•ด๋‹น argument๋“ค์ด Pintos ์ปค๋„๋กœ ์ „๋‹ฌ๋˜์–ด ๋™์ž‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
Try it out. First cd into the newly created build directory. Then issue the command pintos run alarm-multiple, which passes the arguments run alarm-multiple to the Pintos kernel.
ํ•œ๋ฒˆ ์‹คํ–‰ํ•ด ๋ด…์‹œ๋‹ค. ๋จผ์ € threads/build ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•œ ๋’ค, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:
pintos run alarm-multiple
Bash
๋ณต์‚ฌ
์ด ๋ช…๋ น์€ run๊ณผ alarm-multiple์ด๋ผ๋Š” ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ Pintos ์ปค๋„๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
(run์€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ผ๋Š” ์˜๋ฏธ์ด๊ณ , alarm-multiple์€ ์‹คํ–‰ํ•  ํ…Œ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.)
์ด๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด Proxylab์—์„œ ./tiny 8000 ๋ช…๋ น์–ด๊ฐ€ 8000์„ main() ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์›๋ฆฌ์ž…๋‹ˆ๋‹ค.
In these arguments, run instructs the kernel to run a test and alarm-multiple is the test to run. Pintos boots and runs the alarm-multiple test program, which outputs a few screenfuls of text.
run์€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ผ๋Š” ์ง€์‹œ์ด๋ฉฐ, alarm-multiple์€ ์‹คํ–‰ํ•  ํ…Œ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
Pintos๋Š” ๋ถ€ํŒ…๋œ ํ›„ alarm-multiple ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉฐ, ๊ฒฐ๊ณผ๋กœ ์—ฌ๋Ÿฌ ์ค„์˜ ์ถœ๋ ฅ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
You can log serial output to a file by redirecting at the command line, e.g. pintos -- run alarm-multiple > logfile. The pintos program offers several options for configuring QEMU or the virtual hardware.
์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฆฌ๋””๋ ‰์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
pintos -- run alarm-multiple > logfile
Bash
๋ณต์‚ฌ
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด serial output์ด logfile์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ, pintos๋Š” QEMU๋‚˜ ๊ฐ€์ƒ ํ•˜๋“œ์›จ์–ด ์„ค์ •์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์˜ต์…˜๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
If you specify any options, they must precede the commands passed to the Pintos kernel and be separated from them by --, so that the whole command looks like pintos option... -- argument..... Invoke pintos without any arguments to see a list of available options.
pintos ์‹คํ–‰ ์‹œ ์˜ต์…˜์„ ์ฃผ๋ ค๋ฉด ์ปค๋„ ์ธ์ž๋ณด๋‹ค ์•ž์— ์ž‘์„ฑํ•˜๊ณ , --๋กœ ๋ช…๋ น์–ด์™€ ๊ตฌ๋ถ„ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ „์ฒด ๋ช…๋ น์–ด ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
pintos [์˜ต์…˜๋“ค] -- [์ปค๋„์— ์ „๋‹ฌํ•  ์ธ์ž๋“ค]
Bash
๋ณต์‚ฌ
์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜๋Š” QEMU์˜ VGA ์ถœ๋ ฅ์„ ๋„๊ณ  ์ปค๋„์— run alarm-multiple์„ ์ „๋‹ฌํ•˜๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค:
pintos -v -- run alarm-multiple
Bash
๋ณต์‚ฌ
์ฐธ๊ณ : pintos๋ฅผ ์ธ์ž ์—†์ด ์‹คํ–‰ํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜ ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Options includes: how you want VM output to be displayed: use -v to turn off the VGA display, or -s to suppress serial input from stdin and output to stdout. The Pintos kernel has commands and options other than run. These are not very interesting for now, but you can see a list of them using -h, e.g. pintos -h.
์ฃผ์š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
โ€ข
v: VGA ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ๋•๋‹ˆ๋‹ค (๊ทธ๋ž˜ํ”ฝ ์ฐฝ ์—†์ด ์‹คํ–‰๋จ)
โ€ข
s: stdin/stdout์˜ ์ž…์ถœ๋ ฅ์„ ๋ง‰์Šต๋‹ˆ๋‹ค (serial ์ž…์ถœ๋ ฅ ์‚ฌ์šฉ ์‹œ ์œ ์šฉ)
โ€ข
h: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค๋งจ๋“œ์™€ ์˜ต์…˜๋“ค์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค
pintos -h
Bash
๋ณต์‚ฌ
์ฐธ๊ณ : Pintos ์ปค๋„์€ run ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ์ปค๋งจ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ํ˜„์žฌ๋Š” ์ฃผ๋กœ ํ…Œ์ŠคํŠธ ์‹คํ–‰์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
ํ•„์š”ํ•˜๋‹ค๋ฉด ์‹ค์ œ alarm-multiple์ด ์–ด๋–ค ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€, QEMU์—์„œ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์ถœ๋ ฅ์ด ํ๋ฅด๋Š”์ง€๋„ ์„ค๋ช…ํ•ด๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›ํ•˜์‹œ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”!