프로세스에는 기본적으로 다섯 가지 상태가 있다. 이것을 활성 상태(ACTIVE STATUS)라고 한다.
1. 생성 상태(create status)
설명 | 작업 |
프로그램을 메모리에 가져와 실행 준비가 완료된 상태이다. | 메모리 할당, 프로세스 제어 블록 생성 |
2. 준비 상태(ready status)
설명 | 작업 |
실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태이다. 실행될 프로세스를 CPU 스케줄러가 선택한다. | DISPATCH(PID): 준비상태의 프로세스를 실행상태의 프로세스로 만들어준다. |
3. 실행 상태(running status)
설명 | 작업 |
선택된 프로세스가 타임 슬라이스를 얻어 CPU를 사용하는 상태이다. 프로세스 사이의 문맥 교환이 일어난다. | TIMEOUT(PID): 실행상태의 프로세스를 준비상태로 만든다. EXIT(PID): 실행상태의 프로세스를 완료상태로 만든다. BLOCK(PID): 실행상태의 프로세스를 대기상태로 만든다. |
4. 대기 상태(blocking status)
설명 | 작업 |
실행 상태의 프로세스가 입출력을 요청하면 입출력이 완료될 때 까지 기다리는 상태이다. 입출력이 완료되면 준비상태로 간다. | WAKEUP(PID): 대기상태의 프로세스를 준비상태로 만든다. |
5. 완료 상태(terminate status)
설명 | 작업 |
프로세스가 종료된 상태이다. 사용하던 모든 데이터가 정리되고 정상 종료인 EXIT과 비정상 종료인 ABORT가 있다. | 메모리 삭제, 프로세스 제어 블록 삭제 |
5가지 상태를 제외하고 조금 특별한 상태가 있다. 보류 상태라고 하는데 보류 상태는 일시 정지 상태라고도 불린다.
다음은 프로세스가 보류상태가 되는 이유이다.
1. 메모리가 꽉 차서 일부 프로세스를 메모리 밖으로 내보낼 때
2. 프로그램에 오류가 있어서 실행을 미루어야 할 때
3. 바이러스와 같이 악의적인 공격을 하는 프로세스라고 판단될 때
4. 매우 긴 주기로 반복되는 프로세스라 메모리 밖으로 쫓아내도 큰 문제가 없을 때
5. 입출력을 기다리는 프로세스의 입출력이 계속 지연될 때
보류 상태에 들어간 프로세스는 메모리 밖으로 쫓겨나 스왑 영역(SWAP AREA)에 보관된다. 스왑 영역은 메모리에서 쫓겨난 데이터가 임시로 보관되는 곳이다.
보류 상태는 대기 상태에서 옮겨진 보류대기 상태와 준비상태에서 옮겨진 보류준비 상태로 구분된다.
각 상태에서 재시작하면 원래의 활성 상태로 들어간다. 보류 대기 상태에서 입출력이 완료되면 활성 상태가 아닌 보류 준비 상태로 옮겨진다.
'COMPUTER SCIENCE > 운영체제' 카테고리의 다른 글
스레드 (0) | 2023.12.29 |
---|---|
프로세스 제어 블록과 문맥 교환 (1) | 2023.12.23 |