• Process vs Thread

    2021. 7. 2.

    by. KimBangg

    키워드

     

    1. 실행 단위 - Cpu Core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념

    2. (부연 설명이 없는) 프로세스 - 하나의 스레드만 가지고 있는 단일 스레드 프로세스

    3. 동시성 - 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것.

     

    [1] 프로그램과 프로세스

     

    프로그램은 실행이 되지 않은 '코드들'을 의미하고, 이를 사용하기 위해서는 실행이 되어서 사용 할 수 있는 '프로세스'가 되어야 한다.

     

     

    * 프로그램이 프로세스가 될 때 어떤 일이 일어나는가?

     

    1-1 프로세스가 필요로 하는 재료(코드[실행 코드] , 데이터[Static || Global ], 힙[ 동적 메모리], 스택[일시적 데이터]) 이 메모리에 올라가야한다.

     

    1-2 해당 프로세스에 대한 정보를 담고 있는 PCB 블록이 만들어진다.

     

    [2] Context Switching

     

    기본적으로 한 프로세스가 CPU를 점유하고 있으면, 다른 프로세스는 접근이 불가능하다. 그리하여, 다수의 프로세스를 작동 하기 위해 짧은 텀을 반복하면서(=시분할) 전환해서 실행 시키도록 한다. 이걸 용어로 표현 하면 Context Switching(= 문맥 교환) 이라고 한다.

     

    단 두개의 프로그램만 돌려도 각각의 프로세스는 실행 -> 대기 -> 실행 -> 대기를 반복한다. 이러한 문제를 해결 하기 위해 경량화된 프로세스인 '스레드'라는 개념이 생긴다.

     

    [3] 스레드 ( Thread )

     

    스레드는 코드, 데이터, 힙 영역을 공통된 자원으로 사용한다.

    그리하여, 문맥 교환이 발생 할 때 캐싱 적중률이 올라간다. 즉, 쉽게 말해서 모든 작업을 다 뺴고 다시 넣을 필요가 없다는 것을 의미한다.

     

    예를 들면, 회의실을 공용해서 사용 할 때 이를 '프로세스' 단위로 사용하면  < 티비 스피커 리모콘 > 같은 공용재를 가지고 매 회의마다 빼고, 가져다주는 행위를 하는 것이다. 이를 스레드처럼 사용하면, 당연히 공용재는 놔두고 필요한 물품만 가져오겠죠? 이득 !

     

    [4] 멀티 프로세스 & 스레드 ( = 소프트웨어에 가까움 )

     

    멀티 프로세스와 스레드는 모두 처리방식의 일종이다. 

     

    멀티프로세스는 아까 이야기 한 것처럼 CPU를 온전히 차지 하기 때문에 이에 발생하는 문맥 교환의 비용이 크다. 또한 상호간에 메모리가 독립적이기 때문에 IPC를 통해 연락을 해야한다. 단, 분리가 되어있기 때문에 상호 영향을 주지 않는다 ( = 크롬 )

     

    멀티 스레드는 공용재를 나눠 사용 하기 때문에, 경량화가 되어있지만 하나에 문제가 생기면 모든 스레드에 영향을 줄 수 있다. ( = 익스플로어 )

     

    [5] 멀티 코어 ( = 하드웨어에 가까움 )

     

    물리적으로 여러 코어를 사용해서 다수의 실행 단위를 한 순간에 처리가 가능 하게 한다.

     

    싱글코어는 동시성적인 처리만 가능하고, 멀티코어는 위에서 언급한 병렬처리가 가능하다.

     

     

    출처

     

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

     

    댓글