Shine's dev log

프로세스의 개념 본문

운영체제

프로세스의 개념

dong1 2020. 4. 8. 18:09

컴퓨터를 공부하다 보면

 

프로그램, 프로세스라는 말이 많이 나온다.

 

과연 프로그램과 프로세스의 정확한 정의는 무엇인지

 

이 둘의 차이는 무엇인지 이번에 다뤄보자.

 

 

 

1. 프로세스란?

 

프로세스를 가장 직관적으로 볼 수 있는 곳은 작업관리자이다.

 

작업관리자를 실행하면 프로세스 탭에서

 

현재 컴퓨터에서 실행중인 프로세스의 목록을 확인할 수 있다.

 

우리가 현재 사용중인 웹이나 프로그램들 뿐만 아니라

 

우리가 인지하지 못했지만, 열심히 돌아가고 있는 여러 프로세스들도 확인할 수 있다.

 

프로세스란..

 

디스크에 있는 프로그램이 메모리에 올라와 실체화 된 것이다.

 

자바를 예로들어 설명해보면,

 

class 인 프로그램이 object인 프로세스가 되는 것이다.

 

따라서 하나의 프로그램이 여러개의 프로세스가 될 수 있다.

 

그리고 각자의 프로세스는 구분할 수 있는 이름이 있는데, 이를 PID라고 한다.

 

From Program to Process

 

위의 그림은 디스크의 프로그램이 실제 메모리에 프로세스로 올라가는 과정을 나타낸 것이다.

 

이처럼 메모리에 프로세스가 올라가게 되면,

 

각각의 프로세스는 자신들의 고유한 주소공간을 메모리에 가지게 된다. 

 

메모리에 있는 프로세스를 실행할 때는 운영체제가 메모리에서 프로그램 카운터를 이용해 실행시킨다.

 

참고로, 디스크의 프로그램이 메모리로 올라가는 과정들은 다 privileged instruction이다.

 

 

 

2. 프로세스 상태 변화

 

process state transitions

 

위의 그림은 프로세스가 상황별 상태를 도식화한 그림이다.

 

우선 ready 상태에서 CPU Schedular 가 dispatch해주면

 

running 상태로 돌입한다.

 

그러다가 interrupt가 발생하면 다시 ready 상태로 돌아간다.

 

I/O와 같이 대기가 필요하는 주변창치와

 

함께 프로세스를 가동하면, ready가 아닌 waiting 상태로 간다.

 

이후에 I/O가 준비 끝나면 그제야 ready 상태로 간다.

 

 

 

3. 프로세스 Hierarchy

 

항상 프로세스는 부모 (parent process)가 자식(child process)를 만드는 형태로 생성된다.

 

이렇게 새로운 프로세스를 만들어 주는 것은

 

운영체제가 해주는데, 이 때 사용되는 시스템콜이 fork()이다.

 

fork()에 대한 자세한 내용은 다음에 짚어보도록 하자.

 

 

오늘 내용을 정리해보자

 

1. 디스크에 있는 프로그램이 메모리로 올라오면 프로세스가 된다.

 

2. 프로세스는 여러가지 상태가 계속 순환하는 형태로 돌아간다.

 

3. 프로세스는 계층구조를 가진다.

 

 

본 내용은 공부하며 정리한 것으로, 오류가 있을 수 있습니다.

'운영체제' 카테고리의 다른 글

IPC_1 (cooperating process model)  (0) 2020.04.12
프로세스 생성, 대체, 종료  (0) 2020.04.09
운영체제의 구조 (2)  (0) 2020.04.07
운영체제의 구조 (BIOS, Policy & Mechanism)  (0) 2020.04.05
시스템 콜 (System call)  (0) 2020.04.01