Intro

Program 에 이어 이번 포스팅에서는 Process 에 대해 알아보겠습니다. 프로세스, 개발자가 아니더라도 한번쯤 들어봤을만한 단어입니다. 쉽다면 쉽지만 또 파고들고자 하면 꽤 깊은 내용까지 배워야 하는 것이 프로세스입니다. 그래도 이런 CS 적인 내용들은 한번 배워두면 바뀌지 않으므로 조금 재미없더라도 같이 열심히 공부해봅시다! 시작하기 전에 혹시 프로그램이 무엇인지 잘 모른다면 프로그램 포스팅을 먼저 읽고 오시는 것을 추천합니다 :)

Mac Activity Monitor

위 이미지를 보면 첫번재 칼럼에 Program Name 이 아닌 Process Name 이라 적힌 것을 확인할 수 있습니다. 그렇다면 왜 하필 Process Name 일까요? 이번 포스팅은 이 질문에 대한 대답을 해보고자 합니다.


Process 의 정의

질문에 대한 대답을 위해서는 먼저 프로세스의 정의를 알아보아야 할 것 같습니다. 프로세스가 무엇인지 정확히 알고 있다면, 왜 Process Name 인지도 설명할 수 있지 않을까요?

프로세스의 보편적 정의는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 입니다. 다르게 말하면 메모리에 올라와 실행되고 있는 프로그램의 인스턴스라 정의할 수 있고, 운영체제로부터 시스템 자원을 할당받는 작업의 단위라 정의할 수도 있습니다. 응?

하지만 이렇게 읽어서는 의미가 잘 와닿지 않으니 조금 다르게 설명해 보겠습니다. 운영체제가 프로그램을 실행하기 위해 필요한 가장 작은 단위의 쓰레드, 메모리, 소스코드들의 집합을 프로세스라 하며, 결국 프로세스는 프로그램의 동작 그 자체를 의미합니다. 그렇기 때문에 운영체제는 프로세스를 작업의 단위로 보고 자원들을 작업(프로세스)들에 적절하게 분배합니다.

여전히 이해하기가 쉽지 않죠? 조금 더 풀어서 설명해 볼게요. 우리가 특정 응용 프로그램을 실행하게 되면 하드디스크에서 해당 프로그램을 찾고, 실행을 위해 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가는 단계를 거치게 됩니다. 그리고 이 순간부터 우리는 Program 을 Process 라 합니다.

설마 아직도 이해가 안되었다고요??…그건 바로 나 그냥 쉽게 말해서 현재 실행 중인 프로그램을 Process 라 생각하면 됩니다 ㅎㅎ

Memory

프로세스에 대해 공부하다 보면 메모리와 관련된 부분이 빠질 수 없습니다. 그래서 메모리 파트를 어느 정도로 자세히 작성해야 할 지에 대한 고민을 많이 했습니다만, 일단 이번 포스팅에서는 최대한 간단히 필수적인 부분만 알고 넘어가고 깊게 공부해야 하는 내용은 나중에 다른 포스팅으로 작성해 보겠습니다.

그래서 프로세스의 메모리에 대해 반드시 알고 넘어가야 좋은 내용이 무엇이냐 하면… 운영체제는 프로세스마다 고유의 가상 메모리 공간을 할당한다는 것 입니다. 그리고 그 가상 메모리 공간은 4개의 영역으로 나누어진 구조를 가지고, 각 프로세스는 1개의 메모리 구조를 갖게 됩니다.

결론적으로 오늘은 각 프로세스는 1개의 완전한 메모리 구조를 소유하고, 그 메모리 구조는 4개의 영역으로 나뉘어 있다라는 것만 꼭 기억합시다.


Wrap Up

여기까지 Process 가 무엇인지에 대해 간단히 알아보았습니다. 그래서 처음 가졌던 질문인 왜 Activity Monitor 의 칼럼명은 Program Name 이 아닌 Process Name 인가? 대한 대답은 무엇일까요?

그것은 바로 Activity Monitor 에서 보여주는 리스트는 실행되고 있는 프로그램들의 리스트이기 때문입니다. 자 이렇게 알고나니 Program Name 보다 Process Name 이 훨씬 자연스러워 보이죠?


References

[운영체제] 프로세스란? (스케줄링, 메모리구조, 상태변화)
프로세스란?
[운영체제] 프로세스가 뭐지?