카테고리 없음

프로세스(Process)와 스레드(Thread)

STUFIT 2024. 7. 30. 17:35
반응형

1. 프로세스

- 프로세스는 운영체제에서 실행중인 프로그램의 독립적인 인스턴스를 뜻한다. 예를들어, 우리가 컴퓨터에서 여러 개의  프로그램을 동시에 실행한다고 가정한다면, 각 프로그램은 하나의 프로세스로 실행된다.

- 프로세스는 독립된 메모리 공간을 가지고 있어서, 한 프로셋의 메모리나 데이터는 다른 프로세스와 공유되지 않는다. 이는 보안성과 안전성 측면에서 매우 중요하다. 예를들어, 하나의 프로세스가 오류로 인해 중단되더라도 다른 프로세스에서는 영향을 미치지 않는다.

- 프로세스 간 통신은 별도의 메커니즘을 사용해야 되는데 이를 IPC(Inter-Process-Communication) 이라고 한다. 이러한 통신은 파일, 파이프, 메세지 큐, 공유 메모리 등을 통해 이루어 질 수 있다. 

 

2. 스레드

- 스레드는 프로세스 내에서 실행되는 더 작은 단위를 뜻한다. 하나의 프로세스는 여러개의 스레드를 가질 수 있으며, 이들은 프로세스의 자원을 공유한다.

- 스레드는 동일한 메모리 공간을 공유하기 때문에 데이터를 주고받는 데 있어서 프로세스보다 더 효율적이다. 예를 들어, 같은 프로그램 내에서 여러 작업이 동시에 처리되어야 할 때, 스레드를 사용하면 데이터를 쉽게 공유할 수 있다.

- 하지만 공유 메모리로 인해 동기화 문제가 발생할 수 있다. 예를 들어, 여러 스레드가 동시에 데이터를 수정하려고 하면 데이터 불일치가 발생할 수 있다. 이를 방지하기 위해 세마포어 같은 동기화 기법이 사용된다.

- 스레드는 프로세스보다 가벼워서 생성과 관리가 비교적 빠르고 자원 소모가 적다.

 

프로세스와 스레드를 간단한 예시로 표현하자면 작업실과 작업실 안에 있는 직원들로 볼 수 있다.

각 작업실은 프로세스를 뜻하며, 작업실은 독립적이고 다른 작업실과는 벽으로 구분되어 있어서 공유되지 못해 보안성과 안전성이 높다. 그래서 어느 작업실이 폐업하더라도 다른 작업실에 영향을 미치지 않는다. 스레드는 해당 작업실에서 작업하는 직원들로 표현할 수 있다. 이 직원들은 같은 작업실 안에서 자원을 공유하며 일을 하지만 다른 작업실의 자원은 공유할 수 없다.

반응형