[운영체제] 프로세스의 상태 변화와 상태 정보

hi·2022년 10월 12일
1

운영체제

목록 보기
6/9

운영체제는 프로세스의 실행을 제어함. 프로세스는 실행하면서 상태가 변하므로 운영체제는 프로세스 제어에 필요한 상태를 점검하고 프로세스를 제어함.


⭐ 프로세스의 상태 변화

프로세스의 상태는 실행/비실행 상태로 구분할 수 있음. 운영체제가 프로세스를 생성하면 비실행 상태로 초기화하고 실행을 기다림. 실행 중인 프로세스가 종료되거나 새로운 자원을 할당받고자 할때 또는 인터럽트가 발생하면 비실행 프로세스 중에서 선택한 프로세스를 싱행 상태로 바꾼다 (디스패치), 그리고 인터럽트된 프로세스는 비실행 상태가 됨.

프로세스 상태를 좀 더 세분화하자면 준비, 실행, 대기(보류)로 나뉜다. 그리고 이러한 프로세스의 상태 변화는 운영체제의 스케줄러 (ex 작업 스케줄러, 프로세스 스케줄러)에 의해 관리된다.


종류설명
작업 스케줄러스풀러가 디스크에 저장한 작업 중 실행할 작업을 선정하고 ready Queue에 삽입하여 다중 프로그래밍의 정도를 결정함
프로세스 스케줄러선정한 작업의 상태를 변화시키며 프로세스의 생성에서 종료까지 과정을 수행함


실행 상태의 프로세스는 다음과 같은 경우 상태가 변한다

➡️ 프로세스의 프로세서 할당 시간이 지나면 실행 상태의 프로세스는 준비 상태 (Ready Queue)로 전환됨 (Time-Slice)
➡️ 프로세스를 실행하다 IO 명령이 발생하는 경우 대기 상태 (Wait Queue) 로 전환됨

대기, 준비 상태의 프로세스는 다음과 같은 경우 실행 상태가 된다

➡️ 대기 원인이 제거되었을 때 Wait Queue -> Running
➡️ 디스패처가 준비 상태인 프로세스에 프로세서를 할당하였을 때 Ready Queue -> Running
디스패처는 스케줄러가 선택한 프로세스에 프로세서를 할당하는 모듈을 말함
프로세스의 상태별 변화에서 프로세스 스스로 하는 것은 대기 뿐이고 나머지는 외부 조건에 의해 발생함.




✔️ 디스패치에 의한 준비 (Ready) -> 실행 (Running)

Ready Queue 맨 앞에 있던 프로세스가 프로세서를 점유하는 것을 디스패치라고 함.

✔️ 타임아웃에 의한 실행 (Running) -> 준비 (Ready)

운영체제는 실행 상태의 프로세스가 프로세서를 독점하지 않도록 인터럽트 클록을 두어 특정 프로세스가 할당된 시간 동안만 프로세서를 점유하게 한다. 타임아웃에 의한 인터럽트가 발생하면 실행 상태의 프로세스는 Ready Queue의 가장 뒷단에 Ready Queue의 첫 번째 프로세스는 Running 상태가 된다.

✔️ Block에 의한 실행 (Running) -> 대기 (Wait)

할당된 시간 이전에 실행 상태의 프로세스에 IO 연산이 필요하거나 새로운 자원 요청 등이 발생하면 프로세스는 스스로 프로세서를 양도하고 대기 상태가 된다.

✔️ wakeup에 의한 대기 (Wait) -> 준비 (Ready)

프로세스는 입출력 작업이 끝나면 wake up으로 대기에서 준비 상태가 된다.




⭐ 프로세스 제어 블록 (Process Control Block, PCB)

운영체제가 프로세스를 제어하기 위해 필요한 프로세스 상태 정보는 PCB에 저장됨. 프로세스가 생성되면 메모리에 PCB가 생성되고, 프로세스가 종료되면 해당 PCB도 삭제됨. PCB의 구조는 아래와 같다.




⭐ 프로세스의 문맥 교환

인터럽트나 시스템 호출 등으로 실행 중인 프로세스의 제어를 다른 프로세스에 넘겨 실행 상태가 되도록 하는 것을 프로세스 문맥 교환이라고 하며, 프로세스 문맥 교환이 일어나면 프로세서 레지스터의 정보를 PCB에 저장한다.

0개의 댓글