오래 못 할 짓 하지 않기

[ 운영체제 ] 5. Thread 본문

3학년 1학기/운영체제 (OS)

[ 운영체제 ] 5. Thread

쫑알bot 2024. 1. 5. 14:17
728x90

스레드(thread)

: 프로세스를 구성하는 실행 흐름의 단위

 

하나의 프로세스는 하나 이상의 스레드를 가질 수 있다.

 

 

● 실행 흐름이 하나인 프로세스 ( = 단일 스레드 프로세스 )

 

 

 

● 실행 흐름이 여러 개인 프로세스 ( = 멀티 스레드 프로세스 )

→ 프로세스를 이루는 여러 명령어를 동시에 실행 가능하다.

 

 

어떻게 여러 스레드가 동시에 나누어져서 실행될 수 있을까??

 

● 스레드의 구성요소

: 스레드 ID  /  PC를 비롯한 Register 값 / Stack

 

  실행에 필요한 최소한의 정보를 유지한 채 실행된다.

  하지만 하나의 프로세스 내에 있는 스레드들은 

  해당 프로세스의 자원을 공유할 수 있다.

 

 


멀티 프로세스    vs      멀티 스레드

동일한 작업을 수행하는 단일 스레드   /  프로세스 여러 개   [ = 멀티 프로세스 ]

 

                                         VS  

 

         "  "        "  "             하나의 프로세스여러 스레드로 실행  [ = 멀티 스레드 ]

 

어떤 차이가 있을까?

 

예) hello,os 3번 출력해 봐라

 

[ 차이점 ]

자원 공유

 

프로세스끼리는 자원 공유 X   /  스레드끼리는 자원 공유 O 

 

프로세스를 fork하면 모든 자원이 복제되어 저장됨.

= (저장된 메모리 주소 외에) 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재

 

위 사진은 멀티 프로세스이고

 


아래 사진은 멀티 스레드이다.

 

요약 

때로는 자원을 공유한다는 점이 문제가 될 수가 있다.

하나의 스레드에 문제가 생기면, 다른(모든) 스레드에 문제가 생길 수 있다.

 

 

 

프로세스간 자원을 공유하지 않는다.

- 프로세스 간에도 자원을 주고받을 수 있다 : 프로세스 간 통신 (IPC)

- 파일을 통한 프로세스 간 통신, 공유 메모리를 통한 프로세스 간 통신

 

스레드는 프로세스의 자원을 공유한다.

 

 

(출처)

 

유튜브 한빛미디어