프로세스

김종헌·2020년 12월 1일
0

운영체제

목록 보기
1/1

개념

프로세스

프로세스란 실행 중인 프로그램을 뜻하며 다음과 같이 여러 섹션으로 구분된 메모리 구조를 가지고 있다.

  • Text : 실행 코드
  • Data : 전역 변수
  • Heap : 동적으로 할당되는 메모리
  • Stack : 함수 호출 시 사용되는 매개변수, 복귀 주소, 지역 변수 등의 임시 데이터

이때 Text와 Data는 고정 크기를 가지며 Heap과 Stack은 프로그램 실행 중 동적으로 크기가 변할 수 있다.

프로세스 상태

프로세스는 다음의 상태들 중 하나에 속하게 된다.

  • New : 프로세스가 생성 중이다.
  • Ready : 프로세스가 준비 큐에서 실행되길 기다리는 중이다.
  • Running : 프로세스의 명령어들이 실행 중이다.
  • Waiting : 프로세스가 대기 큐에서 특정 이벤트 발생을 기다리는 중이다.
  • Terminated : 프로세스가 종료되었다.

PCB

PCB란 프로세스 제어 블록(Process Control Block)을 뜻하며 프로세스와 관련된 정보들을 저장하고 있다.(프로세스 상태, Program Counter, CPU Registers 등)

프로세스 스케줄링

프로세스를 실행하기 위해서는 CPU 코어가 필요하다. 하지만 CPU 코어는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 프로세스 스케줄러가 실행가능한 여러 프로세스 중 하나를 선택하여 실행한다.

스케줄링 큐

  • 준비 큐 : CPU 코어에서 실행되길 기다리는 프로세스 집합
  • 대기 큐 : I/O와 같은 특정 이벤트를 기다리는 프로세스 집합

프로세스가 시스템에 들어가면 먼저 준비 큐에 들어간 후 프로세스 스케줄러에 의해 선택되어 CPU 코어에서 실행된다. 이후 특별한 이벤트를 기다리는 경우 대기 큐에 들어가게 된다.

문맥 교환

현재 실행중인 프로세스를 멈추고 다른 프로세스를 실행하는 경우 정지된 프로세스의 상태를 저장한 후 재실행 하기 위해 복구해야 한다. 이때 저장하는 상태를 문맥이라 하며 이는 프로세스의 PCB에 표현되기 때문에 이 작업을 문맥 교환(context switching)이라 한다.

profile
junior development

0개의 댓글