본문 바로가기
Computer Science/OS

[OS] 프로세스 (2)

by soobaaaam 2021. 12. 1.
728x90

<Thread>

 

1. Thread란

 프로세스 내부에 CPU 수행 단위가 여러 개 있는 경우를 말한다.

 

 

 

출처 : 이화여자대학교 반효경 교수님 '운영체제' 강의

 

 프로세스 하나 당 code, data, stack으로 이루어진 주소 공간이 만들어진다. (조금 더 자세한 내용은 링크로)

 프로세스 하나를 관리하기 위해 운영체제 내부에 프로세스의 상태 등을 나타내는 PCB가 있다.

 

쓰레드들은 프로세스 하나에서 서로 공유할 수 있는 것들은 최대한 공유한다.

  • 공유하는 것들(task) : 메모리 주소 공간, 프로세스 상태, 프로세스가 사용하는 각종 자원 (code section, data section, OS resource)
  • 별도로 갖는 것 : CPU 수행과 관련된 정보들(PC, 레지스터, 스택)

즉, 쓰레드는 PC, register set, stack space로 구성되어 있다.

 

2. Thread의 장점

1.

 하나의 프로세스 안에 쓰레드를 여러 개 두게 되면, 하나의 쓰레드가 blocked 상태일 때 다른 쓰레드가 CPU를 잡고 running 할 수 있으므로 응답 시간이 빨라진다.

 

ex) 네이버를 보기 위해선 네트워크를 통해서 웹페이지를 읽어 와야 한다. 이 과정은 I/O작업이므로, 내 웹브라우저는 blocked 상태가 된다. 이때, 웹브라우저가 여러 개의 쓰레드를 갖고 있다면 하나의 쓰레드가 네이버 웹 서버에서 이미지를 불러오는 동안 다른 쓰레드가 이미 읽어 온 텍스트를 화면에 불러서 사용자가 결과를 더 빠르게 볼 수 있다.

 

2.

 같은 일을 하는 작업들을 별도의 프로세스로 만들어 놓으면 메모리 같은 자원들이 낭비가 된다.

 프로세스가 하나 만들어지면 그에 따른 독자적인 주소 공간이 각각 만들어지고 이는 메모리를 차지하기 때문이다.

 이 때, 하나의 프로세스 안에 쓰레드만 여러 개 두면 자원을 절약할 수 있다.

 

3.

 병렬성을 높일 수 있다.

 이는 CPU가  여러 개 달린 컴퓨터에서만 얻을 수 있는 장점이다.

 

3. 쓰레드가 별도로 갖는 것

 

출처 : 이화여자대학교 반효경 교수님 '운영체제' 강의

 

쓰레드는 프로세스 하나에 CPU 수행 단위만 두고 있다.

 CPU 수행을 위해(instruction 실행을 위해) 알아야 하는 현재 code의 어느 부분을 실행하고 있는지 가리키는 Program Conter와 CPU에서 실행되면서 메모리에 어떤 레지스터 값이 있는지를 별도로 유지한다.

 

 프로세스 안에 쓰레드가 여러 개 있으면 CPU 수행과 관련된 정보들(program counter, registers)만 각각 쓰레드마다 별도의 copy를 갖는다.

 


* 본 글은 이화여자대학교 반효경 교수님 강의 '운영체제와 정보기술의 원리(반효경 지음)' 서적에 기반하여 작성하였습니다.