목차
프로세스
프로세스는 운영 체제에서 실행 중인 프로그램의 인스턴스를 의미합니다.
보통은 개념을 배우는 곳에서는 예시를 드는 것을 선호하지 않지만, 프로세스를 처음 이해하기 위해 가능한 가장 비슷한 예시를 들어보겠습니다.
프로그램을 클래스라고 생각해봅시다.
클래스를 사용하려면 클래스를 객체로 만들어야 합니다. 이를 클래스 인스턴스라고 합니다.
프로세스도 비슷합니다. 하드 디스크에는 프로그램의 정보(클래스)가 있습니다. 이 정보를 읽어 객체화하는 것이 바로 프로세스입니다.
프로세스의 주요 기능
1.
자원 할당의 기본 단위 : 프로세스는 운영 체제가 시스템 자원(CPU 시간, 메모리 공간, 파일 시스템 등)을 할당하는 기본 단위입니다. 운영 체제는 각 프로세스에 필요한 자원을 할당하고, 프로세스가 자원을 효율적으로 사용할 수 있도록 관리합니다.
2.
실행의 기본 단위 컨테이너 : 프로세스는 프로그램의 코드를 실행하는 컨테이너 역할을 합니다. 프로세스 내부에는 하나 이상의 실행 쓰레드가 있으며, 이 쓰레드들이 실제로 코드를 실행합니다. 프로세스는 프로그램이 실행되는 동안 코드와 데이터, 시스템 호출 등을 관리합니다.
실행의 기본 단위는 사실상 쓰레드입니다. 이 부분은 멀티쓰레드에 관한 부분에서 다룰 예정입니다. 현재로서는 CPU가 프로그램을 실행할 때 프로세스 내의 쓰레드를 사용한다는 것만 이해하면 됩니다.
3.
격리와 독립성 제공 : 프로세스는 메모리 공간과 자원을 격리하여 각 프로세스가 독립적으로 실행될 수 있도록 합니다. 이는 한 프로세스의 장애가 다른 프로세스에 영향을 미치지 않도록 하며, 보안과 안정성을 향상시킵니다.
4.
통신과 협업의 수단 : 프로세스는 시스템 내에서 서로 통신하고 협업할 수 있는 수단을 제공합니다. 이를 위해 운영 체제는 IPC메커니즘을 제공하며, 이를 통해 프로세스는 메시지를 주고받거나 데이터를 공유할 수 있습니다.
IPC에 대한 자세한 설명은 이후 '프로세스 vs 쓰레드'에서 다루겠습니다.
지금은 프로세스 간 정보 교환 정도로만 이해하면 됩니다.