์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[์šด์˜์ฒด์ œ] 2. Process

CS/์šด์˜์ฒด์ œ๐Ÿฃ

by :ํ•ดํ”ผ๋ž˜๋น—๐Ÿพ 2021. 3. 17. 09:45

๋ณธ๋ฌธ

 

์ปดํŒŒ์ผ๋Ÿฌ Source Code -> Object ํŒŒ์ผ
๋ง์ปค ์—ฌ๋Ÿฌ Object ํŒŒ์ผ๋“ค๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ, ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ ๋  ์ˆ˜์žˆ๋Š” ํ•˜๋‚˜์˜ Executable๋กœ ๋ณ€ํ™˜.
๋กœ๋” Executable์„ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ์šด์˜ ์ฒด์ œ์˜ ์ผ๋ถ€.

Object ํŒŒ์ผ 

ํ”„๋กœ์„ธ์Šค๋กœ ๋ณ€ํ™˜๋˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๊ฐ€ ์‚ฝ์ž…๋˜์–ด ์žˆ์Œ.

Relocatable Address๋กœ ํ‘œํ˜„๋จ.

 

Executable

ํŠน์ •ํ•œ ํ™˜๊ฒฝ (OS)์—์„œ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ.

ํ”„๋กœ์„ธ์Šค๋กœ์˜ ๋ณ€ํ™˜์„ ์œ„ํ•œ header, ์ž‘์—… ๋‚ด์šฉ์ธ text, ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์ธ Data๋ฅผ ํฌํ•จ.

Absolute Address๋กœ ํ‘œํ˜„๋จ.

=> ๊ฒฐ๊ณผ๋ฌผ์ด ์ˆ˜ํ–‰๋  OS์™€ CPU์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ํŒŒ์ผ์„ ๋งŒ๋“ฆ.

 

๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •

  1. Executable์˜ header๋ฅผ ์ฝ์–ด text์™€ data์˜ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •.
  2. ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ Address Space๋ฅผ ์ƒ์„ฑ
  3. ์‹คํ–‰๋ช…๋ น์–ด์™€ Data๋“ค์„ executable๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑํ•œ Address Space๋กœ ๋ณต์‚ฌ
  4. ํ”„๋กœ๊ทธ๋žจ์˜ Argument๋“ค์„ stack์œผ๋กœ ๋ณต์‚ฌ
  5. CPU๋‚ด Register๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , start-up routine์œผ๋กœ jump

ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ธฐ

Runtime System

ํ”„๋กœ๊ทธ๋žจ๊ณผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ƒํ˜ธ์ž‘์šฉํ•จ.

ex) CํŒŒ์ผ ์ปดํŒŒ์ผ ๋ฐ ์‹คํ–‰๊ณผ์ •

  1. GCC๋Š” start-up code object ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜๋ฉฐ, ์ด๋•Œ ๊ธฐ๋ณธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋„ ๋™์ ์œผ๋กœ ๋งํฌ๋จ.
  2. Process๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋„์€ ํ”„๋กœ๊ทธ๋žจ์นด์šดํ„ฐ๋ฅผ _startํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋กœ ์ง€์ •.
  3. _startํ•จ์ˆ˜๋Š” ๋™์ ์œผ๋กœ ๋งํฌ๋œ c๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์„ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ์œ„ํ•ด __libc_start_main ํ•จ์ˆ˜ ํ˜ธ์ถœ
  4. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ดˆ๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•œ ์ดํ›„, ํ”„๋กœ๊ทธ๋žจ์˜ main ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

Process

ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋– ํ•œ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋ฉฐ, ์–ด๋–ค ๊ฒƒ์ด ํ•„์š”ํ•œ๊ฐ€?!

Abstraction for
Execution Unit (์Šค์ผ€์ค„๋ง์˜ ๋‹จ์œ„)
Protection Domain (์„œ๋กœ ์นจ๋ฒ”ํ•˜์ง€ ๋ชปํ•จ)

Implemented with
Program Counter
Stack
Data Section

(๋””์Šคํฌ์— ์ €์žฅ๋œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋ถ€ํ„ฐ ๋ณ€ํ™˜๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋”ฉ๋œ ๊ฒƒ - ํ”„๋กœ์„ธ์Šค)

Process State

New : The process is being created

Running: Instructions are being executed

Waiting: The process is waiting for some event to occur (an I/O completion or reception of a signal)

Ready: The process is waiting to be assigned to a processor.

Terminated: The process has finished execution.

 

์ปค๋„ ๋‚ด์— ready queue, waiting queue, running queue๋ฅผ ๋‘๊ณ  ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ด€๋ฆฌํ•œ๋‹ค.

process state

 

Process Control Block

PCB ๊ตฌ์กฐ

Context Switch

cpu slices ๋ฐฉ์‹์œผ๋กœ ์ธํ•ด ๋‚˜ํƒ€๋‚˜๋Š” ํ˜„์ƒ

CPU switches to a new process, Kernel must save the state of the old process and load the saved states for the new process.

 

Context switching time is overhead. CPU time slices๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†์Œ. 

Context switching time์˜ ๊ฒฝ์šฐ, 

process management์˜ scheduling ๋ฐฉ์‹์— ๋”ฐ๋ผ, 

hardware๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ, ๋ฐฉ์‹์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ.

ํ”„๋กœ์„ธ์„œ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

 

OS๋Š” Process Creation๊ณผ Process Termination์„ ์ œ๊ณตํ•œ๋‹ค.

Process Creation

The processes in the system can execute concurrently, and they must be created and terminated dynamically.

// ์šด์˜์ฒด์ œ ๋งˆ๋‹ค ๋‹ค๋ฆ„.

- parent process vs. child process

: resource sharing ๋ฐฉ์‹๊ณผ execution ๋ฐฉ์‹์ด ์šด์˜์ฒด์ œ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Parent๊ฐ€ Child๋ฅผ ์•ˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ, ์ž์›์„ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š” ๊ฒŒ ์ข‹๋‹ค.

Parent์— ์ข…์†์ ์œผ๋กœ child๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋•Œ๋•Œ๋กœ parent์˜ ์ž์›์„ ๊ณต์œ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

 

Process Termination

# ์ •์ƒ์ ์œผ๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ, OS๋Š” exit system call์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ๋กœ๋ถ€ํ„ฐ ์‚ญ์ œ

A process terminates when it finishes executing its final statement and asks the Operating System to delete it by using exit system call.

# return์„ ํ†ตํ•ด ๋‚˜์˜จ output data๊ฐ€ wait์„ ํ†ตํ•ด parent๋กœ ์ „๋‹ฌ๋จ.

  • Output data from child to parent (via wait)
  • Process’s resources are deallocated by OS

 

# ์ •๋ง error์— ์˜ํ•ด abnormalํ•˜๊ฒŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ.

The abort function causes abnormal process termination to occur.

  • The SIGABRT signal is sent to the calling process.
  • Core dump is made.

 

Cooperating Process

Independent process cannot affect or be affected by the execution of another process.

์›๋ž˜๋Š” ๋‹ค๋ฅธ process์— ์˜ํ•ด ๊ด€์—ฌ๋˜๋ฉด ์•ˆ๋˜์—ˆ์ง€๋งŒ, ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ˜‘๋ ฅํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ

interprocess communication์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ๊ณต์œ ๋œ ๊ฒƒ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ