우보천리 개발

[OS] Thread, Multi-Process, Multi-Thread 본문

Computer Science/운영체제

[OS] Thread, Multi-Process, Multi-Thread

밥은답 2023. 5. 13. 16:16
반응형

스레드는 프로세스의 수행 흐름 단위이다.

응용프로그램에는 최소 하나의 프로세스가 있고, 프로세스 안에는 최소 하나의 스레드가 존재한다.

스레드는 프로세스 안에 여러개 존재 할 수 있는데 이는 현대 운영체제에서 지원한다. 

 

다중 스레드는 프로그램 하나를 여러개로 나누어서 실행하기 때문에 다중 처리라고도 한다.

 

스레드 

프로세스는 자원과 제어로 구분할 수 있는데 제어를 분리한 수행단위를 스레드라고 한다.

 

스레드는 Program Counter, Stack Pointer, Register 등은 개별적으로 갖고 있지만 

Code, Data, Heap 영역은 서로 공유한다

 

멀티 스레드의 장점

 

  • 사용자 응답성의 증가: 병렬로 수행되기 때문에 프로그램의 일부분이 blocked여도 다른 부분은 수행하면서 사용자 응답성 증가
  • 자원과 메모리 공유: 자원과 메모리를 공유하기 때문에 하나의 주소공간에 여러개의 스레드가 실행하며 성능 향상
  • 경제성: 프로세스를 새로 생성하는 것보다 스레드를 생성하는 것이 문맥교환의 오버헤드가 훨씬 낮다

멀티 스레드의 단점

 

  • 자원을 공유하기 때문에 하나의 스레드에서 발생한 오류 때문에 전체에 영향을 미칠 수 있다
  • 임계영역에 대한 문제가 발생한다
  • 동기화 문제를 해결해야한다

 

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

  • 멀티 프로세스는 각 프로세스 별로 독립된 공간을 갖고 있기 때문에 데이터, 힙, 코드를 공유하는 스레드 보다는 안정성이 높다.
  • 독립된 구조이기 때문에 스레드와 달리 하나의 문제점은 다른 프로세스에 영향을 주지 않는다
  • 하지만 멀티 프로세스는 독립된 공간을 갖고 있기 때문에 문맥교환에 있어서 많은 오버헤드가 발생한다
  • 멀티 스레드는 자원을 공유하기 때문에 멀티 프로세스와 다르게 경제성이 좋고 시스템 성능이 향상이된다.
  • 힙을 공유하기 때문에 서로 데이터를 공유할 수 있다.
  • 멀티 프로세스보다 문맥교환의 오버헤드가 낮다.
  • 하지만 스레드는 자원을 공유하는 만큼, 동기화 문제가 발생할 수 있고, 하나의 스레드에서 문제가 발생하면 시스템 전체에 이상이 생길 가능성이 있다.
반응형

'Computer Science > 운영체제' 카테고리의 다른 글

[OS] DeadLock  (0) 2023.05.25
[OS] 스케줄링 알고리즘  (0) 2023.05.17
[OS] 프로세스 스케줄링  (0) 2023.05.16
[OS] 프로세스 생성과 협력 개요  (0) 2023.05.15
[OS] 프로세스와 문맥교환  (0) 2023.04.24
Comments