쓰레드 란

이상수·2022년 11월 28일
0

CS - 운영체제

목록 보기
3/4

1. 쓰레드 란?

  • 프로세스 내에서 실행되는 처리 흐름의 단위 or CPU 스케줄링의 기본단위
  • 한 프로세스 내에 여러 쓰레드가 존재할 수 있음
  • 쓰레드 별로 Stack 영역을 보유하고, Heap, Method, Data 영역을 공유
  • 작업을 수행하는 손(쓰레드), 사람(CPU)

2. 멀티 쓰레드

1). 장점

  • 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유(Heap, Data, Method등)하고 자원의 생성과 중복성을 최소화하여 수행 능력을 향상 시키는 것
  • 즉, 하나의 프로그램에서 동시에 여러 일을 수행할 수 있음

2). 단점

  • 멀티 프로세스와 달리 멀티 쓰레드는 자원을 공유하여 사용하기에 같은 자원에 동시에 접근하여 데이터의 불 일치성이 발생할 수 있어 이 부분을 신경써줘야 한다.
  • 따라서, 동기화 작업을 통하여 공유 자원의 접근을 컨트롤 해줘야 하고 이로인해 병목현상이 발생하여 성능이 저하될 수 있다.
  • 스케줄링 기술을 이용하여 처리 필요

3. 멀티 프로세스

  • 여러 개의 프로세스가 서로 협력적으로 일을 처리하는 것
  • 여러 개의 프로세스가 작업을 병렬 처리 하는것
  • 각 프로세스 간 메모리 구분이 필요하거나 독립적 주소 공간을 가져야 할 때

1). 장점

  1. 독립된 구조로 안정성이 높음
  2. 여러 프로세스가 같이 작업하여 다른 프로세스가 죽어도 다른 프로세스에 영향을 미치지 않음
  3. 여러 개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 모아 두고 모든 프로세서가 이를 공유하면 비용적 저렴

2). 단점

  1. 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다.
  2. 독립된 메모리 주소이기에, 작업량이 많을 수록 Context Switching(: 여러 프로세스를 하나씩 수행하며 이전 상태를 보관하고 다음 프로세스가 동작하며 이전 보관 프로세스가 동작)이 자주 발생하여 오버헤드가 발생
profile
Will be great Backend-developer

0개의 댓글