위의 Figure는 아래의 도서에서 발췌

OperatingSystems:ASpiralApproach(Hardcover)ASpiralApproach
카테고리
지은이 Elmasri, Ramez/ Carrick, A. G./ Levine, David (McGraw-HillCollege, 2009년)
상세보기


스레드를 언급하기에 앞서, 간단하게 프로세스에 대한 설명을 한다.

프로세스(Process)는 컴퓨터에서 연속적으로 실행되는 프로그램이며, Task라는 용어로 불리기도 한다. 하지만 프로세스와 태스크는 다른 의미로, 태스크는 하나의 작업을 의미한다. (일전의 CPU 스케쥴링에서 해야 할 작업의 단위가 태스크이다.) 여러 프로세서를 사용하는 것은 멀티 프로레싱이라고 이야기하고, 싱글 코어에서도 동시에 여러 작업(Task)을 보여주는 것을 멀티 태스킹이라고 이야기를 한다.

스레드는 프로세스 내부에 존재하는 실행하는 흐름의 단위이다. 프로그램에 따라, 1개 이상의 스레드를 가진다. 멀티 스레딩의 장점은 CPU가 2개 이상일 때, 각각의 코어에서 서로 다른 작업을 처리할 수 있기 때문에 처리 속도가 훨씬 빨라진다는 장점이 존재한다.

스레드는 OS에 의해 관리가 되며, TCB(Thread Control Block)에서 관리된다. TCB에 대한 자세한 설명을 하기에 앞서, 각각의 프로세스 역시 PCB(Process Control Block)을 가지고 있다. 역시 운영체제에 의해 관리가 되며, 가지고 있는 정보는 ID, 상태, 해당 프로세스의 Program Counter, 레지스터 정보, CPU 스케쥴링 정보, 메모리 정보, 등을 가지고 있다. TCB 역시, 자신의 상태, Context Switch를 위한 정보, 스택 정보, 수행 시간 등을 가진 정보를 가지고 있는다.

http://www.cse.iitd.ac.in/~soumyadeb/projects/mtp/report/node56.html
(Thread Control Block에 대한 간략한 정보 기술)

가장 상단에 있는 이미지를 보면, 별도의 Thread가 수행되는 것을 확인할 수 있다.


위의 이미지는 위키피디아에서 발췌.

마찬가지로 시간의 흐름에 따라서 서로 다른 스레드가 하나의 프로세스 안에서 다른 작업을 한다는 것을 보여주는 Figure이다.


스레드의 장점으로는 하나의 프로세스 내에서 수행하는 것이기 때문에, 동일한 프로세스의 메모리를 공유한다는 것과 프로세스의 전환보다는 스레드의 전환이 속도가 더 빠르다는 것이 장점이며, 단점으로는 수행되는 순서가 명확하지 않아서 생겨나는 문제점들이 있다는 것이다. (상대방의 메모리 참조 문제 등이 대표적이며, 이 부분에 대한 설명은 추후에 메모리와 관련된 부분을 보면서 확인을 할 예정이다.)



* 스레드의 종류
- User level Thread : 역사적으로 사용자 영역에서의 스레드가 먼저 탄생을 했다. 현재는 커널 영역 위에서 수행이 되며, 라이브러리를 통하여 스레드를 관리한다. 단점으로는 커널 스레드에서 시스템 콜이 들어온다면 모든 스레드가 중단된다는 것이 있다. 이유는 시스템 콜이 들어올 경우에는 스레드로 중지시키는 것이 아니라 프로세스가 일시적으로 중단되기 때문이다.
- Kernel level Thread : 운영체제가 지원하는 스레드. 커널 스레드는 사용자 스레드에 비하여 굉장히 중요한 작업을 처리하기 때문에, 시스템 콜이 들어오더라도 중단되거나 하지는 않는다.


아래의 Figure는 User Thread와 Kernel Thread간의 매핑을 어떻게 시킬 것이냐를 다루는데, 그림만 보더라도 이해가 되기 때문에 설명은 생략한다.




OperatingSystems:ASpiralApproach(Hardcover)ASpiralApproach
카테고리
지은이 Elmasri, Ramez/ Carrick, A. G./ Levine, David (McGraw-HillCollege, 2009년)
상세보기


책의 내용이 정말 괜찮은데, 가격과 영어라는 압박으로 감히 추천을 할 수 없다... -_-
저작자 표시 비영리 변경 금지
신고

'Theory > CA & OS' 카테고리의 다른 글

OS, Semaphore and Mutex  (2) 2011.09.12
OS, Synchronization  (0) 2011.09.12
OS, Thread (스레드, 쓰레드)  (0) 2011.09.12
OS, CPU 스케쥴링 (Process scheduling)  (0) 2011.09.12
OS, 하드웨어 동작 방식  (0) 2011.09.12
OS, 인터럽트 벡터(Interrupt vector)  (0) 2011.09.11
by 가우초 2011.09.12 11:00
| 1 |