Notice
Recent Posts
Recent Comments
Link
쟈미로그
프로세스와 스레드, 멀티 프로세스와 멀티 스레드 본문
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/
'CS > OS' 카테고리의 다른 글
뮤텍스와 세마포어 (0) | 2022.11.22 |
---|---|
임계영역, 경쟁상태(Race Condition)와 교착상태(DeadLock) (1) | 2022.11.22 |
운영체제, 커널, 메모리 구조에 대해 (1) | 2022.11.21 |
Comments