1. 프로세스와 쓰레드의 차이점
*프로세스는 실행 중인 프로그램
*쓰레드(thread)는 프로세스의 가상 주소 공간에 존재하는 실행 흐름의 단위를 말한다. 프로세스 내의 주소 공간이나 자원들을 대부분 공유하면서 실행된다. 쓰레드는 프로세스 내에서 각각의 스택 공간을 제외한 나머지 공간과 시스템 자원을 함께 공유하므로 프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현한다면 메모리 공간은 물론 시스템 자원 소모도 현격히 줄어들 것이다.
이와 같이 프로세스를 생성하는 것 보다 쓰레드를 생성하는 것이 효율적이다. 특히 멀티 프로세서 환경에서는 더욱 효과가 탁월하다.
답) 프로세스와 스레드는 양쪽 모두 여러 흐름이 동시에 진행된다는 공통점을 가지고 있다. 차이점은 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지하고 있는 것과 달리 스레드는 프로세스 내의 메모리를 공유해 사용할 수 있다. 또한 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.
각 thread/process간에 memory space를 공유하는가 여부이다.
Thread는 공유하고 Process는 각각의 memory space를 가지게 된다.
이런 이유로 process형태에서는 Virtual memory를 사용한다.
스레드의 장점:
* 시스템의 Throughout 이 향상된다.
* 시스템의 자원 소모가 줄어든다.
* 프로그램의 응답시간이 단축된다.
* 프로세스 간 통신 방법에 비해 쓰레드간의 통신 방법이 훨씬 간단하다.
스레드의 단점:
* 프로세스 밖에서 쓰레드 각각을 제어할 수 없다.
* 여러 개의 쓰레드를 이용하는 프로그램을 작성하는 경우에는 주의 깊게 설계해야 한다. 미묘한 시간차나 잘못된 변수를 공유함으로써 오류가 발생할 수 있다.
* 프로그램 디버깅이 어렵다.
* 단일 프로세서 시스템에서는 효과를 기대하기 어렵다.
'OS' 카테고리의 다른 글
strlcpy (1) | 2013.10.04 |
---|---|
pintos project#2 (0) | 2013.10.03 |
PCB(Process Control Block) (0) | 2013.10.02 |
리스트 사용 (0) | 2013.09.10 |
C소스의 전체 컴파일 과정 (0) | 2013.09.08 |