Process And Thread

프로세스&스레드

프로세스: 프로그램이 메모리위에서 실행되고 있는 상태

스레드: 프로세스중에 실행되고 있는 여러가지 흐름의 단위

기본적으로 프로세스별로 최소 하나의 스레드를 소유(메인스레드를 포함)

process

프로세스는 각각의 주소공간을 할당하고 있다(독립적)

스레드는 Stack만 별도로 할당해, 남은영역은 서로 공유

하나의 프로세스가 생성될 경우, 기본적으로 하나의 스레드도 생성

프로세느는 자신만의 고유공간과 리소스를 할당받아 사용하는 반면, 스레드는 다른 스레드의 공간, 리소스를 공유하면서 사용하는 차이점이 있다.

멀티 프로세스

하나의 컴퓨터에 복수의 CPU를 장착해서, 하나이상의 프로세스를 동시에처리(병렬)

장점: 안정성(메모리 침범문제를 OS레벨에서 해결)

단점: 각각 독립적인 메모리영역을 가지고 있어, 작업령이 많을수록 오버헤드를 발생시킴. Context Switching에 의한 성능저하

Context Switching란?

프로세스의 상태정보를 저장/복원 하는 일련의과정

즉, 동작중인 프로세스가 대기하면서 해당 프로세스의 상태를 보관하며 대기하고 있던 다음 프로세스가 동작하면서 이전 보관하고있던 프로세스의 상태를 복원하는 과정

프로세스는 각 독립된 메모리 영역에 할당되 사용되므로 캐시메모리 초기화 같은 무거운 작업을 할 경우 오버헤드가 발생할 문제가 있다.

멀티 스레드

하나의 어플리케이션에서 복수의 스레드를 구성하여, 각 스레드가 하나의 동작을 처리하는 것

스레드가 공유메모리를 통하여 다수의 동작을 동시에 처리하게 해준다.

장점: 독립 프로세스에 비해 공유메모리의 시간, 리소스 손실이 감소, 전역변수와 정적변수에 대해 자원을 공유가능

단점: 안전성문제. 하나의 스레드가 데이터공간을 무너트리면, 모든 스레드의 동작이 불가능한 상태가 된다.(공유 메모리를 가지고 있기 때문)

멀티 스레드의 안정성에 의한 단점은 Critical Section기법에 의해 대비할 것.

하나의 스레드가 공유 데이터값을 변경하는 시점에, 다른 스레드가 그 값을 읽어들일려고 할 때 발생하는 문제를 해결하기위한 동기화과정

상호배제, 진행, 제한된 대기를 만족시키지 않으면 안된다.