쓰레드와 프로세스 개발
일지
2010/10/25 10:45 http://blog.naver.com/scmoon119/120117290967 |
쓰레드와 프로세스의 차이점을 묻는 질문은 개발자를 채용할 때 항상 물어 왔던 질문이다.
내 스스로 나에게 질문하여 보니 정작 구체적인 답이 떠오르지 않았다.
프로그램을 개발할 때 만들어 지는 프로그램이 구동되는 게 프로세스 아닌가?
프로그램 개발할 때 createThread 해서 동시에 여러개의 업무가 진행되게 하는 multi thread 프로그램을 많이 작성하였는데,
그렇다면 프로세스는 쓰레드를 여럿 가지고 있는 것 아닌가 정도의 상식적인 생각만 머리에 떠오른다..
기술은 상식이 아니다.
관련 내용을 정리해 보다.
쓰레드, 프로세스의
공통점
- 특정 순서로 실행해야 할 명령 시퀀스를 나타낸다.
- 비동기적 행위 (Asynchronous Activity)
차이점.
프로세스
- 운영체제 내에서 존재
- 레지스터 , 스택, 포인터, 실행중인 프로그램. 데이타의 복합체로 표현
- 각각 별개의 메모리 공간을 가진다.
- 실행중인 프로그램.
- 운영체제 내에 PCB (Process Control Block ) 존재
- 프로세서가 할당하는 개체
- 디스 패치가 가능한 대상
- 두개의 프로세스가 같은 프로그램을 사용시 별개의 프로세스로 인식한다. ( 코드부분은 같지만 각기 별도의 스택에 다른 자료를 가지기 때문이다. )
- 실행, 대기 또는 보류, 준비 의 status 를 가짐.
- 프로세스간 전환 속도가 쓰레드 간보다 느리다.
쓰레드
- 프로세스 내에서 존재
- 하나의 프로그램 내에서의 실행 단위
- 쓰레드가 메모리를 공유해서 사용할 수 있다.
- 완전한 병령처리는 아니다. 때로는 쓰레드를 동기화하여야 한다. 즉 쓰레드가 다른 쓰레드의 일을 기다리거나, 한쓰레드가 특정 리소스를 독점적으로 사용할 수 있는 기능이 필요한 경우가 많이 있어 개발이 복잡해 진다.
- 쓰레드간 전환 속도가 프로세스 간보다 빠르다.
- 멀티 쓰레드의 장점은 CPU가 여러 개일 경우에 각각의 CPU가 스레드 하나씩을 담당하는 방법으로 속도를 높일 수 있다.
- 멀티 스레드의 단점은 각각의 스레드 중 어떤 것이 먼저 실행될지 그 순서를 알 수 없다.
- 지원하는 주체에 따라 사용자 쓰레드와 커널 쓰레드로 나눌 수 있다.
- 멀티쓰레드를 이용하여 애플리케이션을 작성하는 데는 아래의 3가지 방법이 있다.
boss/worker 모델
work crew 모델
파이프 라이닝 모델
참고 자료.
http://luckydevil.tistory.com/394
http://msdn.microsoft.com/ko-kr/library/ms164740(VS.80).aspx
http://en.wikipedia.org/wiki/Process_(computing)
http://en.wikipedia.org/wiki/Thread_(computing)
http://fattarzan.tistory.com/attachment/dk130000000000.pdf
http://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C
http://blog.naver.com/onnon0225?Redirect=Log&logNo=60053807626
http://s1navro.egloos.com/1522204
http://xyzlast.springnote.com/pages/83273
'운영체제 & 병렬처리 > Multithread' 카테고리의 다른 글
프로세스 환경변수(자식 프로세스에서 부모의 핸들값으로부터 등록된 값 가져오기) (0) | 2012.11.01 |
---|---|
IPC(inter-process communication) 프로세스간의 통신 (0) | 2012.11.01 |
부모 자식의 관계로 엮여 있는 프로세스, [커널 오브젝트와 핸들의 종속관계] (0) | 2012.11.01 |
멤버 함수를 쓰레드 함수로 만들기 (0) | 2012.10.31 |
CreateThread() 와 _beginthreadex() 함수의 차이 (0) | 2012.10.31 |