Computer Science/Operating System

프로세스 vs 쓰레드

Prower 2018. 10. 25. 14:46
728x90
반응형

[프로세스(Process)]

정의 : 컴퓨터에서 연속적으로 실행되고 있는 프로그램

메모리상에서 실행되는 코드


특징

- 프로세스는 실행시 Code, Data, Stack, Heap의 독립된 메모리 영역을 할당 받음

- 중앙처리장치(CPU)가 돌면서 여러 프로세스를 처리(멀티 프로그래밍)

- 프로세스를 회전하면서 프로세스의 상태(Context)를 저장하고 실행시 다시 불러옴(Context Switching)

- 프로세스는 독립된 메모리 영역을 차지하므로 Context Switching에 오버헤드가 발생함


[쓰레드(Thread)]

정의 : 프로세스에서 동작하는 여러 실행의 흐름

프로세스는 최소 1개 이상의 쓰레드를 소유

하나의 프로그램에서 여러개의 태스킹을 동시에 실행할때 스레드를 사용

가령 게임에서 여러 캐릭터들이 동시에 움직이는 것을 생각할 수 있음


특징

- 쓰레드는 각각 Stack만 할당받고 Code, Data, Heap은 한 프로세스 안에서 공유함

- 프로세스별 병렬처리가 가능하여 빠른 응답시간(멀티 프로세싱)

- Context Switching에 드는 소모가 적음

- 쓰레드 간에 사용하는 자원(데이터, 변수, 메소드...)에 대해 충돌이 발생할 수 있음


[참고 자료]

https://magi82.github.io/process-thread/



728x90
반응형