리눅스 프로세스 ( process ) 란?

실행중인 프로그램

DISK ( 한글.exe ) ---> MEM ( 한글 process ) ---> CPU ( 중앙 처리 장치 )

프로세스는 프로그램이 메모리에 적재되어 실제로 실행되고 있는 상태를 말한다. 프로세스는 컴퓨터 내에서 실행중인 프로그램의 인스턴스이다. 여러 명의 사용자들에 의해 공유되고 있는 응용프로그램은 일반적으로 각 사용자들의 실행단계에서 하나의 프로세스를 갖는다. 프로세스는 자 프로세스라고도 불리는 서브프로세스를 시작시킬 수 있다. 자프로세스는 부프로세스의 복제로서 부프로세스의 자원을 일부 공유하는데, 부 프로세스가 종료되면 더 이상 존재 할 수 없다. 프로세스들은 몇 가지 IPC 방식을 통하여 정보를 교환하거 그들의 연산을 동기화 할 수 있다.

모든 프로그램은 실행될 때 하나 이상의 프로세스를 갖는다. 하나의 프로세스에는 여러 명령어와 카운트, CPU 레지스터, 그리고 루틴 인자, 복귀 주소, 저장된 변수 등의 데이터 스택이 포함되어 있다. 각 프로세스는 고유한 권한과 책임을 가지고 서로 통신하며, 시스템에서 동작중인 하나의 프로세스가 잘못된 연산을 수행하여 에러를 일으키더라고 다른 프로세스는 정상적으로 작동한다. 개별 프로세스는 자신의 가상 주소 공간에서 실행되며, 커널이 제공하는 인터페이스를 통해서만 다른 프로세스와 연동할 수 있다.

프로세스는 여러 가지 자원을 사용한다. 프로세스는 해당 명령을 수행하기 위해 운영체제에 따라 CPU를 점유 할  수 있다. 명령어와 데이터를 저장하기 위해 물리적인 메모리를 사용한다. 프로세스는 운영체제의 제어를 받으면서 실행 ( running ), 대기 ( waiting ), 중단 ( stopped ), 좀비 ( zombie ) 중 한 상태에 있게 된다.

+ Recent posts