유용한 자료
< 자료공유 < 유용한 자료
기타자료실

etc | 쓰레드란 무엇인가요?

페이지 정보

작성자 madalla 작성일13-02-08 07:19 조회1,616회 댓글0건

본문

스레드는 프로세스보다 더 작은 실행 단위입니다.
 
프로그램 구조에서 프로그램의 진입점이 주스레드가 될 것이고 이러한 스레드들을 여러개 모아서 실행 되는 것이 멀티스레드라 합니다. 일반적으로 우리가 사용하는 윈도우즈는 선점 멀티태스킹 방식을 이용하여 이러한 멀티 스레드를 처리합니다.

웹브라우져의 경우 이러한 스레드의 개념을 잘 이해할 수 있는데요, 웹브라우져로 사이트에 접속하는 순간 브라우져는 웹 서버로부터 웹사이트에 필요한 정보들을 다운로드하고 사용자의 입력을 기다리며 또 다운받은 정보들을 웹브라우져로 출력하는 3가지 일을 동시에 수행합니다.

인터넷 채팅의 경우 역시 상대방의 입력을 받아서 처리하는 스레드와 사용자가 입력한 내용을 상대방에게 전송하는 스트림을 수행하는 스레드로 나뉠 수 있습니다.

스레드는 여러가지 일을 동시에 처리할때 마치 사용자가 느끼기에 동시에 처리되는 것처럼 보일 뿐 입니다. 실제로는 한 프로세서가 짧은 시간에 하나의 스레드를 수행하고 제어권을 다른 스레드로 넘겨줍니다 그러나 그 시간이 아주 짧아서 느끼지 못하는 것 입니다. 스레드가 많으면 많을수록 느려지는건 당연한 것 입니다..

* 02
 
하나의 프로세스 공간을 공유하는 프로그램의 흐름 정도로 생각하시면 됩니다. 각각의 쓰레드는 Execution Stack, Program Counter 를 갖고 있습니다. 쓰레드를 여러개 두면 여러가지 면에서 유리한 점이 많지만 sync 문제를 항상 염두에 두어야 합니다.

자바의 경우 하나의 VM 공간을 공유하며 쓰레딩의 구현방식에 따라 Green Thread 방식과 Native Thread 방식이 있습니다. 보통은 OS 레벨의 스케줄링을 사용하는 Native Thread 방식을 사용합니다.

Posix 는 Unix Spec이라고 보시면 되는데 OS에 따라 Posix 에 정의된 API 를 지원하지 않는 경우도 있습니다.
 
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기