스레드(Thread)에 대하여
- 최초 등록일
- 2007.11.23
- 최종 저작일
- 2007.10
- 6페이지/ 한컴오피스
- 가격 1,000원
소개글
스레드(Thread)에 대한 개념 및 소개
목차
1. 스레드
1) 개념
2) 프로세스와 차이점
3) 스레드 사용시 주의점
4) 스레드 사용 여부
5) 결론
2. 참고자료
본문내용
1. 스레드
1.1. 개념
1.1.1. 스레드는 세미(semi)프로세스, 혹은 Light Weight 프로세스라고 불리우며, 여러개의 클라이언트를 처리하는 서버/클라이언트 모델의 서버프로그래밍 작업을 위해서 주로 사용된다. 비슷한 일을 하는 fork에 비해서 빠른 프로세스 생성 능력과, 적은 메모리를 사용하는게 Light Weight 프로세스라고 불리우는 이유이다. 보통의 유닉스 프로세스는 main()함수에 의해서 시작되고 실행되는 single 스레드 로 이루어지며, 하나의 연속된 명령어들만을 처리한다. 반면 멀티쓰레드 프로그램은 여러개의 연속된 명령어들을 동시에 처리할 수 있다. 스레드는 자기자신의 스택메모리 영역을 가지고, 코드의 조각을 실행한다. 실(real) 프로세스 와는 달리 쓰레드는 다른 형제 쓰레드들과 메모리를 공유하게 된다.(보통 프로세스는 자기자신만의 메모리영역을 가진다). 이렇듯 전역 메모리를 공유하게 되므로 fork방식에 비해서 좀더 작은 메모리를 소비하게 된다. fork에 비해서 thread가 가지는 장점은 위에서 언급했듯이 "빠른 프로세스 생성" 능력과, 메모리 공유에 위한"적은 메모리의 사용"과 메모리 공유에 따른 쓰레드간의 좀더 쉬운 정보공유이다. fork 시스템에서 부모와 자식같이 통신을 위해서는 IPC를 사용해야 하며 이는 꽤 어려운 작업이 될수도 있는데, 메모리를 공유함으로 IPC의 사용을 줄이면서도 쓰레드간 정보교환을 쉽게 할수있다. fork 에 비해서 쓰레드가 더 빠른 수행능력을 보이는 이유는 fork 가 기본적으로 모든 메모리와 모든 기술자(파일기술자등)을 copy-on-write 방식으로 자식에게 복사하는데 비해서 쓰레드는 많은 부분을 공유하기 때문이다. copy-on-write 자체가 효율적이긴 하지만, 메모리 자원을 공유하는 것보다는 느릴 수 밖에 없다. 반면 단점도 가지고 있는데, 모든 스레드가 같은 메모리 공간을 공유하게 되므로, 하나의 쓰레드가 잘못된 메모리연산을 하게 되면, 모든 프로세스가 그 영향을 받게 된다는 것이다. fork 등을 통한 프로세스 생성방식에 있어서는 OS 가 가각의 프로세스를 보호해줌으로 한 프로세스의 문제는 해당 프로세스의 문제로 끝나게 된다. 그러나 쓰레드는 이러한 프로세스 보호를 기대할수 없다. 하나의 쓰레드에 문제가 생기면 전체 쓰레드에 문제가 생길가능성이 크다. 이런 이유로 멀티 쓰레드 프로그램은 좀더 주의를 기울여서 작성해야 한다. 또단 하나의 흐름을 가지는 단일 프로세스 프로그램과 달리, 여러개의 흐름으로 분리가 되기 때문에, 디버깅을 하기가 까다롭다는 문제도 가진다.
참고 자료
❍ 운영체제(정익사) / 이계영 저
❍ 운영체제론(정익사) / 김길창 저
❍ 윈도우 네트워크 프로그래밍(한빛미디어) / 김선우 저
❍ 실무 전문가들이 짚어주는 UNIX(FREELEC) / 조경휘 저