오늘은 프로세스와 스레드의 개념과 둘의 차이점에 대해 알아보겠습니다.
1.프로세스
- 프로세스란 프로그램이 메모리상에 적재되어 OS로부터 시스템 자원을 할당받는 작업의 단위
또는 실행 중인 프로그램 인스턴스입니다. - 각 프로세스는 별도의 주소 공간에서 실행되어 자원을 공유하지 않습니다.
- 다른 프로세스의 자원에 접근하려면 IPC(Inter-Process Communication)이 필요합니다.(메일 슬롯, 파이프, 소켓 등)
- 할당받는 시스템 자원의 종류로는 Code, Data, Stack, Heap 등의 구조로 된 메모리 영역과 주소 공간, CPU 시간 등이 있습니다.
- Code : 프로그래머가 작성한 프로그램이 위치합니다.
- Date : 코드가 실행되면서 사용한 변수나 파일 등이 위치합니다.
- Stack : 호출한 함수가 종료되면 돌아올 메모리의 주소를 저장하는 영역입니다.
- Heap : 동적으로 할당되는 데이터들을 위한 영역입니다.
이 중 Code와 Data 영역은 크기가 변하지 않는 정적 영역이고 Stack과 Heap은 크기가 변하는 동적 영역입니다.
2.스레드
- 프로세스 내에서 실행되는 흐름의 단위입니다.
- 한 프로세스는 반드시 하나 이상의 스레드를 가집니다.
- 각 스레드는 Stack 영역만 따로 할당받고 Code, Data, Heap 영역은 공유합니다.
- 어떤 스레드가 프로세스 자원을 변경하면 다른 스레드도 변경 결과를 볼 수 있습니다.
3.프로세스와 스레드의 차이점
- 프로세스는 다른 프로세스와 자원을 공유하지 않는 반면에
스레드는 같은 프로세스 내의 다른 스레드와 자원을 공유하는 차이가 있습니다.
'기술면접' 카테고리의 다른 글
| 트랜잭션이란? (0) | 2023.04.03 |
|---|---|
| TCP와 UDP의 공통점과 차이점 (0) | 2023.03.31 |
| Filter, Interceptor, AOP 정의 (0) | 2023.03.30 |
| DI 구현 방법 비교해보기 (0) | 2023.03.30 |
| Parameter와 Argument (0) | 2023.03.30 |