-
프로세스란 ?OS 운영체제/Linux 2020. 3. 23. 13:28
프로세스 란 ?
프로세스는 동작중인 프로그램으로 정의하고 있으며 이때 프로그램이라는 것은 컴파일 된 바이너리 파일이 링크 되어 있는 실행 파일 ( 컴파일 과정을 거친 바이너리 명령어 And 수행에 필요한 자료들의 집합으로 구성 ) 을 의미하며 이렇게 생성된 실행 파일이 Disk 내부에 위치한 상태를 말한다. 이때 Disk 에 위치한 프로그램을 실행하게 되면 Load 과정을 통해 메모리에 적재되는데 바로 이 상태를 프로세스라고 한다.
즉 프로세스는 동작중인 프로그램이며, 커널로부터 할당받은 자신만의 자원( OS 는 32 bit CPU 기준 프로세스에게 4GB 메모리를 할당 )을 가지고, CPU가 기계어 명령들을 실행함에 따라 끊임없이 변화하는 동적인 존재이다.
프로세스의 구조
위에서 프로세스가 어떤것인지 알았을 것이다. 그렇다면 프로세스는 어떻게 생겼을까 ?
프로세스의 구조는 다음과 같다. 32 bit CPU 기준 리눅스의 경우 각 프로세스마다 4GB의 메모리를 할당하며 프로세스는 해당 메모리 안에 자신의 내용 ( Code, Data ) 을 적재한다. 따라서 CPU는 OS가 할당해준 프로세스의 독립된 메모리 자원을 가지고 각 세그먼트에 있는 내용을 읽으며 프로세스를 동작시킨다.
이때 32 bit CPU 기준 리눅스는 0 ~ 3 GB 크기의 세그먼트는 사용자 공간으로 사용하며 나머지 3 ~ 4 GB 의 세그먼트는 커널 영역으로 사용한다.
1. 0GB ~ (text 영역) 프로세스가 동작할때 필요한 코드(함수) 정보
2. text ~ (data 영역) 전역 변수 등과 같이 프로세스가 동작할 때 필요한 자료(data) 정보
3. data ~ (heep 영역) 프로그램이 동작하는 상태에서 필요할 때 메모리를 할당 하는 영역
4. 3GB ~ ( stack 영역) 커널 영역과 사용자 영역의 경계에 위치 따라서 사용자 영역에서 사용할 수 있는 최대 크기는 3GB 임으로 사용할 수 있는 크기는 정해져 있다. 이에 맞게 stack 영역은 3GB 의 경계로 부터 아래로 크기가 확장된다.
따라서 프로그램이 동작하기 위해서는 OS로 부터 자신의 독자적인 영역을 할당받아야 하며 만약 할당 받았다면 해당 프로그램의 내용과 데이터는 위에 설명한 프로세스 구조에 알맞게 적재된다. CPU는 이렇게 프로세스의 구조에 알맞게 적재된 프로그램의 내용 ( 코드, 데이터 ) 를 처리함으로써 프로그램이 동작하는 상태 즉 프로세스가 된다. 추가적으로 heep, stack 세그먼트는 프로세스가 동작할 때 마다 수시로 바뀌는 특성을 같는다.