오늘 한일
- 프로세스(Process)
1. 정의 : 프로세스는 실행 중인 프로그램의 인스턴스이다. 운영 체제는 각 프로세스를 독립된 메모리 공간에서 실행하며, 프로세스는 CPU, 메모리, 파일 핸들, 네트워크 연결 등의 자원을 소유한다.
2. 특징
- 독립된 메모리 공간 : 각 프로세스는 운영 체제로부터 고유한 메모리 공간(주소 공간)을 할당받는다. 다른 프로세스의 메모리에 직접 접근할 수 없다.
- 자원 관리 : 프로세스는 파일, 네트워크 연결 등 여러 자원을 소유하며 운영 체제는 이러한 자원을 각 프로세스에 대해 관리한다.
- 오버헤드 : 새로운 프로세스를 생성하는 데는 많은 자원이 필요하며 프로세스 간의 통신(예: IPC, Inter-Process Communication)도 상대적으로 복잡하다.
- 쓰레드(Thread)
1. 정의 : 쓰레드는 프로세스 내에서 실행되는 더 작은 실행 단위이다. 프로세스의 코드, 데이터, 힙(Heap) 메모리를 공유하며 각 쓰레드는 독립적인 스택(Stack)과 프로그램 카운터를 가진다.
2. 특징
- 공유 메모리 : 같은 프로세스 내의 모든 쓰레드는 같은 메모리 공간을 공유하므로, 데이터를 공유하고 통신하는 데 상대적으로 효율적이다.
- 경량성 : 쓰레드는 프로세스보다 생성 및 관리가 더 가볍고 빠르다. 프로세스 내에서 여러 쓰레드를 병렬로 실행하여 멀티태스킹을 수행할 수 있다.
- 병렬 처리 : CPU의 멀티코어 환경에서 여러 쓰레드가 병렬로 실행될 수 있어 성능을 향상시킬 수 있다.
- 프로세스와 쓰레드의 차이점
프로세스 | 쓰레드 | |
메모리 공간 | 각 프로세스는 독립된 메모리 공간을 가진다. | 같은 프로세스 내에서 메모리 공간을 공유한다. |
자원 소유 | 프로세스는 자원을 독립적으로 소유한다. | 쓰레드는 프로세스의 자원을 공유한다. |
생성 오버헤드 | 프로세스를 생성하는 데 많은 자원이 필요하다. | 쓰레드는 상대적으로 적은 자원으로 생성할 수 있다. |
통신 방식 | 프로세스 간의 통신은 복잡하며, 주로 IPC를 사용한다. | 쓰레드는 같은 메모리 공간을 사용하여 쉽게 통신할 수 있다. |
안전성 | 한 프로세스가 실패해도 다른 프로세스에 영향을 미치지 않는다. | 한 쓰레드가 실패하면 같은 프로세스 내의 다른 쓰레드에도 영향을 줄 수 있다. |
병렬성 | 프로세스는 독립적으로 실행되므로 병렬성이 떨어진다. | 여러 쓰레드는 병렬로 실행되어 성능을 향상시킬 수 있다. |
오늘의 TIP
- 멀티 프로세스는 독립된 메모리 공간을 가진 프로세스들이 동시에 실행되는 방식이다. 반면, 멀티 스레드는 하나의 프로세스 내에서 여러 스레드가 메모리를 공유하며 실행되는 방식이다.
'TIL' 카테고리의 다른 글
TIL#70(브라우저에 네이버 홈페이지 URL을 입력했을 때 일어나는 과정) (0) | 2024.08.14 |
---|---|
TIL#68(SQL JOIN) (0) | 2024.08.09 |
TIL#67(Primary Key, Foreign Key, ER 모델) (0) | 2024.08.09 |
TIL#66(이진 트리, 이진 검색 트리, 힙) (0) | 2024.08.02 |
TIL#65(Array와 LinkedList, Stack과 Queue) (0) | 2024.08.01 |