ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] 스레드와 멀티프로세스, 멀티스레드
    운영체제 2023. 3. 19. 13:10
    728x90
    반응형


    오늘은 스레드에 대해서 공부해 볼 겁니당🤨. 스레드는 프로세스를 구성하는 실행의 흐름 단위인데, 정확한 의미와 멀티스레드와 멀티프로세스의 차이도 알아봅시당




    🧐스레드란?

    • 프로세스를 구성하는 실행의 흐름 단위
    • 하나의 프로세스는 여러 개의 스레드를 가질 수 있음
    • 스레드를 이용하면 하나의 프로세스에서 여러 부문을 동시에 실행할 수 있음


    프로세스와 스레드

    🧲 단일 스레드 프로세스

    프로세스가 하나의 실행 흐름을 가지고 한 번에 하나의 부분만 실행되는 프로세스

    🧲 멀티스레드 프로세스

    스레드라는 개념이 도입된 후, 하나의 프로세스가 여러 일을 동시에 처리하게 된 프로세스


    스레드의 구성


    🧲 스레드의 구성

    • 스레드 ID
    • 프로그램 카운터 및 레지스터 값
    • 스택



    프로세스의 스레드들은 실행에 필요한 최소한의 정보(프로그램 카운터를 포함한 레지스터, 스택)만을 유지한 채 프로세스 자원을 공유하며 실행됩니다. 프로세스의 자원을 공유한다는 점이 스레드의 핵심입니다.

    최근 많은 운영체제는 CPU를 처리할 작업을 전달할 때 프로세스가 아닌 스레드 단위로 전달합니다.

    ✋🏻여기서 잠깐, 리눅스는 조금 다르다.

    리눅스는 프로세스와 스레드 모두 실행의 문맥이라는 점에서 동등하다고 간주하고 이 둘을 크게 구분 짓지 않습니다. 프로세스와 스레드라는 말 대신 태스크 (task)라는 이름으로 통일하여 부릅니다.




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

    컴퓨터는 실행 과정에서 여러 프로세스가 동시에 실행될 수 있고, 그 프로세스를 이루는 스레드는 여러 개 있을 수 있습니다. 이때 여러 프로세스를 동시에 실행하는 것을 멀티프로세스(multiprocess), 그리고 여러 스레드로 프로세스를 동시에 실행하는 것을 멀티스레드(multithread)라고 합니다.


    🤔 그렇다면, 동일한 작업을 수행하는 단일 스레드 프로세스 여러 개를 실행하는 것과 하나의 프로세스를 여러 스레드로 실행하는 것은 무엇이 다를까요?

    스레드끼리는 자원을 공유한다는 점에서 큰 차이가 발생합니다.

    프로세스를 fork하여 같은 작업을 하는 동일한 프로세스 두 개를 실행하면 코드 영역, 데이터 영역, 힙 영역 등을 비롯한 모든 자원이 복제되어 메모리에 적재됩니다. 한 마디로 PID와 저장된 메모리 주소만 제외하면 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재되는 것이 됩니다. 같은 프로그램을 위한 똑같은 내용이 중복 적재되어 있다는 것은 낭비일 수 있습니다.

    프로세스의 자원을 공유한다는 특성은 때로는 단점이 될 수도 있는데, 멀티프로세스 환경에서는 하나의 프로세스에 문제가 생겨도 다른 프로세스에는 지장이 적거나 없지만, 멀티스레드 환경에서는 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있습니다.

    LIST
Designed by Tistory.