본문 바로가기
운영체제

[OS] 프로세스, 프로세스 문맥교환, PCB - 운영체제와 정보기술의 원리 5장(1/2)

by BeforB 2021. 12. 6.
728x90

 

 

 

 

프로세스(Process)란?

실행 중인 프로그램.

디스크에 실행파일 형태로 존재하던 프로그램이 메모리에 올라가서 실행되기 시작할 때 프로세스가 됨.

 

 

 

 

프로세스의 상태

1) 생성(New)

프로세스가 시작되어 그 프로세스를 위한 각종 자료구조는 생성되었지만 아직 메모리 획득을 승인받지 못한 상태

 

 

2) 실행(Running)

프로세스가 CPU를 보유하고 기계어 명령을 실행하고 있는 상태.

일반적으로 컴퓨터 시스템 내에 CPU는 하나 뿐이므로 여러 프로세스가 동시에 수행되더라도 실제 실행 상태의 프로세스는 매 시점 하나.

 

 

3) 준비(Ready)

프로세스가 CPU만 보유하면 당장이라도 명령을 실행할 수 있지만 CPU를 보유하고 있지 않은 상태.

즉, CPU 할당을 대기하는 상태

 

 

4) 봉쇄(Blocked, Wait, Sleep)

CPU를 할당받더라도 당장 명령을 실행할 수 없는 상태.

ex) 프로세스가 요청한 입출력 작업이 진행 중인 경우

 

 

5) 완료(Terminated)

프로세스가 종료되었으나 OS가 프로세스와 관련된 자료구조를 완전히 정리하지 못한 상태

 

 

 

 

프로세스의 문맥(Proces Context)

프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위한 정보

 

일반적으로 시분할 시스템 환경에서 여러 프로세스가 타이머 인터럽트에 의해 짧은 시간 동안 돌아가면서 CPU를 할당 받아 진행된다.

CPU를 할당받기 전 이전에 어떤 명령을 수행했는지 정확한 상태가 필요하다.

 

프로세스 문맥에 포함되는 정보

1) 프로세스의 주소 공간(코드, 데이터, 스택 상태) 등 레지스터에 저장된 값

2) 시스템 콜 등을 통해 커널에서 수행한 일의 상태

3) 해당 프로세스에 관해 커널이 관리하고 있는 각종 정보

 

프로세스 문맥 분류

1) 하드웨어 문맥 " CPU 수행 상태(PC 값, 각종 레지스터 값)

2) 프로세스 주소 공간

3) 커널 상의 문맥

 

 

프로세스 문맥교환(Context Switch)

실행시킬 프로세스를 변경하기 위해 원래 수행 중이던 프로세스의 문맥을 저장하고 새로운 프로세스의 문맥을 세팅하는 과정.

 

문맥교환에 소요되는 시간은 시스템에게 유용한 작업이 아니기 때문에 시스템 입장에서 일종의 오버헤드이다.

CPU 할당시간이 매우 작을 경우 프로세스 간 문맥교환이 빈번하게 일어난다면 오버헤드가 커지게 되고, 반대로 할당시간이 매우 클 경우 시분할 시스템의 의미가 퇴색하게 되므로 적절한 CPU 할당 시간을 정하는 것이 매우 중요하다.

 

 

프로세스 문맥교환 과정/순서

프로세스 A가 CPU 제어권을 가지고 실행상태

→ 타이머 인터럽트가 발생하여 CPU 제어권이 OS로 이양

→ OS가 타이머 인터럽트 처리루틴으로 이동하여 수행 중이던 프로세스 A의 문맥을 저장

→ 준비 상태의 프로세스 중 새롭게 CPU 제어권을 부여할 프로세스 B 선택

→ 기존에 수행 중이던 프로세스 A준비상태로 전환됨

→ 새롭게 CPU를 할당받은 프로세스 B실행상태로 전환됨

 

 

CPU 디스패치(Dispatch)란?

프로세스 문맥교환 과정 중 준비 상태였던 프로세스 B가 CPU 제어권을 넘겨받는 과정

 

 

 

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

운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의 자료구조

 

 

PCB의 구성

- 프로세스 식별자(Process ID)

- 프로세스 상태 : CPU 할당 여부를 결정하기 위한 정보(생성/실행/준비/대기/완료 상태)

- 프로그램 카운터 값 : 다음에 수행할 명령의 위치

- CPU 레지스터 값 : CPU 연산을 위해 현 시점에 레지스터에 어떤 값을 저장하고 있는지

- CPU 스케줄링 정보 : 프로세스 스케줄링에 필요한 정보(우선순위, 최종 실행 시각, CPU 점유 시간 등)

- 메모리 관리 정보 : 메모리 할당을 위해 필요한 정보(해당 프로세스의 주소 공간)

- 자원 사용 정보

- 입출력 상태 정보 : 프로세스에 할당된 입출력 장치 정보, 열린 파일 목록 등

 

 

 

 

 

 

 

 

 

 

 

728x90

댓글