프로세스란 보조기억 장치 즉 HDD나 SSD에 데이터 형태로 저장된 프로그램을 메모리에 올렸을 때 생겨난다.
현재의 우리는 여러 프로그램을 동시에 프로세스로 올려 실행하고 있는데. CPU는 하나이며 메모리 또한 물리적인 크기 즉 자원이 유한하다. 하지만 우리는 수 많은 프로세스를 동시에 돌리고 있으며 메모리의 크기보다 프로세스의 크기가 더 큰 경우에도 컴퓨터에선 잘 돌릴 수 있는데 이러한 일들을 OS에서 관리하고 있기 때문이다.
이제부터, 프로세스가 무엇이며 OS가 어떻게 이러한 프로세스와 메모리를 관리하는지 정리해보겠다.
1. CPU의 자원을 나눠 가지는 방법.

위 사진과 같이 프로세스는 서로 CPU의 자원을 필요로 한다. 이 때 OS에서는 일정 시간 간격으로 ( 타이머 인터럽트 ) CPU의 자원을 나눠줄 수 있게 된다. 이러한 현상을 Context Switch ( 문맥교환 ) 이라고 부른다.

여기서 궁금한 점은 프로세스1,2,3 의 작업이 순차적으로 끝나고 나면 다시 프로세스 1가 중간에 하던 일을 다시 해야하는데 이러한 정보를 어떻게 알 수 있을까? 가령 프로세스 A의 작업을 끝내고 B작업으로 바꿨을 때 중간에 B 작업을 처음부터 다시 시작하지 않는 이상 중간 내용을 저장하고 있어야 한다.

이러한 정보를 프로세스가 생성 될 때 PCB라는 것을 만들어 관리하게 된다.

그러면 위 사진과 같이 문맥교환이 일어날 때 마다. 프로세스가 타임 인터럽트 마다 PCB 내용을 저장하고 가져오는 작업을 수행하며 동시에 여러 프로세스를 작동하는 것 처럼 보일 수 있다.
2. 프로세스의 메모리 영역

프로세스는 이러한 PCB 내용을 커널영역에 올려두고 OS에서 관리해준다. 그럼 사용자 영역 메모리에선 어떠한 정보들을 담을까?

위 사진과 같이 프로세스에 필요한 메모리를 담고 있는데, 간단히 살펴보자면 스택 영역은 개발자가 작성한 매개 변수 , 지역 변수와 같이 데이터가 일시적으로 저장되는 공간을 의미한다.
힙 영역은 동적으로 할당된 공간이며,
데이터 영역은 잠깐 썼다가 없앨 데이터가 아닌 프로세스가 종료될 때 까지 사용되는 데이터 즉 전역변수와 같은 것을 담고 있다.
코드 영역은 말 실행할 수 있는 코드 기계어로 이루어진 명령어를 저장한다. 데이터가 아닌 CPU에게 실행할 명령어가 담기기에 쓰기가 금지되어 있는 영역이다.
'프로그래밍-기본기 > CS' 카테고리의 다른 글
| [OS] 운영체제란 (0) | 2024.05.16 |
|---|