Process 와 Thread

김윤홍·2024년 8월 1일
0

Process

프로세스는 프로그램이 메인 메모리로 올라와 실행되고 있는 상태를 의미한다.

CPU를 할당받고 메모리에 올라가게 되는 상태

그럼 많은 수의 프로세스들은 컴퓨터에서 어떻게 처리를 할까?

  1. 병렬 처리방법

병렬처리는 여러작업을 동시에 실행하는 방법이다. 2개 이상의 코어가 각각의 다른 프로세스 명령을 실행해서 각프로세스가 같은 순간에 실행되도록 하는 방법이다.

  1. 병행 처리방법

병행처리는 하나의 코어가 여러 프로세스를 돌아가면서 조금씩 처리를 하는 방법이다.
ex) 하나의 코어가 1,2번 작업을 번갈아가면서 조금씩해결하나는 방법이다.

1번작업을 실행하다가 2번 으로 진행순서를 바꾸는 것을 컨텍스트 스위칭이라고 한다.
컴퓨터에서는 컨텍스트 스위칭이 매우 빠르게 일어나기 때문에 사용자가 알아차리기 어렵다.

프로그램이 효율적으로 설계되었다면 두 개의 코어가 프로세스를 두개 씩 병렬처리하면서 병행처리한다. 이를 멀티 프로세싱 또는 멀티 태스킹 이라고 한다.

Thread

앞서 설명했던 프로세스에서는 여러 작업이 동시에 진행되는 데 이때 작업의 단위를 스레드라고 한다.

그럼 여기서 그냥 여러개의 프로세스를 사용하면 되지않을까? 라는 의문점이 생긴다.

요즘의 프로그램은 복잡도가 높아지면서 하나의 프로그램이 단순히 한 개의 작업만 하는 경우가 거의 없어졌다.
따라서 이는 불가능하다.

CPU의 관점에서 최소 작업단위는 thread이지만 운영체제의 관점에서 최소 작업단위는 process이다
운영체제는 각 process별로 할당된 메모리내 정보에만 접근이 가능하도록 제약을 두고있다.

process는 서로 분리된 작업 영역을 가지고 있기 때문에 서로 공유가 어렵다(공유시 부담이 크다.)
하지만 thread는 메모리를 공유하며 동작할 수 있기 때문에 복잡한 process가 n개의 thread를 사용하여 작업을 한다 -> 멀티 스레딩

프로세스와 스레드의 차이

멀티 프로세싱(멀티 태스킹)에서 process별로 메모리를 차지하게 되는데 동시에 진행되는 프로세스가 많아 질수록 메인 메모리는 그 배수만큼 필요하다.

반면에 스레드는 아무리 많아져도 메모리를 추가로 차지하지 않습니다. 또 thread끼리 공유하며 동작할 수 있기 떄문에 컨텍스트 스위칭에 드는 비용도 적습니다.

이렇게 보면 스레드가 유리한것 같지만 스레드는 같은 메모리 공간을 여러 스레드가 사용하기 때문에 그과정에서 오류가 발생할 수 있습니다.

따라서 스레드를 다루는 프로그램은 시간적 요소까지 고려해서 신중하게 설계해야한다는 점이 있습니다.!

0개의 댓글

관련 채용 정보