본문 바로가기

개발/운영체제

프로세스란

프로세스란?

운영체제의 입장에서 프로세스는 하나의 작업 단위이다.

프로세스는 프로그램이 실행을 위해 메모리에 올라온 동적인 상태를 말한다.

 

프로세스의 처리 방식

프로세스의 처리 방식에는 크게 일괄 작업 방식과, 시분할 작업 방식이 있다.

여기서는 프로세스의 시분할 작업 방식에 대해서 더 자세히 정리하겠다.

또한 앞으로 설명하는 과정은 전부 시분할 작업 방식 아래에서 프로세스가 처리되는 과정에 대해 설명할 것이다.

 

 

 

- 생성상태

 

프로그램이 실행되기 위해서는 먼저 메모리에 올라와야 한다. (프로그램이 실행되기 위해선 메모리에 올라와야 한다. 이것을 폰노이만 구조라고 한다.)

 - 메모리에 올라오는 과정: 먼저 소스 코드를 컴파일 한다.(이 결과로 실행 모듈 즉, 실행 파일이 생긴다.) -> 실행 파일을 로딩한다 -> 메모리에 올라온다.

 

여기까지가 프로세스가 메모리에 올라와 실행 준비를 완료한 상태이다. (이 과정에서 프로세스 제어 블록이 생성된다)

 

- 준비상태

 

생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태이다. CPU가 하나인 컴퓨터에서는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 다른 프로세스들은 준비상태에서 자신의 차례를 기다리고 있다.

 

- 실행상태

 

프로세스 중 하나가 CPU를 얻어 작업을 수행하고 있는 상태이다. CPU 스케줄러가 준비 상태에 있는 프로세스 제어 블록을 선택하는 작업(dispatch)를 통해 실행 상태가 된다.

시분할 작업 방식에서는 여러 프로세스들을 타임 슬라이스 동안에 작업을 나누어서 진행하기 때문에 실행상태에 올라온 프로세스는 제한된 시간이 다 되면 인터럽트가 발생하여 준비 상태로 돌아갔다가 다음 차례를 기다려야 한다.

 

 

- 대기 상태

 

프로세스가 실행 상태에서 작업을 수행하는 도중, 입출력 작업을 수행해야 할 때 대기 상태로 간다.

운영체제는 프로세스를 처리할 때, 연산처리를 하는 CPU작업과 입출력 작업(스풀)을 독립적으로 나누어 처리한다.

따라서 프로세스가 입출력 작업을 해야할 때, 대기상태로 가게 되고 입출력 작업을 독립적으로 수행한다.

대기 상태에 있는 프로세스는 입출력 작업이 완료되면 인터럽트가 발생하여 대기 상태에 있는 프로세스를 준비 상태로 이동하게 한다.

 

- 완료상태

프로세스가 종료되는 상태이다. 데이터를 메모리에서 삭제하고 프로세스 제어 블록을 폐기한다.

 

 

 

 

 

 

 

 

 

 

 

 

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

프로세스 간 통신  (0) 2020.11.01
운영체제란?  (0) 2020.11.01
시분할 시스템  (0) 2020.11.01