Home [CS] 프로세스와 스레드 02 - 프로세스의 상태
Post
Cancel

[CS] 프로세스와 스레드 02 - 프로세스의 상태

개요

안녕하세요.

이번 글에서는 프로세스의 상태에 대해 살펴보겠습니다.


프로세스의 상태

프로세스 상태 종류

프로세스는 다음 표와 같은 상태를 가집니다.

상태설명
생성(create)프로세스의 생성
실행(running)프로세스가 CPU를 차지하여 명령어들 실행
준비(ready)프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태 우선순위가 높은 프로세스 순으로 CPU 할당
대기(waiting)보류(block)라고도 부름. 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태.
종료(terminated)프로세스의 실행 종료

프로세스 상태 변화

프로세스는 시스템에서 준비, 실행, 대기 상태로 바뀌면서 실행하고 종료합니다.

이러한 상태 변화는 운영체제가 작업 스케줄러와 프로세스 스케줄러 같은 프로레서 스케줄러를 이용해 관리합니다.

프로세스 상태 변화 [그림01] 프로세스 상태 변화

실행 상태의 프로세스는 프로세서가 자발적으로 반환하기 전에 할당된 시간이 지나면 준비 상태가 됩니다.

한편, 입출력 명령이나 특정 이벤트가 발생하면 대기 상태가 됩니다.

대기 상태인 프로세스는 대기 원인을 제거하면 준비 상태로 바뀝니다.

디스패처가 준비 상태인 프로세스를 프로세서에 할당하면 다시 실행 상태로 바뀝니다.

각각의 상세한 상태별 변화는 다음과 같습니다.

① 준비 -> 실행(Dispatch)

준비 큐 맨 앞에 있는 프로세스가 프로세서를 점유하는 것을 디스패치라고 합니다.

다중 프로그래밍 운영체제는 실행 상태인 프로세스가 할당된 시간만큼만 프로세서를 사용하여 특정 프로세스의 독점을 방지합니다.

② 실행 -> 준비(Timeout)

운영체제는 프로세스의 독점을 방지하기 위해 인터럽트 클록(interrupt clock)을 두어 일정 시간만 점유하도록 제한합니다.

이 시간이 지나도 프로세서를 반환하지 않으면 클록이 인터럽트를 발생시켜 운영체제에 프로세서 제어권을 부여합니다.

③ 실행 -> 대기(Block)

할당된 시간 이전에 실행 상태의 프로세스에 입출력 연산 또는 자원 요청 등의 문제로 프로세서를 스스로 넘기는 경우입니다.

④ 대기 -> 준비(Wakeup)

입출력 작업이 끝나거나 문제가 해결된다면 대기 상태에서 준비 상태가 됩니다.


프로세스 제어 블록(PCB)와 문맥 교환(Context Switch)

프로세스 제어 블록(PCB)

프로세스의 실행 정보는 프로세스 제어 블록(PCB)에 저장됩니다.

PCB에는 다음과 같은 정보가 담겨 있습니다.

정보설명
프로세스 식별자각 프로세스의 고유 식별자(숫자, 색인 항목)
프로세스 상태생성, 준비, 실행, 대기, 중단 등 상태 표시
프로그램 카운터프로세스 실행하는 다음 명령의 주소 표시
레지스터 저장 영역프로세스를 실행하는 다음 명령의 주소 표시 누산기, 인덱스 레지스터, 스택 포인터, 범용 레지스터. 조건 코드 등 정보로 컴퓨터 구조에 따라 수나 형태 차이.
인터럽트가 발생하면 프로그램 카운터와 함께 저장하여 재실행할 때 원래대로 복귀
프로세서 스케출링 정보프로세스의 우선순위, 스케줄링 큐의 포인터, 기타 스케줄 매개변수
계정 정보프로세서 사용 시간, 실제 사용 시간, 사용 상한 시간, 계정 번호, 작업이나 프로세스번호 등
입출력 상태 정보, 메모리 관리 정보특별한 입출력 요구 프로세스에 할당된 입출력장치.
열린 파일 리스트 등, 운영체제가 사용하는 메모리 시스템에 따른 상한 ㆍ하한 레지스터(경계 레지스터), 페이지 테이블이나 세그먼트 테이블 값등

문맥 교환(Context Switch)

한편, 운영체제는 현재 실행 중인 프로세스 외의 프로세스를 실행하기 위해 메모리에 적재된 PCB을 교체하는데 이를 문맥 교환이라고 합니다.

다음 그림은 문맥 교환의 예시입니다.

프로세스 문맥 교환 [그림02] 프로세스 문맥 교환


마무리하며

이번 글에서는 프로세스의 상태를 살펴보았습니다.

프로세스가 어떤 방식으로 동작하고 이를 바탕으로 다양한 프로세스들이 함께 동작할 수 있는지 확인했습니다!

이 글이 조금이나마 도움이 되셨으면 합니다.

감사합니다. 😀


참고 문헌

  • 구현회, 그림으로 배우는 구조와 원리 운영체제, 한빛아카데미, 2016
This post is licensed under CC BY 4.0 by the author.

[Web] robots, sitemap, RSS

[Data] [빅데이터를 지탱하는 기술] 정리하기 - 1-1 [배경] 빅데이터의 정착

Comments powered by Disqus.