ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그램 & 프로세스 & 스레드
    개발에 필요한 기초 지식 2022. 6. 15. 14:42

     

    프로세스와 스레드에 찾아보게 된 이유는?

    회사에서 MariaDB를 사용하려는데 RDBMS에서 가장 많이 쓰이는 것이 PostgreSQL여서 두 가지의 장단점을 체크하여 어떤 것이 더 우리 회사에 맞을지 알아보던 중에 PostgreSQL은 멀티 프로세스 방식이고 MariaDB는 멀티스레드 방식을 사용하고 있다고 하여 프로세스와 스레드에 대해 찾아보게 되었다.

     


    프로그램

    파일이 저장 장치에는 저장되어 있지만 메모리에는 할당되지 않은 정적인 상태

    특정 작업을 수행하는 일련의 명령어들의 모음

     


    프로세스

    컴퓨터가 특정한 작업을 하고 있는 상태 (실행되고 있는 컴퓨터 프로그램)

    운영체제의 안정성을 위해 각 프로세스는 고유한 메모리를 할당받고 해당 메모리에만 접근할 수 있도록 제약

     

     

     


    스레드

    하나의 프로그램만 실행시킬 수 있던 문제를 해결하고자 만들어진 개념

    프로세스 내에서 실행되는 흐름의 단위
    스레드 간 메모리 공유하며 동작한다. (Stack 영역을 제외한 Code, Data, Heap 영역 서로 공유)

    메모리 공간을 공유하기에 동기화 문제 발생할 수 있다.
    CPU 입장에서는 최소 작업 단위가 된다.

     


    동시성 (컨텍스트 스위칭)

    실행 중인 프로세스 또는 스레드가 변경되어 번갈아가며 진행하는 것
    프로세스의 컨텍스트 스위칭과 스레드의 컨텍스트 스위칭의 장단점은 프로세스의 자원 공유 방식과 스레드의 자원 공유 방식의 차이로 인해 뚜렷하게 드러나기에 해당 환경에 보다 적합한 것을 구분할 수 있어야 한다.

     

     


    멀티 프로세스

    하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것

     

    • 장점

    하나의 프로세스에 문제가 있어도 프로그램은 동작한다.

     

    이유는 프로세스는 메모리를 공유할 수 없어서일까..?

    하지만 커널 영역에서 IPC(Inter Process Communication)를 통해 메모리를 공유할 수 있다는데 이렇게 했을 때 하나의 프로세스에 문제가 생겨도 여전히 프로그램은 종료되지 않고 동작하는 걸까?

     

    • 단점

    컨텍스트 스위칭 비용 발생

     


    멀티 스레드

    하나의 프로세스가 여러 개의 스레드를 사용하여 동시에 처리하는 것을 의미한다.

     

    • 장점

    컨텍스트 스위칭 덕분에 공유하고 있는 메모리만큼의 메모리 자원을 아낄 수 있다.

     

    • 단점

    스레드 하나에서 에러가 발생할 경우 해당 프로그램 자체가 종료될 수 있다.
    공유하고 있는 메모리들로 인해 동기화 문제 발생

     

    • 특징 및 유의사항

    프로그래머가 각각의 스레드 순서를 직접 정해줘야 하기에(스레드의 스케쥴링) 멀티 스레드 사용 시에는 신중해야 하며 발생할 수 있는 동기화 문제에도 직접 대응해야 하기에 그만큼 디버깅도 어려워질 수 있다.

     


    멀티 태스킹

    하나의 운영체제(OS) 안에서 여러 프로세스가 실행되는 것을 의미한다.
    여러 프로세스가 동시에 실행되는 것처럼 보이지만 실제로는 그렇지 않다.

     


     

     

    스레드에서 Stack, Code, Data, Heap 영역이 있던데 Stack은 공유하지 않고 나머지 영역만 공유한다는 점이 신기해서 다음에는 이에 대해 자세히 다뤄보겠습니다.

    그 후 IPC에도 여러 종류가 있던데 이에 대해 정리해보겠습니다.

     

     

    <참고 자료>

    raejoonee 님의 프로세스와 스레드의 차이

    https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4

     

    Noah 님의 Process, Thread 차이가 뭐예요?

    https://brunch.co.kr/@babosamo/100

     

     

    RASTA LION 님의 PostgreSQL과 MariaDB의 사이에서의 선택

    https://rastalion.me/postgresql%EA%B3%BC-mariadb%EC%9D%98-%EC%82%AC%EC%9D%B4%EC%97%90%EC%84%9C%EC%9D%98-%EC%84%A0%ED%83%9D/

     

    댓글

Designed by Tistory.