운영체제

6. 프로세스 개념

갓우태 2018. 12. 13. 17:59

프로세스란?

간단히 말해, 실행중인 프로그램


Mac OS에서 프로세스 보기 : Spotlight에서 [활성 상태 보기]를 입력

CPU를 점유하는 친구들


메모리가 어떻게 사용되고있나


각 프로세스가 디스크에서 읽고 쓴 데이터


멜론, 구글 크롬, 카카오톡처럼 현재 돌아가는 프로그램이 프로세스다. 

CPU는 이런 프로세스들이 구동되도록 도와주는 프로세서


그런데, 프로그램 = 프로세스가 아니다.

그 차이는, 실행했냐 아니냐?

프로그램은 생명이 없다. 그냥 정적인 데이터

이런 프로그램을 메모리에 적재하고 실행할때 프로세스가 된다.

즉 프로세스는 실행중인 프로그램.


CPU는 하나인데, 어떻게 우린 여러가지 작업을 한번에 수행할 수 있을까?

위의 프로세스들을 보면, 나는 지금 멜론을 틀으며 음악을 듣고, 카카오톡도 하면서 구글 크롬으로 블로그를 작성하고 있다.


결론은 CPU는 하나의 일만 수행하고 있지만, 빠르게 프로세스를 교체하면서 여러 작업을 동시에 하는 것 처럼 보여지는 것이다. 이런 프로세스 스케줄링에 대해선 다음에 얘기하고, 지금은 프로세스 상태에 대해서 얘기할 것이다.


프로세스 상태

그렇다면, 현재 CPU를 점유하면서 실행중인 프로세스가 있을 것이고, 또 잠시 물러나서 실행되기를 기다리는 프로세스도 있을 것이다.



NEW  : 프로세스가 생성 중이다. 카톡 킴


READY : 생성하고나서, 실행할 준비 완료했다. 여차하면 바로 실행


RUNNING : 프로세스 실행중


WAITING(BLOCKED) : 현재 실행중인데, I/O나 어떤 이벤트 발생하면, 잠시 물러난다.


TERMINATED : 종료됐다.


프로세스 구조




메모리 상에 프로세스는 다음과 같이 올라간다.


만약 우리가 코드를 짜고 프로그램을 실행했다고 생각해보자...


TEXT : CPU에서 실행될 명령어들은 여기에 있다. (코드)


DATA : 전역 변수가 들어간다.



위 두개는 크기가 변하지 않는다.


HEAP : new나 malloc처럼, 동적 할당해준 친구들이 

여기 들어간다.그래서 가변적이다.


STACK : 여긴 지역 변수가 들어간다. 함수가 끝나면 지역 변수도 

 사라지니까 얘도 늘어났다 줄어들다 그런다.






반응형