• Home
  • About
    • PI photo

      PI

      Beginner's Blog

    • Learn More
    • Github
  • Posts
    • All Posts
    • All Tags
    • All Categories
  • Projects

[OS] Process

๐Ÿ“† Created: 2025.04.22 Tue

Reading time ~1 minute

๋ชฉ๋ก

  1. ํ”„๋กœ์„ธ์Šค(Process)๋ž€?
  2. ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๋‹จ๊ณ„
  3. ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ๋ฐ ์ „์ด
  4. ์ฃผ์š” ์ž๋ฃŒ๊ตฌ์กฐ
  5. ์ฐธ๊ณ 

Process

1. ํ”„๋กœ์„ธ์Šค(Process)๋ž€?

ํ”„๋กœ์„ธ์Šค(process): ์šด์˜์ฒด์ œ์˜ ๊ธฐ๋ณธ ์ถ”์ƒํ™”๋กœ, ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„, CPU ๋ ˆ์ง€์Šคํ„ฐ ์ƒํƒœ, I/O ์ƒํƒœ(์—ด๋ฆฐ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ๋“ฑ)๋ฅผ ์บก์ฒ˜ํ•˜์—ฌ ๋…๋ฆฝ๋œ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค

ํ”„๋กœ๊ทธ๋žจ: ๋””์Šคํฌ ์ƒ์— ์กด์žฌํ•˜๋ฉฐ ์‹คํ–‰์„ ์œ„ํ•œ ๋ช…๋ น์–ด์™€ ์ •์  ๋ฐ์ดํ„ฐ์˜ ๋ฌถ์Œ์ด๋‹ค.

์‹œ๋ถ„ํ• (time sharing): ํ•˜๋‚˜์˜ process๋ฅผ ์‹คํ–‰ํ•œ ํ›„, ์ค‘์ง€ํ•˜๊ณ , ๋‹ค๋ฅธ process๋ฅผ ์‹คํ–‰ํ•œ๋‹ค

  • ์ž ์žฌ์ ์ธ ๋น„์šฉ: CPU๋ฅผ ๊ณต์œ  -> ๊ฐ process์˜ ์„ฑ๋Šฅ ์ €ํ•˜

๊ณต๊ฐ„๋ถ„ํ• (space sharing): ๊ฐœ์ฒด์—๊ฒŒ ๊ณต๊ฐ„์„ ๋ถ„ํ• ํ•œ๋‹ค

1.1. ๊ตฌ์„ฑ ์š”์†Œ

๋ฉ”๋ชจ๋ฆฌ(memory, address space):

  • ๋ช…๋ น์–ด
  • ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์ด ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐ์ดํ„ฐ

๋ ˆ์ง€์Šคํ„ฐ(register)

  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(PC, Program Counter) = ๋ช…๋ น์–ด ํฌ์ธํ„ฐ(IP, Instruction Pointer): ํ”„๋กœ๊ทธ๋žจ์˜ ์–ด๋А ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€๋ฅผ ์•Œ๋ ค์ค€๋‹ค
  • ์Šคํƒ ํฌ์ธํ„ฐ(Stack Pointer) & ํ”„๋ ˆ์ž„ ํฌ์ธํ„ฐ(Frame Pointer): ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜์™€ ๋ฆฌํ„ด ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ์Šคํƒ์„ ๊ด€๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ์ด๋‹ค

2. ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๋‹จ๊ณ„

  1. ์ฝ”๋“œยท์ •์  ๋ฐ์ดํ„ฐ ๋กœ๋“œ: ์‹คํ–‰ ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ด๋Š”๋‹ค
  2. ์Šคํƒ ์ดˆ๊ธฐํ™”: ์ดˆ๊ธฐ ์Šคํƒ ํ”„๋ ˆ์ž„(์ธ์ˆ˜, ๋ฐ˜ํ™˜ ์ฃผ์†Œ ๋“ฑ)์„ ์„ค์ •ํ•œ๋‹ค
  3. ํž™ ์ดˆ๊ธฐํ™”: malloc() ํ˜ธ์ถœ์„ ๋Œ€๋น„ํ•ด ํž™ ์˜์—ญ์„ ์„ค์ •ํ•œ๋‹ค
  4. I/O ์ดˆ๊ธฐํ™”: UNIX ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ํ‘œ์ค€ ์ž…๋ ฅ/์ถœ๋ ฅ/์˜ค๋ฅ˜ ๋””์Šคํฌ๋ฆฝํ„ฐ(descriptor)๋ฅผ ์—ฐ๋‹ค
  5. ์‹คํ–‰ ์‹œ์ž‘: OS๊ฐ€ ์ง„์ž…์  main()์œผ๋กœ ์ ํ”„ํ•ด ์‚ฌ์šฉ์ž ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๋ฐ ๊ฐœ์‹œํ•œ๋‹ค

3. ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ๋ฐ ์ „์ด

  • Running: ์‹ค์ œ CPU์—์„œ ๋ช…๋ น์„ ์ˆ˜ํ–‰ ์ค‘
  • Ready: ์‹คํ–‰ ์ค€๋น„๋Š” ๋˜์–ด ์žˆ์œผ๋‚˜ ์Šค์ผ€์ค„๋Ÿฌ ๋Œ€๊ธฐ
  • Blocked: I/O ์š”์ฒญ ๋“ฑ์œผ๋กœ ์ด๋ฒคํŠธ ์™„๋ฃŒ ์ „๊นŒ์ง€ ๋Œ€๊ธฐ

์ „์ด ์กฐ๊ฑด:

  • Ready -> Running: ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์„ ํƒ(โ€œScheduledโ€)
  • Running -> Ready: ํƒˆ์Šค์ผ€์ค„(โ€œDescheduledโ€)
  • Running -> Blocked: I/O ์‹œ์ž‘ ๋“ฑ
  • Blocked -> Ready: I/O ์™„๋ฃŒ ๋“ฑ

4. ์ฃผ์š” ์ž๋ฃŒ๊ตฌ์กฐ

ํ”„๋กœ์„ธ์Šค ๋ฆฌ์ŠคํŠธ: Ready ์ƒํƒœ ํ, Running ํ”„๋กœ์„ธ์Šค ์ •๋ณด, Blocked ํ ๋“ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค

PCB (Process Control Block): ํ”„๋กœ์„ธ์Šค๋ณ„ ์ƒํƒœ(enum proc_state), pid, ๋ถ€๋ชจ ํฌ์ธํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐยท์‹œ์ž‘ ์ฃผ์†Œ, ์ปค๋„ ์Šคํƒ ํฌ์ธํ„ฐ, ์ปจํ…์ŠคํŠธ ์ €์žฅ ๊ณต๊ฐ„(struct context), ํŠธ๋žฉ ํ”„๋ ˆ์ž„(struct trapframe) ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค

์ฐธ๊ณ 

  • Operating Systems: Three Easy Pieces


OSTIL Share Tweet +1
/#disqus_thread