쓰레드와 프로세스 개발 일지

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


반응형

+ Recent posts