Thread와 Process의 차이는 무엇인가요?
쓰레드와 프로세스는 컴퓨터의 작업을 분리하여 수행하는 단위이다.
프로세스는 메모리 상에서 실행 중인 프로그램을 말하며, 쓰레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다.
프로세스는 최소 하나의 쓰레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당 받는다.(
code,heap,data,stack)쓰레드는 이 중에 stack만 따로 할당 받고 나머지 영역은 쓰레드끼리 공유한다.
프로세스는 자신만의 고유 공간과 자원을 할당 받아 사용하는 것이고, 쓰레드는 다른 쓰레드와 공간과 자원을 공유하면서 사용하는 것이다.
꼬리 질문
프로세스의 단점
프로세스는 자신만의 고유 공간과 자원을 사용하기 때문에 생성할 때 많은 시간이 소요되고, 프로세스 사이에 통신이 어렵다.
프로세스 컨텍스트 스위칭이 비율적이고, 오버헤드가 크다.
쓰레드 출현 목적
프로세스의 단점을 보완하기 위해서 출현
프로세스의 생성 및 소멸에 따른 오버헤드 감소와 빠른 컨텍스트 스위칭, 프로세스간 통신시간과 방법을 해소하기 위해서이다.
맹목적으로는 프로세스보다 크기가 작은 실행 단위가 필요했던 부분도 있다.
Threading와 Processing을 각각 어떤 상황에서 해야 하나요?
Threading은 작업이 많은 상황에서 사용되어 병렬 처리와 작업 순차적 수행을 가능하게 한다.Processing은 메모리와 자원이 많이 필요한 상황에서 사용되어 메모리 공간과 자원을 분리하여 사용할 수 있게 한다.
Thrashing 이란 무엇인가요?
Thrashing은 메모리 관리 부족으로 인해 메모리에 페이지 부재(=페이지 폴트(Page fault))율이 높아지면서 시스템의 성능이 급격히 저하되는 현상을 말한다.일반적으로 컴퓨터 시스템은 한정된 양의 물리적인
RAM을 사용하여 메모리를 관리하고, 프로그램이 실행되면 메모리에서 페이지로 나뉘어져서 로드되고 실행된다.그러나 메모리 부족 상황에서는 시스템이 페이지 폴트를 발생시켜서 메모리를 할당하려고 할 때, 필요한 페이지가 물리적 메모리에 없어서 디스크로부터 읽어오게 된다.
Thrashing이 발생하면 페이지 폴트가 지속적으로 발생하고, CPU는 페이지 폴트를 처리하느라 대부분의 시간을 소비하게 된다.따라서 실제 작업에 필요한 계산이 제대로 이루어지지 못하게 되어 시스템의 성능이 급격히 저하된다.
Thrashing을 방지하기 위해서는 메모리 사용량을 모니터링하고, 메모리 사용량이 증가할 때 적절히 대응하는 것이 중요하다.(메모리 추가 할당, 적당한 알고리즘 선택 등)
Last updated