2019년 4월 25일
프로세스 상태 전이
I. 프로세스 상태 전이도
가. 프로세스 상태 전이도
- 멀티 프로세스 시스템 사용 시 프로세스 생성 ~ 종료까지 성능 최적화를 위한 프로세스 제어 기법
나. 프로세스 상태
상태 | 설명 |
---|---|
생성 (Created) | – 프로세스 최초 상태로, 주기억장치 적재되지 않고 보조 기억 장치에 저장되어 있는 실행 파일 상태 |
준비 (Ready) | – 프로세스가 CPU를 사용하여 실행 준비 된 상태 – 프로세스 상태 리스트 중 준비 리스트에 들어감 – 프로세스가 우선순위에 의해 정렬됨 |
실행 (Running) | – 프로세스가 CPU를 차지하여 실행중인 상태 – 명령어들이 실행되고 있는 상태 |
대기 (Waiting) | – 기다림(waiting) 또는 블록(block) 상태 – I/O 동작의 완료 등 사건 발생을 기다리는 상태 – 프로세스 상태 리스트 중 블록 리스트에 들어감 |
종료(Exit) | 프로세스 실행이 완료되어 자원을 반납한 상태 |
II. 프로세스 상태 전이
상태 전이 | 전이 과정 | 설명 |
---|---|---|
Dispatch | 준비→실행 | – 프로세스 생성 상태에서 프로세서만 할당 받으면 실행 상태로 전이 과정 – 준비 프로세스 중 하나가 CPU 할당 받아 실행 상태로 전이 – 스케줄링 알고리즘에 의해 수행 |
Timeout | 실행→준비 | – 일정 시간이 지나면 스케줄러에 의해 PCB에 저장, 프로세서 반납 후 준비 상태로 전이 |
Block | 실행→슬립 | – I/O 등의 자원 요청 후 즉시 할당 받을 수 없어, 할당 받을 때까지 기다리고 있는 상태로 전이 – I/O 처리는 CPU가 아닌 I/O 프로세스가 담당하기 때문에 발생 |
Wake up (조건만족) | 슬립→준비 | – 필요한 자원이 할당되면 프로세스는 준비 상태로 전이 – 장치 관리자로부터 신호 또는 페이지 인터럽트 처리 의해 발생 – 준비 리스트의 맨 뒤에 붙음 |
Swap-out (suspend) | 준비→지연 대기→지연 | – 프로세스 생성 후 메모리 부족, 또는 준비 상태의 프로세스가 기억장치를 잃은 경우 커널에 의해 메모리를 회수 당하고 중단 상태인 디스크로 Swap-out 됨 |
Swap-in (resume) | 지연→준비 지연→대기 | – 기억장치가 다시 할당되는 경우, 지연 준비 상태로 전이, 디스크에서 다시 활동 상태인 메모리 영역으로 Swap-in됨 |
Suspend / Resume | – 지연대기상태(suspendedasleep)도 지연준비상태(suspendedready)처럼 suspend/resume 되며 I/O 작업 요청이 완료되면 Wake up에 의해 지연준비상태(suspended ready)로 전이됨 |
III. 프로세스 지연상태 발생원인
구분 | 발생원인 | 설명 |
---|---|---|
시스템 용량확보 측면 | 자원 절감 | – 시스템 부하 시 리소스 절감하기 위해 프로세스 지연 상태 발생 |
메모리 확보 | – 커널에 의해 메모리 회수 후 중단 상태로 Swap-out | |
대기 지연 | – I/O, 인터럽트 발생 후 대기 시간 증가 시 중단 상태로 Swap-out | |
시스템 성능확보 측면 | CPU 스케줄링 | – CPU 스케줄링 알고리즘에 따라 타 프로세스 할당 위해 Swap-out |
성능 회복 목적 | – 실행 중 프로그램이 많거나 커서 시스템 성능 하락 경우 지연 발생 | |
시스템 안정성 측면 | 프로세스 의심 | – 프로세스의 특정 부분 의심 시 확인 목적으로 지연 발생 |
시스템 장애 | – 시스템 장애 발생 시 장애 제거 목적으로 중단 |
- 프로세스 상태 전이 절차는 멀티 프로세스 시스템의 용량, 성능, 안정성위해 진행되며 최적화방안 존재
IV. 멀티 프로세스 시스템 효율화 방안
구분 | 방안 | 설명 |
---|---|---|
H/W 측면 | 하이퍼스레딩 기술 적용 | – 여러 프로세스가 동시에 처리 되도록 파이프라인 효율화 |
NUMA 아키텍처 | – 공유 캐시 메모리를 이용하여 다중 프로세스 처리 시 성능 향상 | |
S/W 측면 | Multi-Thread 사용 | – 효율적 자원 공유 가능 – 태스크가 분리되어 간결한 코드 |
병행 처리 기법 고도화 | – 동시에 여러 프로세스가 병행 처리되도록 프로그램 개발 |
- Multi-Thread는 복잡성 및 동기화 문제가 발생하므로 임계영역, 세마포어 등 동기화 기법 적절 활용 필요
- 멀티 프로세스 시스템은 근본적으로 Context Switching으로 인해 성능저하가 발생하므로 근본 원인 차단이 중요
4 Comments
친절한 설명 감사합니다. 과제 만드느라 공부하는 중인데 많은 도움이 되었습니다.!!