운영체제 - 쓰레드

yjkim·2023년 10월 9일
0

운영체제

목록 보기
5/7

Ch4 쓰레드

쓰레드란

  • 실질적인 실행의 기본 단위
    • Linux, Windows등 대부분의 커널에서 실행의 실질적인 단위는 프로세스가 아니라 스레드임!!
  • 스케쥴링의 단위
  • 쓰레드들은 각자 자신의 stack 영역을 보유함(최소한 자신의 레지스터 상태를 보유함)
  • 쓰레드는 프로세스 내에서 heap, data, code 영역을 공유

    쓰레드는 해당 프로세스 안의 메모리를 공유해서 사용할 수 있다.
    일반적으로 프로세스는 최소한 하나의 쓰레드를 가지고 있다. 둘 이상의 스레드를 가지고 있다면 이는 멀티스레드라고함.

쓰레드의 이점

  • Responsiveness(응답성) : 프로세스의 일부가 차단되었음에도 나머지 스레드는 계속해서 실행될 수 있음. ex) UI같이 응답성이 중요한 부분에서 사용자와의 상호작용을 계속해서 유지하여야 하기 때문

  • Resource Sharing(자원 공유) : 쓰레드는 하나의 프로세스 내에서 실행되므로 프로세스의 자원을 공유 할 수 있고 이는 공유 메모리나 메세지패싱보다 효과적이다.

  • Economy(경제성) : 쓰레드를 생성하는 것이 프로세스를 생성하는 것보다 더 적은 자원을 소비하며, 쓰레드 전환은 프로세스간 전환보다 오버헤드가 낮다. 이로인해 스레드를 경량 프로세스라고 부르기도 함.

  • Scalability(확장성) : 멀티프로세서 아키텍처에서 여러 스레드가 동시에 실행될 수 있으므로 프로세스는 다중 프로세서 환경에서 성능을 향상시킬 수 있다.

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

  • 멀티 프로세스 : 하나의 응용프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 작업을 처리하도록 하는것.

  • 멀티 스레드 : 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것. 이 경우 각각의 스레드는 독립적인 작업을 수행해야 하기 때문에 각자의 스택과 PC 레지스터 값을 갖고 있다.

예시

  • Google Docs가 프로세스고, 문서에 참여하는 사용자들을 스레드라 가정
  • 만약 멀티 프로세스라면 사용자 한 명당 하나의 Google Docs
  • 만약 멀티 스레드라면 여러 사람들이 각자의 임무를 하나의 Google Docs에서 동시에 마무리

  • 사용자 수만큼의 Google Docs -> 1개의 Google Docs
    --> 사용 자원 감소
  • 작업 후 여러개의 Google Docs 취합 -> 함께 임무 수행 (취합필요x)
    --> 통신 비용 감소

멀티스레딩의 장점

  • 메모리 공간과 시스템 자원의 절약 (당연함)
  • 스레드간 통신을 할 때에도 별도의 자원을 이용하는 것이 아니라 프로세스의 전역변수나 동적으로 할당된 공간인 Heap영역을 사용하면 됨(프로세스간 통신인 IPC에 비해 간단)
  • 또한 스레드의 문맥교환은 프로세스의 문맥교환과 달리 캐시메모리를 비울 필요가 없어 더 빠름

멀티스레딩의 문제점

  • 공유 자원에 접근할 때 스레드간 동기화 작업이 필요하다. 하지만 이러한 동기화 작업으로 인해 병목현상이 발생하여 성능이 저하될 수도 있다.

  • 멀티프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 수행된다는 장점이 있지만 (카톡하다 오류 발생했다고 틀어놓은 멜론 노래가 꺼지진 않듯이) 멀티스레드는 하나의 스레드가 죽으면 전체 스레드가 죽을 수 도 있음.

멀티스레딩과 멀티프로세싱 이 두가지는 동시에 여러가지를 수행한다는 점은 같지만 시스템에 따라서 적합 부적합이 갈린다 --> 적합한 방식 선택 ㄱㄱ

멀티코어프로그래밍

하나의 작업을 위해 여러개의 cpu 코어를 활용하기 위해 코드를 작성하는 작업

Parellelism(병렬성) vs Concurrency(동시성)

  • 동시성 : 동시에 실행되는 것 "처럼 보이는것"
    • 싱글코어, 멀티코어에서 가능
  • 병렬성 : 실제로 동시에 실행되는 것
    • 멀티코어에서 가능
    • Data 병렬성, Task 병렬성

동시성

병렬성

싱글스레드 프로세스 & 멀티스레드 프로세스

다음은 번외로 프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍 총정리 ㄱ

profile
We may throw the dice, but the Lord determines how they fall

0개의 댓글