본문 바로가기

Computer Science/Operating System

[운영체제] 프로세스 관리 :: 프로세스 1

오늘날의 컴퓨터 시스템은 메모리에 다수의 프로그램이 적재되어 병행 실행되는 형태를 가진다.

다양한 프로그램들은 견고하게 제어하고, 구획화될 필요성을 가지게 되어 프로세스란 개념이 나오게 되었다.

 

쉽게말해 프로세스란, 메모리에 적재되어 CPU (프로세서)에 의해 실행 중인 프로그램을 이야기한다.

프로그램이란, 디스크 내에 실행 가능한 파일을 의미한다.

 

 

프로세스의 구조

 

메모리 상의 프로세스 (간략)

간략하게 표시한 프로세스 제어 블록 이미지 (PCB - Process Control Block)

 

Text 

* 프로그램 소스코드의 정보가 들어있다. 

 

Data

* 전역 변수 등에 대한 정보가 들어있다.

 

Heap

* 동적으로 할당된 메모리에 대한 정보가 들어있다.

 

Stack

* 함수의 매개변수, 복귀 주소, 로컬 변수 등에 대한 정보를 담고 있다.

 

기타

* 그림에는 표시되어 있지 않지만 아래와 같은 것들을 담고 있다.

 

프로그램 카운터 (PC - Program Counter) 

* 다음에 실행할 소스코드의 위치를 담고 있다.

 

레지스터 정보

* CPU 내부의 레지스터에 들어있는 값이 들어있다. 문맥 교환 (Context Switching) 이 일어날 때 필요한 정보.

 

 

프로세스의 상태 ( Process State )

 

프로세스는 실행 중에 그 상태가 변할 수 있다. 프로세스는 아래와 같은 상태 중 하나에 있게 된다.

 

New

* 프로세스가 생성중이다.

 

Running

* 프로세스의 명령어들이 실행되고 있다. ( 현재 실행 중이다.)

 

Waiting

* 프로세스가 어떤 사건 (입출력 완료 혹은 신호 등의 수신)을 기다리고 있다.

 

Ready

* 프로세스가 CPU에 할당되길 기다린다.

 

Terminated 

* 프로세스의 실행이 종료되었다.

 

프로세스의 상태 다이어그램

 

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

 

프로세스 제어 블록 (PCB) 간략 이미지

프로세스 상태 (Process State)

* 위에 나왔던 프로세스 상태에 대한 정보 (new, ready, running, waiting.. )등이 담긴다.

 

프로세스 아이디 (PID - Process Number)

* 운영체제가 이 프로세스를 식별할 id 로 정수형 숫자로 되어있다.

 

프로그램 카운터 (PC - Program Counter)

* 이 프로세스가 다음에 실행할 명령어의 주소를 담고 있다.

 

CPU 레지스터들 (Registers)

* CPU 내부엔 구조에 따라 다양한 수, 타입의 레지스터들이 존재하는, 누산기(accumlator), 인덱스 레지스터, 범용 레지스터 등이 있다.

* 프로세스가 잠시 멈췄다 다시 실행할 때도 문제가 없어야 하므로 CPU 내부 레지스터의 정보를 들고 있게 된다.

 

메모리 관리 정보 (memory limits)

* 운영체제에 의해 사용되는 메모리에 따라 기준 레지스터와 한계 레지스터의 값, 페이지 테이블 또는 세그먼트 테이블 같은 정보를 포함한다.

 

입출력 정보 (list of open files)

* 이 정보는 프로세스에 할당된 입출력 장치들과, 열린 파일의 목록을 포함.

 

기타 

CPU 스케줄링 정보

* 프로세스 우선순위, 스케줄링 큐에 대한 포인터와 매개변수등을 포함.

 

회계 (accounting) 정보

* CPU 사용시간, 경과된 실시간, 시간 제한, 계정번호, 프로세스 번호등을 포함하는 정보.