728x90
프로세스와 프로그램의 차이
- 프로그램은 디스크에 저장된 명령어 집합
- 프로세스는 프로그램이 실행되어 메모리에 올라간 상태
- 운영체제는 PCB(Process Control Block)를 통해 프로세스를 관리하며, PCB에는 프로세스 ID, 상태, 스케줄링 정보 등이 담겨 있다.
스레드(Thread)
- 스레드는 프로세스 내에서 실행 흐름의 최소 단위
- 하나의 프로세스는 여러 개의 쓰레드를 가질 수 있고, 이를 멀티스레드라고 한다
- 쓰레드는 같은 메모리 공간(코드, 데이터, 힙)을 공유하지만 스택은 각 쓰레드마다 독립적으로 사용한다
멀티스레드 vs 멀티프로세스
- 멀티스레드 : 하나의 프로세스에서 여러 쓰레드가 자원을 공유하면서 동시에 작업을 수행한다. 성능은 빠르지만 자원 공유로 인해 동기화 문제가 발생할 수 있습니다. 이를 해결하기 위해 뮤텍스나 세마포어 같은 동기화 도구가 필요하다.
- 멀티프로세스 : 각각의 프로세스가 독립적으로 실행되며, 서로 자원을 공유하지 않는다. 따라서 하나의 프로세스에 문제가 생겨도 다른 프로세스에는 영향을 주지 않는다. 구글 크롬의 각 탭이 독립적으로 실행되는 방식이 비슷한 예이다.
컨텍스트 스위칭
- 컨텍스트 스위칭은 CPU가 한 프로세스나 쓰레드에서 다른 프로세스나 쓰레드로 작업을 전환할 때 발생한다.
- 프로세스 간 컨텍스트 스위칭은 비용이 많이 들지만, 쓰레드 간 전환은 자원을 공유하므로 상대적으로 빠르다.
웹 서버에서의 멀티스레드 사용
- 웹 서버는 여러 사용자의 요청을 동시에 처리하기 위해 멀티스레드 방식을 사용합니다.
- 예를 들어, 웹 페이지를 요청할 때 HTML, CSS, 이미지 등을 각각의 쓰레드로 동시에 처리하여 로딩 속도를 높인다.
멀티스레드와 멀티프로세스의 장단점
- 멀티스레드 : 자원을 공유해 메모리 효율이 좋고, 전환이 빠르다. 그러나 동기화 문제에 주의해야 한다.
- 멀티프로세스 : 독립적으로 실행되어 안정성이 높지만, 자원을 공유하지 않아 성능 오버헤드가 발생할 수 있다.
반응형
'CS' 카테고리의 다른 글
Github Actions 개념, 특징 (0) | 2024.12.10 |
---|---|
SQL Injection (1) | 2024.10.22 |
Scale-Up vs Scale-Out, SPOF 정리 (1) | 2024.10.21 |
Latency와 Bandwidth의 정의 및 관계 (0) | 2024.09.20 |