ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [cs] Process vs Thread
    CS 2022. 12. 5. 03:07
    728x90

    https://www.youtube.com/watch?v=1grtWKqTn50

    위 영상을 보고 정리한 글입니다.
    💡 이번 주제는 면접 단골 질문

     

    용어정리

    1. 프로세스 : 운영체제로부터 자원을 할당받는 작업의 단위
    1. 스레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위

     

    Process & Thread


    미리 알면 좋은 process 지식

    Program

    어떤 작업을 위해 실행할 수 있는 파일

     

    Process

    • 특징
      • 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.
      • 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
      • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다.

     

    Thread

    • 특징
      • 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.
      • 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들(힙 공간 등)을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.
      • 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유한다. 반면에 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.
      • 각각의 스레드는 별도의 레지스터와 스택을 갖고 있지만, 힙 메모리는 서로 읽고 쓸 수 있다.
      • 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(sibling thread)도 그 변경 결과를 즉시 볼 수 있다.

    Context Switching

    cpu는 한번에 한가지 일만 처리하기 때문에 2개 이상의 작업을 동시에 처리하기 위해서는 프로세스를 하나씩 적재와 준비 상태를 번갈아가며 진행해야 한다.

     

    Multi-process & Multi-thread


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

    • 멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 Context Switching이 빠른 장점이 있지만, 동기화 문제와 하나의 스레드 장애로 전체 스레드가 종료 될 위험을 갖고 있다.
    • 멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높지만, 멀티 스레드보다 많은 메모리공간과 CPU 시간을 차지하는 단점이 있다.
    • 두 방법은 동시에 여러 작업을 수행하는 점에서 동일하지만, 각각의 장단이 있으므로 적용하는 시스템에 따라 적합한 동작 방식을 선택하고 적용해야 한다.

    왜 멀티 프로세스로 할 수 있는 작업들을 굳이 하나의 프로세스에서 스레드로 나눠가며 할까

    • 운영체제가 시스템 자원을 효율적으로 관리하기 위해 스레드를 사용한다.
    • 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
    • 또한, 프로세스 간의 통신보다 스레드 간의 통신 비용이 적으므로 작업들 간 통신의 부담이 줄어든다.

    그렇다면 무조건 멀티 스레드가 좋을까?

    • 스레드를 활용하면 자원의 효율성이 증가하기도 하지만, 스레드 간의 자원 공유는 전역 변수를 이용하므로 동기화 문제가 발생 할 수 있으므로 프로그래머의 주의가 필요하다.

     

     

    References


    https://www.youtube.com/watch?v=1grtWKqTn50

    https://wooody92.github.io/os/멀티-프로세스와-멀티-스레드/

    https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

    728x90

    'CS' 카테고리의 다른 글

    [CS] 웹서버 vs WAS  (0) 2022.12.11
    DR 시스템  (1) 2022.12.05
    [cs] HTTPS  (0) 2022.12.05
    [cs] DNS  (0) 2022.12.05
    [cs] 세션 vs 토큰 vs 쿠키  (0) 2022.12.05
Designed by Tistory.