쟈미로그

프로세스와 스레드, 멀티 프로세스와 멀티 스레드 본문

CS/OS

프로세스와 스레드, 멀티 프로세스와 멀티 스레드

쟈미 2022. 11. 22. 01:26

1. 프로세스와 스레드

프로세스

  • 프로그램이 자원을 할당받고 메모리에 올라가서 실행되고 있는 상태.
  • code, data, heap, stack 영역을 갖는다.
  • 프로세스마다 각자의 공간을 갖는다. = 서로 다른 프로세스 간에 메모리 접근은 허용 불가능하다! (만약 프로세스간 통신을 원한다면 IPC를 이용해야한다.)
    • 따로 동기화 작업이 필요없다.
    • 컨텍스트 스위칭 비용이 크다.

스레드

  • 프로세스 내의 실행 단위. 하나의 프로세스는 반드시 1개 이상의 스레드(메인 스레드)를 갖는다.
  • stack만 따로 할당받고, 나머지 code/data/heap 영역은 공유한다.
    • 동기화 작업이 필요하다.
    • 컨텍스트 스위칭 비용이 적다.
  • 스레드마다 PC 레지스터를 갖는다. (스레드도 결국 컨텍스트 스위칭 되므로)
스레드마다 stack을 독립적으로 할당하는 이유?
스택 공간이 독립적이다 = 독립적인 함수 호출이 가능함을 의미한다.
즉, 독립적인 실행 흐름을 만들기 위해서 스레드마다 별개의 스택을 갖는다.

 

 

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

멀티 프로세스

멀티 프로세스란 하나의 프로그램을 여러 개의 프로세스로 구성해서 병렬적으로 작업을 수행하는 것이다.

시스템 콜fork()를 통해 부모 프로세스로부터 자식 프로세스를 복제 생성할 수 있다. 프로세스 간 통신을 위해 IPC를 사용해야한다.

  • 독립된 구조로 안정성이 좋다. 한 프로세스에 문제가 생겨도 다른 프로세스에 영향이 가지 않는다.
  • 동기화 작업을 고려하지 않아서 구현이 비교적 간단하다.
  • 메모리, 컨텍스트 스위칭에 오버헤드가 발생해서 성능 저하 유발한다.
시스템 콜?
사용자 or 응용프로그램이 커널에서 제공하는 기능을 사용하기 위한 인터페이스.

 

멀티 스레드

멀티 스레드란 하나의 프로세스를 여러 개의 스레드로 구성해서 병렬적으로 작업을 수행하는 것이다.

  • 메모리 공유를 통해 적은 메모리 공간 사용.
  • 처리 비용 감소 : 컨텍스트 스위칭이 빠르다.
  • 통신 비용이 적어서 부담이 줄어든다.
  • 동기화 문제 발생할 수 있다. (병목현상, 데드락 등)
  • 하나의 스레드에 문제 발생 시 전체 스레드에 영향이 간다.
두 방법 모두 동시에 여러 작업을 수행할 수 있다는 점은 동일하지만, 각자 장단점이 존재하므로 상황에 따라 적합한 방식을 채택해야한다.

 

 

크롬의 각 탭은 프로세스? 스레드?

결론부터 말하자면, 크롬의 각 탭은 프로세스다.

크롬에 탭을 여러 개 생성 후, 생성된 크롬 프로세스들을 확인해보면 다양한 PID를 가진 chrome.exe의 프로세스들을 확인할 수 있다.

크롬은 안정성과 보안을 우선시 해서 멀티프로세스를 채택한 듯하다.

 

 

 

 

 

참고
프로세스와 스레드
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4
멀티 프로세스와 멀티 스레드
https://velog.io/@dailyhyun/%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-vs-%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C
https://wooody92.github.io/os/%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C/
Comments