tcb 2

리눅스 환경의 스레드(Threads)

우리가 흔히 다중 작업을 떠올려본다면 fork를 이용하여 여러개의 프로세스를 생성하여 각각 작업을 하는 것을 떠올릴 것이다. 근데 프로세스를 새로 생성한다는 것은 생각보다 무거운 작업이다. 그래서 스레드라는 것이 나온다. 스레드는 하나의 프로세스가 여러개의 작업을 동시에 할 수 있도록 해주는 것이다. 이렇게 하나의 프로세스에 여러개의 스레드를 둔다면, 프로세스가 동시에 여러가지 작업을 할 수 있게 된다. (시간을 쪼개어 CPU 점유를 분할하는 것임) 아파치 웹서버를 예를 들어보자. 위 처럼 웹서버 같은 데서는 스레드를 이용하여 여러 명의 사용자와 세션을 맺어 다중 처리 서버를 구현할 수 있다. 스레드는 다른 영역은 공유하지만, 스택영역은 별개로 쓴다. ​그리하여 fork 보다 훨씬 효율적이다. 스레드간에..

윈도우 프로세스와 스레드 생성과 동작 원리

위 그림은 위 그림은 커널 동작 과정이다. 첫 과정인 프로세스와 스레드 관련 내용을 알아본다. 프로세스와 스레드는 작업을 처리하는 기본 단위들이다. 프로세스와 스레드의 관계에 대해 짚고 넘어가면, 우리가 실제로 하는 작업을 실행하는 것이 스레드이다. 작업의 주체라 이 말. 그리고 작업의 주체인 스레드를 위해 구성된 하나의 환경을 프로세스라고 보면 된다. 하나의 환경 즉, 프로세스에 작업의 주체인 스레드가 각자의 역할에 맞게 구성되어 있다.. 라고 정리하면 될것 같다. 우리가 윈도우에서 보는 프로세스는 하나의 응용 프로그램. 즉, 하나 이상인 스레드의 집합을 말한다. 이런 프로세스는 종류가 4가지가 있다. 1. 시스템 프로세스 커널에서만 실행되는 시스템 스레드들을 호스팅하는 프로세스로서, Ntoskrnl...

반응형