• 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: Implementing a simple kernel-level thread

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

Operating System

Due date
2025. 05. 28. 23:59

Overview ๊ฐœ์š”

  • ์ด ํ”„๋กœ์ ํŠธ๋Š” xv6 ์šด์˜์ฒด์ œ์—์„œ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ(kernel-level thread)์˜ ๋‹จ์ˆœํ™”๋œ ๋ฒ„์ „์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ(๋ ˆ์ง€์Šคํ„ฐ ์ƒํƒœ, ์Šคํƒ)๋ฅผ ๊ฐ€์ง€๋ฉด์„œ ์ฃผ์†Œ ๊ณต๊ฐ„, ํŒŒ์ผ descriptor ๋“ฑ์˜ ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

Key Implementation Requirements ํ•ต์‹ฌ ๊ตฌํ˜„ ์š”๊ตฌ์‚ฌํ•ญ

  • ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ ํ˜ธ์ถœ clone()์„ ๊ตฌํ˜„ํ•ด ์ƒˆ๋กœ์šด ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑ
  • ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ ํ˜ธ์ถœ join()์„ ๊ตฌํ˜„ํ•ด ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ ์ข…๋ฃŒ ๋Œ€๊ธฐ
  • ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜ thread_create()์™€ thread_join()์„ ์ž‘์„ฑํ•˜์—ฌ ์œ„ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ๊ฐ์Œˆ
  • kernel/proc.c ๋‚ด์˜ ๊ด€๋ จ ํ•จ์ˆ˜๋“ค์„ ์ˆ˜์ •ํ•˜์—ฌ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ํ•  ๊ฒƒ

Special Characteristics ํŠน์„ฑ

์ด xv6 ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋Š” ๊ธฐ์กด์˜ ์ผ๋ฐ˜์ ์ธ ์Šค๋ ˆ๋“œ์™€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค

  • ๊ฐ ์Šค๋ ˆ๋“œ๋Š” clone ์‹œ์ ์— ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ํŒŒ์ผ descriptor ํ…Œ์ด๋ธ”์„ ๋ณต์‚ฌํ•˜์—ฌ ์†Œ์œ ํ•œ๋‹ค
  • ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ exit()์„ ํ˜ธ์ถœํ•˜๋ฉด ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋œ๋‹ค (ํ”„๋กœ์„ธ์Šค ์ „์ฒด ์ข…๋ฃŒ)
  • ์–ด๋–ค ์Šค๋ ˆ๋“œ๋ผ๋„ exit()์„ ํ˜ธ์ถœํ•˜๋ฉด ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋Š” ์ข…๋ฃŒ๋œ๋‹ค
  • proc ๊ตฌ์กฐ์ฒด๋ฅผ ์Šค๋ ˆ๋“œ ์ œ์–ด ๋ธ”๋ก(TCB)๋กœ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

API Details: System calls ์‹œ์Šคํ…œ ์ฝœ

int clone(void(*fcn)(void*, void*), void *arg1, void *arg2, void *stack);
  • ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋Š” ์ƒˆ๋กœ์šด ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑ
  • fcn: ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ํ•  ํ•จ์ˆ˜
  • arg1, arg2: ์Šค๋ ˆ๋“œ์— ์ „๋‹ฌ๋  ์ธ์ž
  • stack: ์Šค๋ ˆ๋“œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์˜ ์Šคํƒ (ํŽ˜์ด์ง€ ์ •๋ ฌ ํ•„์š”, ์ตœ์†Œ 1 ํŽ˜์ด์ง€ ์ด์ƒ)
  • ์„ฑ๊ณต ์‹œ ์ƒˆ ์Šค๋ ˆ๋“œ์˜ PID ๋ฐ˜ํ™˜, ์‹คํŒจ ์‹œ -1 ๋ฐ˜ํ™˜
int join(void **stack);
  • ์ž์‹ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
  • stack: ์ข…๋ฃŒ๋œ ์Šค๋ ˆ๋“œ์˜ ์Šคํƒ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•  ํฌ์ธํ„ฐ
  • ์„ฑ๊ณต ์‹œ ์ข…๋ฃŒ๋œ ์Šค๋ ˆ๋“œ์˜ PID ๋ฐ˜ํ™˜, ์‹คํŒจ ์‹œ -1 ๋ฐ˜ํ™˜

API Details: User Library Functions ์‚ฌ์šฉ์ž ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜

  • user/thread.h์™€ user/thread.c์— ๊ตฌํ˜„
  • Makefile์— thread.o๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋งํฌ
  • int thread_create(void (*start_routine)(void *, void *), void *arg1, void *arg2);
    • ์Šคํƒ๊ณผ clone์„ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
    • ์ƒˆ ์Šค๋ ˆ๋“œ์˜ PID ๋ฐ˜ํ™˜ ๋˜๋Š” -1 ๋ฐ˜ํ™˜
  • int thread_join();
    • ์ข…๋ฃŒ๋  ์Šค๋ ˆ๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ํ•ด๋‹น ์Šคํƒ์„ ํ•ด์ œ
    • ์ข…๋ฃŒ๋œ ์Šค๋ ˆ๋“œ์˜ PID ๋ฐ˜ํ™˜ ๋˜๋Š” -1 ๋ฐ˜ํ™˜

System Call Modifications ์‹œ์Šคํ…œ ์ฝœ ์ˆ˜์ •

  • ๋‹ค์Œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋“ค์ด ์Šค๋ ˆ๋“œ์™€ ํ•จ๊ป˜ ์ •์ƒ ์ž‘๋™ํ•˜๋„๋ก ๋ณด์žฅํ•ด์•ผ ํ•จ

    • fork: ์Šค๋ ˆ๋“œ๋„ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋ณต์‚ฌํ•ด์„œ ์ •์ƒ์ ์œผ๋กœ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•จ
    • exec: ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘
    • sbrk: ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ํ• ๋‹น ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
    • kill: ์ข…๋ฃŒ๋˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋ฅผ ํ•จ๊ป˜ ์ข…๋ฃŒ์‹œ์ผœ์•ผ ํ•จ
    • sleep: ํ˜ธ์ถœํ•œ ์Šค๋ ˆ๋“œ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์ณ์•ผ ํ•จ
    • pipe: ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ํ™”๋ฉด์— ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

Tips for Development ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํŒ

  • ๊ธฐ๋ณธ xv6 ์Šค์ผ€์ค„๋Ÿฌ(๋ผ์šด๋“œ ๋กœ๋นˆ)๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ

  • xv6์˜ fork, exec, exit, wait ์ฝ”๋“œ๋ฅผ ๋ฉด๋ฐ€ํžˆ ๋ถ„์„

  • ๊ฒฝ์Ÿ ์กฐ๊ฑด ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์ ์ ˆํ•œ ์ž ๊ธˆ ์‚ฌ์šฉ

  • Resource ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ ์ ˆํ•œ ํ•ด์ œ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ˆ˜ํ–‰

  • Thread์™€ process์˜ ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•  ๊ฒƒ

    • ์–ด๋–ค ์ž์›์ด ๊ณต์œ ๋˜๊ณ  ์–ด๋–ค ์ž์›์ด ๋…๋ฆฝ์ ์ธ์ง€ ์ฃผ์˜ ๊นŠ๊ฒŒ ๊ตฌ๋ถ„
    • ์ด ํ”„๋กœ์ ํŠธ์—์„œ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋ณธ ์ฝ”๋“œ๋Š” ์ด๋ฏธ ์ผ๋ถ€ ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ์ด๋ฉฐ, ๊ทธ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์œ„ํ‚ค์— ๋ฌธ์„œํ™”ํ•ด์•ผ ํ•จ

Wiki ์œ„ํ‚ค

  • Design: ์š”๊ตฌ์‚ฌํ•ญ ์ถฉ์กฑ์„ ์œ„ํ•œ ๊ตฌํ˜„ ์ ‘๊ทผ ๋ฐฉ์‹ ์„ค๋ช…
  • Implementation: ์ฃผ์š” ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ทธ ๋ชฉ์  ์„ค๋ช…
  • Results: ๊ตฌํ˜„ ๊ฒฐ๊ณผ ์ฆ๊ฑฐ ์ œ์‹œ (์ปดํŒŒ์ผ ๋กœ๊ทธ, ์‹คํ–‰ ํ™”๋ฉด, ํ”„๋กœ๊ทธ๋žจ ์„ค๋ช… ๋“ฑ)
  • Troubleshooting: ๋ฌธ์ œ ์ƒํ™ฉ๊ณผ ํ•ด๊ฒฐ ๊ณผ์ • ์„œ์ˆ 
  • Additional content: ํ•„์š” ์‹œ ๊ด€๋ จ ์ž๋ฃŒ ํฌํ•จ ๊ฐ€๋Šฅ

Evaluation ํ‰๊ฐ€

  • Completeness: xv6 ์‹œ์Šคํ…œ์ด ์‚ฌ์–‘์— ๋งž๊ฒŒ ์ •์ƒ ์ž‘๋™ํ•ด์•ผ ํ•จ

  • Wiki & Comment Grading: ์œ„ํ‚ค ๋ฌธ์„œํ™” ํ’ˆ์งˆ๋„ ํ‰๊ฐ€์— ๋ฐ˜์˜๋จ. ์ตœ๋Œ€ํ•œ ์ƒ์„ธํžˆ ์ž‘์„ฑํ•  ๊ฒƒ

  • Deadline: ๋งˆ๊ฐ ๊ธฐํ•œ ์—„์ˆ˜. ๋งˆ๊ฐ ํ›„์—๋Š” GitHub ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์ฒ ํšŒ๋จ

    • ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌํ•˜์ง€ ๋งˆ์‹œ์˜ค!

Submission ์ œ์ถœ

  • GitHub๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์™€ ์œ„ํ‚ค๋ฅผ ์ œ์ถœ
    • ๊ณต์ง€์‚ฌํ•ญ ์ฐธ์กฐํ•˜์—ฌ ์ƒˆ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑ
    • ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์€ project02-[student ID]๋กœ ์„ค์ •
    • ์œ„ํ‚ค ํŒŒ์ผ ์ด๋ฆ„: 05_project02_[class number]_[student ID].pdf
  • ์ œ์ถœ ๋งˆ๊ฐ์ผ: 2025๋…„ 5์›” 25์ผ 23:59
    • ๋งˆ๊ฐ์ผ ์ดํ›„ 2025๋…„ 5์›” 26์ผ 23:59๊นŒ์ง€ ์ด๋ฉ”์ผ ์ œ์ถœ ๊ฐ€๋Šฅ. ๋‹จ, ์ ์ˆ˜์˜ 50%๋งŒ ์ธ์ •ํ•จ.
์ตœ๊ทผ ์ˆ˜์ •: 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