정확한 분류법은 아니지만 일반적으로
프로세스는 CPU가 MMU를 통해서 메모리를 관리, 보호해주는 태스크를 말하며,
스레드는 MMU등이 없는 CPU에서의 테스크이거나 MMU가 있는 cpu일경우 한 프로세스내에서 테스크들로 서로 메모리를 공유하는 테스크를 말합니다. 즉 프로세스끼리는 서로 IPC를 사용해야만 데이터를 공유할 수 있고 한 프로세스의 죽음,오류등이 다른 프로세스의 영향을 미치지 못하지만, 스레드는 서로 메모리를 공유하므로 한 스레드가 죽으면 그 스레드와 같은 프로세스내에 있는 다른 스레드 또한 위협을 받을 수 있습니다.
[답변]프로세스와 스레드의 차이
정확한 분류법은 아니지만 일반적으로
프로세스는 CPU가 MMU를 통해서 메모리를 관리, 보호해주는 태스크를 말하며,
스레드는 MMU등이 없는 CPU에서의 테스크이거나 MMU가 있는 cpu일경우 한 프로세스내에서 테스크들로 서로 메모리를 공유하는 테스크를 말합니다. 즉 프로세스끼리는 서로 IPC를 사용해야만 데이터를 공유할 수 있고 한 프로세스의 죽음,오류등이 다른 프로세스의 영향을 미치지 못하지만, 스레드는 서로 메모리를 공유하므로 한 스레드가 죽으면 그 스레드와 같은 프로세스내에 있는 다른 스레드 또한 위협을 받을 수 있습니다.
--------------------------------------------------------------------------------------
조금씩이라도 전진한다.
프로세스와 스레드
멀티태스킹(Multitasking)이란 OS가 한번에 하나 이상의 프로그램을 실행하는
것을 의미합니다. 하지만 프로세서 하나당 하나의 job을 한번에 실행할 수 있기
때문에, 엄밀한 의미의 멀티 태스킹은 여러개의 프로세서로 구성된 시스템에서만
가능하겠죠.
다만 시간분할 방식(time slicing)이라고 해서 하나의 CPU의 시간을 작게 쪼개어서
실행중인 프로그램들에게 나누어주는 방식으로 멀티 태스킹을 구현하고 있습니다.
이렇게 CPU시간을 나눠주는 것을 스케쥴링(scheduling)이라고 하구요. 이 스케쥴
링의 단위가 Windows NT의 경우 스레드가 됩니다. (즉 스레드들이 CPU시간을
할당받게 되는 것이죠.)
프로세스는 실행파일이 로더에 의해 실행되어 메모리에 올라온 상태를 지칭합니다.
어플리케이션에서 사용되는 모든 리소스를 소유하는 오브젝트이구요.
스레드는 프로세스 내의 독립된 실행 경로라고 할 수 있습니다. (즉 하나의 프로세
스는 하나 이상의 스레드를 가진다고 볼 수 있습니다.)
즉 프로세스와 스레드는 포함관계라고 해도 무방하겠네요. ^^;; (개인적인 생각입니다.)
스레드는 프로세스의 가상 주소 공간, 코드와 전역 데이터를 공유하지만 서로(다른
스레드간의) 독립적으로 실행되고 독립적인 스택을 가지게 됩니다.
가장 간단한 경우의 프로세스는 1차 스레드라고 알려진 주 스레드를 가지게 됩니다.
만약 하나의 스레드를 가진 프로세스라면
와 같이 구성이 되고, 프로세스가 3개의 스레드를 가지고 있다면
와 같은 형태가 됩니다. 즉 스레드들이 전역 데이터와 힙 정보 등을 공유하게 되지요.
만약 3개의 프로세스 간의 통신(IPC 설비를 이용해서)을 구현해보신 분이라면, 전역 데이터를 공유하는
스레드의 장점을 느끼실 수 있을것이라 생각됩니다. (프로그래밍 관점에서 스레드들은
외부변수값을 set/get하는 것으로 데이터의 공유를 할 수 있지만, 멀티 프로세스의
경우 OS가 지원하는 프로세스간 통신매커니즘(함수와 지정된 자료구조의 이용)을 통해서
하게 됩니다.)
그래서 멀티 프로세스 프로그래밍은 프로세스간의 통신을 구현하기가 멀티 스레드
프로그래밍보다 난해하고, 프로세스를 여러개 띄우는 것 자체가 스레드를 여러개
생성하는 것보다 시스템에 부담(전역 데이터 + 환경 데이터 + 힙을 각각 가져야 하므로)
을 많이 주게 됩니다.(단점). 다만 멀티 스레드로 구성할 경우
하나의 프로세스 영역 안에 여러 스레드가 동작을 하고 있기 때문에
각각 독립된 프로세스에서 실행되는 1차 스레드보다 안정성이 떨어지게 됩니다.
(예를 들어 여러개의 스레드가 동일한 resource에 접근하려면 필연적으로 동기화
문제를 해결해야 하는데 치명적인 경우 데드록에 이를수도 있기 때문입니다.)
... Do It Now!!!
댓글 달기