운영 체제에서는 프로세스와 스레드 모두 코드를 실행하고 작업을 수행하는 데 사용되지만, 몇 가지 점에서 차이가 있습니다.
1. 프로세스(Process)의 개념
프로세스는 컴퓨터에서 실행 중인 프로그램의 인스턴스입니다. 프로세스는 프로그램 코드와 데이터를 포함하는 메모리 공간과 CPU 시간, 파일, 네트워크 연결 및 기타 리소스를 포함한 시스템 리소스 집합으로 구성됩니다. 각 프로세스에는 고유한 메모리 공간이 있으므로 다른 프로세스의 메모리에 직접 액세스할 수 없습니다.
2. 쓰레드(Thread)의 개념
반면 스레드는 프로세스의 하위 집합입니다. 스레드는 프로세스 내에서 독립적인 실행 경로입니다. 프로세스 내에서 여러 스레드가 동시에 실행될 수 있으며 프로세스와 동일한 메모리 공간 및 시스템 리소스를 공유합니다. 각 스레드에는 로컬 변수와 함수 호출을 저장하는 데 사용되는 자체 스택이 있습니다.
3. 프로세스(Process)와 쓰레드(Thread)의 차이점
프로세스와 스레드의 주요 차이점은 다음과 같습니다:
리소스 사용량: 프로세스는 자체 메모리 공간과 시스템 리소스를 포함하므로 스레드보다 더 많은 리소스를 필요로 합니다. 프로세스 내의 여러 스레드가 이러한 리소스를 공유합니다.
메모리 공유: 스레드는 프로세스 내에서 메모리를 공유하므로 동일한 프로세스에 있는 다른 스레드의 메모리에 직접 액세스할 수 있습니다. 프로세스는 서로의 메모리 공간에 액세스할 수 없습니다.
스케줄링: 프로세스는 서로 독립적으로 예약되므로 서로 다른 프로세서에서 실행되거나 개별적으로 일시 중지 및 재개될 수 있습니다. 프로세스 내의 스레드는 운영 체제의 스레드 스케줄러에 의해 스케줄링되며, 이 스케줄러는 각 스레드에 CPU 시간을 할당해야 하는 시기를 결정합니다.
생성 및 소멸: 프로세스를 만들고 소멸하는 것은 스레드를 만들고 소멸하는 것보다 리소스 집약적입니다. 새 프로세스를 만들려면 메모리 공간과 시스템 리소스를 할당해야 하는 반면, 새 스레드를 만들려면 새 스택만 할당하면 됩니다.
4. 결론
요약하면, 프로세스와 스레드는 둘 다 코드를 실행하고 작업을 수행하는 데 사용되지만 리소스 사용, 메모리 공유, 스케줄링, 생성/소멸 측면에서 차이가 있습니다. 프로세스는 일반적으로 독립적인 프로그램을 실행하는 데 사용되는 반면 스레드는 단일 프로그램 내에서 병렬 처리를 수행하는 데 사용됩니다.
'공부 > OS' 카테고리의 다른 글
세마포어(semaphore)란? (0) | 2023.06.03 |
---|---|
운영 체제(OS)란? (1) | 2023.06.03 |
프로세스(Process)란? (0) | 2023.04.09 |
단편화(Fragmentation)란? (0) | 2023.03.04 |
세그멘테이션(Segmentation)이란? (0) | 2023.03.04 |