• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • Algorithm

    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • Ubuntu

    • ๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ GRUB ํฐํŠธ ๋ณ€๊ฒฝ
    • ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€ ๋น„๋””์˜ค ์ธ๋„ค์ผ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์•ˆ ๋ณด์ž„ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Wine ํ™˜๊ฒฝ์—์„œ ์นด์นด์˜คํ†ก ์‹คํ–‰ ์‹œ explorer.exe ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฒ•
    • ์šฐ๋ถ„ํˆฌ Wine ์นด์นด์˜คํ†ก ์‚ฌ์ง„ ์ด๋ฏธ์ง€ ์Šคํฌ๋ฆฐ์ƒท ๋ถ™์—ฌ๋„ฃ๊ธฐ
    • Wine ์นด์นด์˜คํ†ก ์ด๋ชจ์ง€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Ubuntu ์œˆ๋„์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„๊ธฐ
  • Wellness

    • ์ฐจ์ „์žํ”ผ (Psyllium Husk)
    • ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ž๊ฐ€๋น„๊ฐ•์„ธ์ฒ™ (Nasal Irrigation)
    • QCY HT08 (MeloBuds Pro Plus)
    • ์ฝ˜์„œํƒ€ (Concerta)
    • ์ธ๋ฐ๋†€ (Inderal)
    • ์„คํŠธ๋ž„๋ฆฐ (Sertraline)
    • ๋ฉœ๋ผํ† ๋‹Œ (Melatonin)
    • ์น˜๊ฒฝ๋ถ€ ๋งˆ๋ชจ์ฆ
    • ๋ฐ”๋ฒจ ์Šค์ฟผํŠธ (Barbell Squat)
  • Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
    • ๋ฐ”๋กœํฌ ์Œ์•… (Baroque Music)
  • Design

    • ๊ตฌ๊ธ€์˜ ์•„์ด์ฝ˜ ๋Œ€๊ฐœํŽธ โ€” 6๋…„ ๋งŒ์˜ ์‹ค์ˆ˜ ์ธ์ •
    • ์ œ๋Ÿด๋“œ ์  ํƒ€ โ€” ๋Ÿญ์…”๋ฆฌ ์Šคํฌ์ธ  ์›Œ์น˜์˜ ์ฐฝ์‹œ์ž
    • ๋ฐ”์šฐํ•˜์šฐ์Šค โ€” ํ˜„๋Œ€ ๋””์ž์ธ์˜ ์›์ 
  • Brands

    • NOMOS Glashรผtte
    • Frรฉdรฉrique Constant
    • KZ (Knowledge Zenith)
    • ์—์ŠคํŠธ๋ผ (AESTURA)
    • JINHAO (้‡‘่ฑช)
    • Herman Miller
    • ๋ฐ์Šค์ปค (DESKER)
    • ๋ฌด์‹ ์‚ฌ ์Šคํƒ ๋‹ค๋“œ (Musinsa Standard)
  • Finance

    • ํ˜„๋Œ€์นด๋“œ ZERO โ€” Edition2 vs Edition3 ๋น„๊ต
    • ์‹ ํ•œ์นด๋“œ ์ฒ˜์Œ
    • S&P 500 ETF ํˆฌ์ž ๊ฐ€์ด๋“œ
    • ํŒŒํ‚นํ†ต์žฅ vs CMA ํ†ต์žฅ
    • ๋ฒ„ํฌ์…” ํ•ด์„œ์›จ์ด (Berkshire Hathaway)
    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • Products

    • ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค (Audio Interface)
    • ์ฟ ๋ฃจํ† ๊ฐ€ (KURUTOGA)
    • CX31993 DAC ๋™๊ธ€
    • ํด๋ Œ์ง• ๋ฐ€ํฌ (Cleansing Milk)
    • ํ”ผ์ ฏ ํ† ์ด (Fidget Toy)
    • ThinkPad
  • Programming Languages

    • 8.0. Statement Level Control Structures
    • 8. Subprogram
    • 9. Implementing Subprogram
    • 10.1. Abstract Data Types and Encapsulation Constructs
    • 10.2. Support for Object Oriented Programming
    • 11. Concurrency
    • 12. FPL (1)
    • 13. FPL (2)
    • 14. Exception Handling and Event Handling
    • Final Exam

Project 02: Test Code

์ž‘์„ฑ 2026. 6. 12.ยท์ˆ˜์ • 2026. 6. 12.

Implementing a simple kernel-level thread

Due date
2025. 05. 28. 23:59

Notice

  • ํ”„๋กœ์ ํŠธ ๋งˆ๊ฐ์ผ์ด ์—ฐ์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    • GitHub์— 5์›” 28์ผ 11:59PM๊นŒ์ง€ ์ œ์ถœํ•˜์„ธ์š”.
    • ์ง€๊ฐ ์ œ์ถœ์€ 5์›” 29์ผ 11:59PM๊นŒ์ง€ ์ด๋ฉ”์ผ๋กœ ๋ณด๋‚ด์„ธ์š”.
    • ํ”„๋กœ์ ํŠธ 3์€ 29์ผ์— ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฒˆ ๊ณผ์ œ๋Š” ์ œ๊ณต๋œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งŒ ์ •ํ™•ํžˆ ๋™์ž‘ํ•˜๋ฉด ํ†ต๊ณผ์ž…๋‹ˆ๋‹ค. (ํฌ๊ธฐํ•˜์ง€ ๋งˆ์„ธ์š”!)

    • ์˜ˆ์ œ์˜ ์ถœ๋ ฅ ๋ฉ”์‹œ์ง€๋Š” ์˜ˆ์‹œ์ผ ๋ฟ์ด๋ฏ€๋กœ ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.
    • ์ถœ๋ ฅ ์ˆซ์ž๋‚˜ ์ˆœ์„œ๋Š” ์ •ํ™•ํžˆ ์ผ์น˜ํ•  ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.
    • ๊ฒฐ๊ณผ๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    • ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์™”๋‹ค๋ฉด, ๊ทธ ์ด์œ ๋ฅผ ์œ„ํ‚ค์— ์ž‘์„ฑํ•˜์„ธ์š”.

Tips

  • ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ๊ฒƒ๊ณผ ๊ณต์œ ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ๊ตฌํ˜„ํ•˜์„ธ์š”.
  • ํ•จ์ˆ˜ ์ฃผ์†Œ๋Š” 0์œผ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(gdb) p/x &main_thread
$1 = 0x0

Test 1

  • ์ด ํ…Œ์ŠคํŠธ๋Š” thread API์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ  ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • Thread 0์€ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋Š” ์ฆ‰์‹œ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  • Thread 0์€ ๋งˆ์ง€๋ง‰์— ์ข…๋ฃŒํ•ด์•ผ ํ•˜๋ฉฐ, ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋Š” Thread 0์ด ์ˆ˜ํ–‰ํ•œ ์ˆ˜์ • ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
[TEST#1]
Thread 1 start
Thread 2 start
Thread 3 start
Thread 1 end
Thread 2 end
Thread 3 end
Thread 0 start
Thread 0 end
TEST#1 Passed

Test 2

  • ์ด ํ…Œ์ŠคํŠธ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ์ •ํ™•ํžˆ ๋ฐ›๊ณ  ๊ณต์œ  ์ž์›์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์“ฐ๋Š”์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋Š” ์Šค๋ ˆ๋“œ๋“ค์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ–ˆ๋Š”์ง€๋„ ํ•จ๊ป˜ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
[TEST#2]
Thread 0 start, iter=0
Thread 0 end
Thread 1 start, iter=1000
Thread 1 end
Thread 2 start, iter=2000
Thread 2 end
Thread 3 start, iter=3000
Thread 3 end
Thread 4 start, iter=4000
Thread 4 end
TEST#2 Passed

Test 3

  • ์ด ํ…Œ์ŠคํŠธ๋Š” fork๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • fork ์ดํ›„, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” ๊ธฐ์กด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ์œ ์ง€ํ•˜๊ณ , ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋ณ„๋„์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์‹์ด ๋ถ€๋ชจ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•œ๋‹ค๋ฉด ์—๋Ÿฌ๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
[TEST#3]
Thread 0 start
Thread 1 start
Thread 2 start
Thread 3 start
Child of thread 0 start
Child of thread 0 end
Child of thread 1 start
Child of thread 1 end
Child of thread 2 start
Child of thread 2 end
Child of thread 3 start
Child of thread 3 end
Thread 0 end
Thread 1 end
Thread 2 end
Thread 3 end
TEST#3 Passed

Test 4

  • ์ด ํ…Œ์ŠคํŠธ๋Š” sbrk ํ˜ธ์ถœ์„ ์Šค๋ ˆ๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
    • malloc์€ ๋‚ด๋ถ€์ ์œผ๋กœ sbrk๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ๊ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ๊ฒฝ์šฐ, ์ฃผ์†Œ๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
[TEST#4]
addr 0 at break = 0x88888801000
addr 1 at break = 0x88888801400
addr 2 at break = 0x88888801800
addr 3 at break = 0x88888801c00
addr 4 at break = 0x88888802000
TEST#4 Passed

Test 5

  • ์ด ํ…Œ์ŠคํŠธ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ kill ์‹œ์Šคํ…œ ์ฝœ์„ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋Š” ํ•จ๊ป˜ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด, ๊ทธ ์Šค๋ ˆ๋“œ๋งŒ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
[TEST#5]
Thread 0 start, pid 29
Thread 1 start, pid 29
Thread 2 start, pid 29
Thread 3 start, pid 29
Thread 4 start, pid 29
Thread 2 end
Thread 0 end
TEST#5 Passed

Test 6

  • ์ด ํ…Œ์ŠคํŠธ๋Š” exec ์‹œ์Šคํ…œ ์ฝœ์„ ์Šค๋ ˆ๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • Thread 0์€ thread_fcn ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • exec์ด ํ˜ธ์ถœ๋˜๋ฉด, ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋Š” ์ข…๋ฃŒ๋˜๊ณ  ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋กœ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
[TEST#6]
Thread 0 start
Thread 1 start
Thread 2 start
Thread 3 start
Thread 4 start
Executing...
Thread exec test 0
TEST#6 Passed

Result

$ thread_test
[TEST#1] Passed
[TEST#2] Passed
[TEST#3] Passed
[TEST#4] Passed
[TEST#5] Passed
[TEST#6] Passed
All tests passed. Great job!
์ตœ๊ทผ ์ˆ˜์ •: 26. 6. 12. ์˜คํ›„ 3:28
Contributors: kmbzn, Claude Sonnet 4.6

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2026 kmbzn ยท MIT License