[CS지식] 프로세스와 스레드

😎·2023년 2월 15일
0

CS지식

목록 보기
2/7

📌

먼저 프로세스와 스레드 관련하여 구글링을 해보니 많은 정보들이 있었는데요 이 포스팅은 지극히 제가 이해한 대로 개념을 서술할 예정이니 참고만 부탁 드립니다 😂

프로세스란?

메모리에 올라와 실행되고 있는 프로그램의 인스턴스
즉 동적인 개념으로는 실행된 프로그램을 의미하며,
기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있습니다.

스레드란?

스레드란 프로세스내에서 실행되고 있는 여러 흐름의 단위를 의미합니다.

📌 프로세스와 스레드의 개념을 합쳐서 이해하자면, 프로세스는 운영체제로 부터 자원을 할당받는 작업의 단위 이고 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위로 이해할수 있습니다.

실행방식

프로세스는 실행 시 운영체제로부터 필요한 주소 공간, 메모리 등 자원을 할당 받는데요
스레드는 이러한 자원을 같은 프로세스 내애서 공유하면서 실행 되게 됩니다.

👉 프로세스가 할당받는 자원

  • Code, Data, Stack, Heap 구조로 되어있는 독립된 메모리 영역
  • 주소 공간
  • CPU 시간

☝여기서 스레드는 같은 프로세스 내에서 자원을 공유하지만 stack은 따로 할당받습니다

왜 멀티 스레드를 사용할까?

결론만 먼저 말하자면 시스템 자원을 효율적으로 사용,관리 하기 위함입니다!
멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행 한다면
프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들고 이를 통해 자원을 효과적으로
관리 할 수 있다고 하네요 😀😀
또한 프로세스간의 통신보다 스레드간의 통신 비용이 적으므로 작업들 간의 통신의 부담또한 줄어들게 된다고 합니다 👍

☝ 그러나 전역 변수를 통해 스레드 간의 자원을 공유하기 때문에 동기화 문제는 잘 해결해야 한다고 합니다 !

왜 멀티 프로세스를 사용할까?

일단 멀티스레드보다 구현이 간단하다고 하네요!
이외에도 여러 개의 자식 프로세스 중 하나에 문제가 발생해도
다른 자식 프로세스에 영향이 확산되지 않는 이유가 있으며,
각 프로세스들이 독립적으로 동작(자원이 서로 다르게 할당됨) 하기 때문에 안정적이라는 장점이 있습니다 😀😀

☝ 다만 위에서 멀티스레드를 사용하는 이유에서 알 수 있듯이
멀티 스레드 보다 많은 메모리 공간과 CPU 시간을 차지하고
작업량이 많을수록 오버헤드가 발생하고 Context Switching으로 인한 성능 저하가 우
려되므로 잘 고려해서 사용 해야겠습니다 😊

profile
개발 블로그

0개의 댓글