Thread와 Process의 차이는 무엇인가요?

  • 쓰레드와 프로세스는 컴퓨터의 작업을 분리하여 수행하는 단위이다.

  • 프로세스는 메모리 상에서 실행 중인 프로그램을 말하며, 쓰레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다.

  • 프로세스최소 하나의 쓰레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당 받는다.(code, heap, data, stack)

  • 쓰레드는 이 중에 stack만 따로 할당 받고 나머지 영역은 쓰레드끼리 공유한다.

프로세스는 자신만의 고유 공간과 자원을 할당 받아 사용하는 것이고, 쓰레드는 다른 쓰레드와 공간과 자원을 공유하면서 사용하는 것이다.

꼬리 질문

  • 프로세스의 단점

    • 프로세스는 자신만의 고유 공간과 자원을 사용하기 때문에 생성할 때 많은 시간이 소요되고, 프로세스 사이에 통신이 어렵다.

    • 프로세스 컨텍스트 스위칭이 비율적이고, 오버헤드가 크다.

  • 쓰레드 출현 목적

    • 프로세스의 단점을 보완하기 위해서 출현

    • 프로세스의 생성 및 소멸에 따른 오버헤드 감소와 빠른 컨텍스트 스위칭, 프로세스간 통신시간과 방법을 해소하기 위해서이다.

    • 맹목적으로는 프로세스보다 크기가 작은 실행 단위가 필요했던 부분도 있다.

Threading와 Processing을 각각 어떤 상황에서 해야 하나요?

  • Threading은 작업이 많은 상황에서 사용되어 병렬 처리와 작업 순차적 수행을 가능하게 한다.

  • Processing은 메모리와 자원이 많이 필요한 상황에서 사용되어 메모리 공간과 자원을 분리하여 사용할 수 있게 한다.

Thrashing 이란 무엇인가요?

  • Thrashing은 메모리 관리 부족으로 인해 메모리에 페이지 부재(=페이지 폴트(Page fault))율이 높아지면서 시스템의 성능이 급격히 저하되는 현상을 말한다.

  • 일반적으로 컴퓨터 시스템은 한정된 양의 물리적인 RAM을 사용하여 메모리를 관리하고, 프로그램이 실행되면 메모리에서 페이지로 나뉘어져서 로드되고 실행된다.

  • 그러나 메모리 부족 상황에서는 시스템이 페이지 폴트를 발생시켜서 메모리를 할당하려고 할 때, 필요한 페이지가 물리적 메모리에 없어서 디스크로부터 읽어오게 된다.

  • Thrashing이 발생하면 페이지 폴트가 지속적으로 발생하고, CPU는 페이지 폴트를 처리하느라 대부분의 시간을 소비하게 된다.

  • 따라서 실제 작업에 필요한 계산이 제대로 이루어지지 못하게 되어 시스템의 성능이 급격히 저하된다.

  • Thrashing을 방지하기 위해서는 메모리 사용량을 모니터링하고, 메모리 사용량이 증가할 때 적절히 대응하는 것이 중요하다.(메모리 추가 할당, 적당한 알고리즘 선택 등)

Last updated