ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Process 와 Thread
    Computer Science/Operating System 2020. 8. 11. 18:03

    Process 와 Thread를 초간단 정리해보겠습니다.

     

    Process

    컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램

    • 실행중인 프로그램의 instance 로 운영체제에서 가장 기본적인 실행단위.
    • 각 프로세스는 Code, Data, Stack, Heap의 구조로 된 독립된 메모리영역을 갖는다.
    • 각 프로세스는 일정 생애주기를 갖는다.
    • 하나의 작업을 여러 프로세스에서 병렬로 처리하는 걸 멀티프로세싱이라고 한다.

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

     

     

    멀티 프로세싱
    하나의 작업을 여러 프로세스에서 병렬로 처리하는 걸 의미합니다.
    CPU에서 여러 프로세스를 돌면서 처리합니다.
    다음 프로세스로 넘어갈 때 동작중인 프로세스는 현재 상태(Context)를 보관하고,
    대기하고 있던 다음 프로세스의 상태(Context)를 복구합니다.
    이 과정을 Context Switching 이라고 하는데, 각각의 독립된 영역을 저장하고 불러오다보니
    꽤 무거운 작업이 진행되고 오버헤드가 발생합니다.

     

    Thread

    프로세스 내에서 실행되는 여러 흐름의 단위

    • 기본적으로 프로세스당 최소 1개의 스레드를 가지고 있고 그것을 메인스레드 라고 한다.
    • 프로세스는 1개 이상의 스레드를 가질 수 있으며 이를 멀티스레드 라고 한다.
    • 각각의 스레드는 Stack을 할당받고, 프로세스의 Code, Data, Heap을 공유한다.
    • 메모리를 공유하다보니 스레드 간에 데이터 전달이 간편해지고 시스템 자원 소모가 적다.
    • 여러 스레드가 동시에 작업하면, 데이터를 공유하는 만큼 충돌이 일어날 가능성이 크다.

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

     

    멀티 스레딩
    한 작업을 프로세스 안에 여러 개의 스레드가 병렬로 처리하는 걸 의미합니다.
    멀티 프로세싱과 유사한데 프로세스 대신 스레드로 처리한다고 생각할 수 있고,
    그에 따라 프로세스의 장/단점을 스레드의 장/단점에 맞춰 생가각하면 됩니다.
    멀티 스레드는 Context Switching이 빠르고 간단해집니다. 
    나머지 영역은 공유하기 때문에 각자 자신의 Stack만 처리하면 됩니다.
    하지만 데이터를 공유하면서 동시에 작업하기 때문에 충돌이 일어날 가능성이 크며 구조가 복잡해질 수 있습니다.

     

     

     

    참고

    - magi82.github.io/process-thread/

     

    process와 thread에 대한 정리 – 마기의 개발 블로그 – 즐겁게 개발을 하고 싶은 욕심 많은 개발자

    안녕하세요. 마기입니다. 개발 관련 블로그 정리 첫 시간입니다. 공부한 내용 정리 목적 및 공유를 위해 공부하는 내용을 하나하나 블로그에 정리할 생각입니다. 이번 시간에는 기본이지만 의외

    magi82.github.io

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

    'Computer Science > Operating System' 카테고리의 다른 글

    운영체제 OS (Operating System)  (0) 2020.08.11

    댓글

Designed by Tistory.