본문 바로가기
CS/Operating System

스레드

by 겸 2023. 10. 27.

Thread

프로세스 내부에서 CPU를 수행하는 단위

왜 필요할까?

프로세스마다 주소공간에 code, data, stack이 있고, 프로세스 하나를 관리하기 위해 운영체제 내부에 PCB가 있다. 이는 프로세스의 상태와 ID, program counter(메모리의 어느부분을 가리키고 있는가) 등을 저장하고 있다. 만약 동일한 일을 하는 프로세스가 여러개라면 프로세스마다 별도의 메모리 주소 공간을 가져야하므로 메모리가 낭비된다. 이때, 프로세스를 하나만 띄워놓고 하나의 code, data, stack영역을 공유한다면 메모리를 아낄 수 있을 것이다. 이것이 스레드를 사용하는 이유이다.

작동 원리

하나의 프로세스에 CPU의 실행 단위를 여러개를 두어 스레드 별로 CPU가 code의 어느부분을 실행하고 있는지 별도의 program counter로 저장한다. 또한, 각 스레드마다 코드를 실행하면서 저장하는 메모리의 레지스터의 값도 별도로 유지한다.

하지만 스레드 하나가 코드 어느부분을 실행하며 함수호출을하고 리턴하는 부분은 Stack에 쌓아야 할 것이다.

즉, 프로세스 하나에서 공유할 수 있는 것은 최대한 공유하고(Task - OS자원, 프로세스 정보, code, data영역), 별도로 가지고 있어야할 정보(CPU 수행과 관련된 정보 - program counter, register, stack영역)들은 스레드들 마다 따로 가진다.

장점

  1. 빠른 응답 시간 - 하나의 프로세스 안에 스레드를 여러개 두면 스레드 하나가 차단되었을 때, 다른 CPU가 실행될 수 있어 빠른 처리를 할 수 있다.
  2. 자원을 공유할 수 있다.
  3. 생성과 스위칭 시간이 짧다.
  4. 멀티 프로세스 구조에서 병렬성을 높일 수 있다.
반응형

'CS > Operating System' 카테고리의 다른 글

프로세스  (0) 2023.10.27
프로그램의 실행  (1) 2023.10.26
운영체제  (0) 2023.10.26