티스토리 뷰

OS

프로세스란 무엇인가

LDobac 2017. 2. 9. 21:46

이번 포스팅에서는 프로세스에 대해서 알아 보겠습니다.

프로세스는 우리가 컴퓨터를 만지작 거리다 보면 어디선가 한 번씩은 꼭 들어보는 단어 입니다.

그래서 프로세스가 무슨 뜻이냐?

프로세스는 현재 컴퓨터에서 실행중인 프로그램의 인스턴스 라고 할 수 있습니다.

여기서 헷갈릴수 있는 것이 프로세스와 프로그램의 차이점을 잘 구분하지 못하는것인데.

C++프로그래밍을 하는 사람이라면 간단하게 이해 할 수 있는데. 마치 클래스와 오브젝트의 차이점 같은것이다.

이렇게 말하면 더 어려워 지는 듯하니 제대로 설명하면

프로그램은 하드 디스크 같은 보조 메모리에 저장된 일련의 기계어(명령 코드)들로 이루어진 데이터들의 묶음이다. 그리고 이 프로그램이 구동이 된다면 주 메모리에 적재되며 메모리 상에서 실행되는 작업의 단위를 프로세스라고 한다. 보통은 작업(Task)라고도 부른다.

(작업 관리자의 모습)


보다시피 여러개의 프로세스가 실행중이며 CPU가 열심히 일을 하는 것을 볼 수 있다.

우리는 자연스럽게 보아왔지만 어떻게 여러개의 프로세스가 동시 실행 될 수 있을까?

저렇게 여러 개의 프로세스를 사용 하는 것을 멀티프로세싱 이라고 하며, 같은 시간에 여러 개의 프로그램을 띄우는 것을 멀티 태스킹 이라고 한다.

일반적으로 운영 체제가 멀티 태스킹을 구현 하는 방식은 각 프로세스마다 상태를 부여 하고 상태에 따라서 저 프로세스 이 프로세스를 왔다 갔다 하며 조금씩 조금씩 명령어들을 실행 해나간다. 이 과정이 짧게 반복 되므로 우리는 동시에 여러 프로그램이 실행중이라고 느끼는 것 이다.


그러면 프로세스의 상태와 프로세스의 상태전이에 대해서 알아 보겠습니다.

(프로세스 상태전이의 모습)

위 사진은 프로세스 상태전이에 대한 모습입니다. 그러면 하나씩 가면서 설명 해보겠습니다.

맨 처음 프로세스가 생성이 됩니다. 그러면 그 프로세스는 준비 상태가 되며 CPU가 사용 하고 있지는 않지만 언제든지 사용 할 준비가 되어 있는 상태입니다.

그러면 디스패치 과정을 통해 실행 상태로 전이가 되는데 디스패치는 준비 리스트에서 가장 앞에 있던(우선순위가 가장 높던)프로세스가 CPU를 점유 하는 것을 말합니다.

그후 프로세스가 실행 상태가 되면 CPU가 프로세스의 명령어 들을 실행 합니다. 여기서 만약 인터럽트나 입출력 같은 프로세스가 정지가 되어야 하는 이벤트가 발생되면 프로세느는 블록(Blocked)상태로 전이되며  프로세스는 그 이벤트가 완료되기를 기다리는 상태가 됩니다.

그리고 이벤트가 완료 된다면 다시 준비상태로 전이되어 위와 같은 상태를 반복합니다.

그리고 실행중인 프로세스가 계속 CPU를 점유 하는 상황을 막기 위해 프로세스 마다 시간 제한을 두어 그 시간이 만료가 된다면 프로세스는 CPU 자원을 반납하고 준비상태로 되돌아 갑니다.

이렇게 프로세스가 상태 전이를 반복하면서 CPU의 자원을 할당 반납하는 행위를 스케줄링 이라고 합니다. 스케줄링은 멀티 태스킹의 매우 중요한 한 부분이므로 잘 알아 두어야 합니다.


이번 포스팅은 여기까지 이며 다음 포스팅은 이 내용에서 조금 이어진 문맥 교환에 대해서 알아 보도록 하겠습니다.


'OS' 카테고리의 다른 글

IPC(Inter-Process Communication) 이란  (0) 2017.02.11
문맥 교환(Context Switching)  (0) 2017.02.09
커널의 종류  (0) 2017.02.08
커널의 기능들 - 2  (0) 2017.02.08
커널의 기능들 - 1  (0) 2017.02.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함