프로세스와 쓰레드

codakcodak·2023년 5월 3일
0

프로그램

정의:어떤 문제를 해결하기 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문의 집합체

프로세스

정의:실행을 위해 주메모리에 올라온 동적인 상태

프로그램은 정적인 상태(파일)를 의미하고 프로그램을 실행시키면 주메모리에 올라가 실행을 하는 프로세스가 된다.

구조

*프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받는다.

쓰레드

정의:프로세스 내에서 실행되는 여러 작업의 단위

구조

스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.

동시작업

  • 멀티 프로세스

    정의:하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(태스크)을 처리하도록 하는 것

    장점

    • 하나의 프로세스가 죽어도 다른 프로세스에 영향이 가지 않기 때문에 안정적이다.

    단점

    • 프로세스는 각각의 독립된 메모리 영역을 할당받았기 때문에 자원의 낭비가 일어난다.
    • 하나의 프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없다.
  • 멀티 쓰레드

    정의:하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것

    장점

    • 스레드는 Stack 영역을 제외한 모든 메모리를 공유하기 때문에 자원의 낭비를 막는다.
    • 스레드 간의 통신의 비용이 적으므로 작업들 간의 통신의 부담이 줄어든다.

    단점

    • 순차적인 작업이 필요한 일을 할 때 자원의 변경이 일어나면 즉시 반영되므로 동기화에 문제가 생긴다.
    • 자원을 공유하기 때문에 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미친다.
profile
숲을 보는 코더

0개의 댓글