728x90
반응형
프로세스
- 운영체제로부터 자원을 할당받는 작업의 단위
- 프로세스는 실행될 때 운영체제로부터 프로세서를 할당받고 운영되기 위해 필요한 주소 공간, 메모리 등 자원을 할당 받음


쓰레드
- 프로세스가 할당받은 자원을 이용하는 실행의 단위
- 한 프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 쓰레드끼리 공유하면서 실행
- 기본적으로 하나의 프로세스가 생성되면 하나의 쓰레드가 같이 생성되는데 이것을 메인 쓰레드라 한다.
- 쓰레드를 추가 생성하지 않는 한 모든 프로그램 코드는 메인 쓰레드에서 실행되고 프로세스가 여러개의 쓰레드를 가지면 멀티 쓰레드라고 한다.


차이
- 프로세스는 자신만의 고유공간과 자원을 할당받아 사용하는데 비해 쓰레드는 다른 쓰레드와 공간과 자원을 공유하여 사용
- 쓰레드는 프로세스 내에서 각각의 스택 공간을 제외한 나머지 공간과 자원을 공유
- 프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현할 경우 메모리 공간은 물론 시스템 자원의 사용량도 줄어든다.
- 프로세스를 생성하는 것보다 쓰레드를 생성하는 것이 효율적 (멀티 프로세스 환경에서는 더욱 효과가 나타남)
- 쓰레드 간의 통신이 필요한 경우 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간을 이용하여 데이터를 주고받음


질문과 답변
* 운영체제가 시스템의 자원을 어떤 단위로 할당하고 프로세스와 쓰레드는 이 자원을 어떻게 사용하느냐에 대해 알고 있는 질문에 대한 답변
-> 여러 프로세스(멀티 프로세스)로 할 수 있는 작업들을 굳이 하나의 프로세스에서 쓰레드로 나눠가면서 작업하는 이유는 운영체제가 시스템 작업을 효율적으로 관리하기 위한 것이다. 그렇기 위해 쓰레드를 사용하는 것
-> 멀티 프로세스로 실행되는 작업을 멀티 쓰레드로 실행할 경우 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다. 뿐만 아니라 프로세스 간의 통신보다 쓰레드 간의 통신이 비용이 적으므로 작업들 간의 통신 부담이 줄어든다.
-> 쓰레드를 활용하면 자원의 효율성이 증가하기도 하지만 쓰레드 간의 자원 공유는 전역변수를 이용하므로 동기화 문제에 신경을 써야한다. (개발자 입장)


참조 URL




반응형

'System' 카테고리의 다른 글

HP-UX IP 설정 변경  (0) 2018.08.14
Solaris 네트워크 설정 (고정 IP)  (0) 2018.08.14
Semaphore(세마포어) & Mutex(뮤텍스)  (0) 2018.08.08
ECC, EDAC, Parity (Memory관련)  (0) 2018.08.08
System Chunk 개념  (0) 2018.08.08

+ Recent posts