스레드 (Thread)
스레드라고 하는 것은 프로그램 내부에 흐르는 맥, 흐름이라고 한다. 우리가 상위 언어 예를 들어 자바나 C로 프로그램을 작성할 때 메인 함수를 통해 각종 표현식이 돌아 프로그램이 끝이 나는 것을 “맥이 흐른다.”라고 한다. 기본적으로는 한 프로그램에 맥이 하나 흐른다. 하지만 한 프로그램에 2개 이상의 맥이 흐를 수 있는데 이것을 다중 스레드(Multi Thread)라고 한다. 하지만 다중 스레드는 실제로 맥이 빠른 시간 간격으로 스위칭을 진행하는 것이 여러 가지 맥이 동시에 진행되는 것이 아니다. 시간 간격이 매우 짧아 동시에 맥이 흐르는 것처럼 보이는 것이다.
현재 대부분의 프로그램은 다중 스레드이다. 예를 들어, 웹 브라우저를 들면 화면을 출력을 시켜주는 프로그램 스레드가 있고 데이터를 읽어오는 스레드가 따로 존재한다. 두 가지의 스레드가 같이 돌고 있으므로 우리가 동시에 할 수 있는 것이다.
한 프로세스 내의 여러 개의 스레드는 프로세스의 메모리 공간을 공유하고 자원도 공유(file, I/O)를 한다. 하지만 개별적인 PC(process counter)나 SP(stack pointer), 혹은 stack 등을 공유하지는 않는다.
사실, 컴퓨터 내에서는 프로세스 단위의 스위칭이 아니라 스레드 단위의 스위칭이 일어난다. 즉, 다중 스레드 환경에서 CPU가 할당되는 단위는 프로세스가 아니라 스레드가 기준이 되어 할당받게 된다.
모든 프로그램은 기본적으로 하나의 스레드를 가지고 있다. 이 스레드는 메인 스레드(main 함수에 관련되어 있다.)라고 불린다. 이외에 스레드를 가지는 하위 클래스를 만들고 치환을 시킨 후 코드를 입력해 주면 새로운 다른 스레드를 만들 수 있다.
'OS > 프로세스 관리' 카테고리의 다른 글
CPU 스케줄링 (0) | 2018.11.30 |
---|---|
메시지 전달 시스템(Message-Passing System) (0) | 2018.11.08 |
공유 메모리 시스템 (Shared memory system) (0) | 2018.11.08 |
프로세스간 통신(Interprocess Communication) (0) | 2018.11.04 |
프로세스에 대한 연산 (Operation on Processes) (0) | 2018.11.04 |