끄적대기

프로세스(Process)와 스레드(Thread)

alpha-star 2022. 3. 24. 03:31
728x90
반응형

˙프로세스(Process)

[참조] https://charlezz.medium.com/process%EC%99%80-thread-%EC%9D%B4%EC%95%BC%EA%B8%B0-5b96d0d43e37

 

 지속적으로 실행되고 있는 Program으로, 메모리에 실행되고 있는 Program 객체로, 자원을 할당받아 요청을 처리하는 단위이다.  각각의 독립된 메모리를 할당하고, 기본적으로는 Process 당 최소 1개 이상의 Tread를 보유하고 있다. 다른 Process의 형태(자원의 요청 등)에 접근하고자 한다면 통신 필요(별도이기 때문에 이외 접근 불가)이다.

 

˙스레드(Tread)

https://seokr.tistory.com/465

 Process 내에서 실행되는 흐름의 단위로, 특정한 수행 경로로, 할당받은 자원에 대하여 사용(실행)하는 작업의 단위이다. 각 Process 내에서 Stack만 별도로 할당받고, 이외의 메모리는 공유하여 사용한다. 하나의 Process 내에서 동작되는 여러 가지의 실행 흐름으로, Process 안에 있는 여러 Tread는 같은 Heap* 공간을 공유(같은 Process 내에서는 Tread끼리 공유 가능, 다른 Process는 불가)한다. 하나의 Tread가 Process에 대한 자원을 변경하면, 다른 Tread와 공유하기 때문에 실시간으로 확인 가능하다.

 

˙멀티 프로세스(Multi Process)

 하나의 응용 Program을 여러 개의 Process로 구성하여 각 Process가 요청(작업)을 처리하는 것으로, 여러 개의 Process 중 하나의 Process에 대해서 문제가 발생하여도 다른 Process는 영향 없이 동작한다. 단, Context Switching* 과정에서 무거운 작업이 진행되고 비용이 많이 발생(시간 등)하면서 오버헤드* 발생 가능성이 증가한다. 또한, 각각의 Process 사이에서 공유되는 메모리 정보가 없기 때문에 매번 다시 확인한다.

 

˙멀티 스레드(Multi Thread)

 하나의 응용 Program을 여러 개의 Thread로 구성하여 각 Thread가 요청(작업)을 처리하는 것으로, 시스템의 자원 효율성을 극대화할 수 있고, 처리량이 증가(처리비용 감소)한다. Thread 작업 양이 적어 Context Switching이 보다 빠르게 처리할 수 있고, Stack 영역을 제외한 모든 부분에 대한 항목이 공유되기 때문에, 불필요한 작업에 대한 통신이 감소한다. 단일적으로 사용해야 하는 경우에 대한 부분은 효과가 적다(단일 처리). 별개의 다른 Process의 Thread를 제어할 수 없고(동일 Process 내부에서는 가능), 자원 공유 또는 동기화의 문제가 발생할 수 있고, 하나의 Thread에 문제가 발생하게 된다면 전체의 Thread에 영향을 미친다. 하지만, 자원 효율성의 극대와 처리 비용 감소 및 효율성(시간 단축) 등의 이유로 많이 사용되고 있다.

 

 

 

 * Heap : 완전 이진트리의 일종으로 우선순위의 Queue를 위하여 만들어진 자료 구조

 * Context Switching : 여러 Process를 번갈아가면서 작업을 처리하는 과정으로, 상태를 보관하고 복구하는 등의 작업을 표현

 * 오버헤드 : 어떠한 요청(작업)을 처리하기 위하여 간접적으로 소요되는 시간

728x90
반응형