프로세스 관리는 운영체제의 핵심 서비스이다. 운영체제가 관리하는 프로세스가 무엇인지 알아보고, 프로세스가 실행되는 과정들을 살펴보자!
프로세스 직접 확인하기
포그라운드 프로세스(forground process)
- 사용자가 볼 수 있는 공간에서 실행되는 프로세스를 말한다.
백그라운드 프로세스(background process)
- 사용자가 볼 수 없는 공간에서 실행되는 프로세스이다.
- 유닉스 체계의 운영체제에서 백그라운드 프로세스를 데몬(demon)이라고 한다.
- 윈도우 운영체제에서 백그라운드 프로세스를 서비스(service)라고 한다.

💡 윈도우 작업 관리자의 [서비스] 탭에서 서비스 목록을 확인할 수 있다.
프로세스 제어 블럭(PCB. process control block)
- 운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 배분한다. 이를 위해 운영체제는 프로세스 제어 블록(PCB)를 이용한다.
- 프로세스와 관련된 정보를 저장하는 자료 구조이다.
- 프로세스를 식별하기 위한 정보들이 포함된다.
타이머 인터럽트는 클럭 신호를 발생시키는 장치에 의해 주기적으로 발생하는 하드웨어 인터럽트이다. 타임아웃 인터럽트라고도 부른다.
프로세스 ID(PID. process ID)
- 프로세스를 식별하기 위해 부여하는 고유한 번호를 말한다.
레지스터 값
- 자신의 실행상태가 돌아왔을 때 이전에 사용했던 레지스터 값을 복원하는데 필요한 값이 담긴다.
프로세스 상태
- 현재 프로세스의 상태정보가 PCB에 저장된다.
CPU 스케줄링 정보
- 프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보를 PCB에 기록한다.
메모리 관리 정보
- 프로세스마다 메모리에 저장된 위치가 다르므로 PCB에는 정보가 있어야한다. PCB에는 베이스 레지스터, 한게 레지스터 값과 같은 정보들이 담긴다.
- 페이지 테이블 정보도 PCB에 담긴다.
사용한 파일과 입출력장치 목록
- 프로세스가 실행 과정에서 특정 입출력장치나 파일을 사용할시 PCB에 기록된다.
문맥 교환

-
기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것을 말한다.
-
문맥이란? 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보.
문맥 교환이 매우 빠르게 이루어져 사람의 눈에는 여러 프로세스들이 동시에 실행되는 것 처럼 보임.
💡 문맥 교환이 너무 자주 일어나면 오버헤드가 발생할 수 있기 때문에 문맥 교환이 자주 일어난다고 해서 반드시 좋은 것은 아니다.
- 오버헤드(overhead)란? 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 혹은 메모리.
프로세스의 메모리 영역

코드 영역(code segment)
- 실행할 수 있는 코드, 즉 기계어로 이루어진 명령어가 저장된다.
- 쓰기 금지공간. Read-only 공간이라고 한다.
- 텍스트 영역(text segment)라고도 부른다.
데이터 영역(data segment)
- 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간을 뜻한다.
- 전역변수 등이 저장된다.
힙 영역(heap segment)
- 프로그래머가 직접 할당할 수 있는 저장 공간이다.
- 직접 할당할 시에 메모리 누수를 주의해야한다.
- 메모리 누수란? 할당한 공간이 메모리 내에 남아 메모리 낭비를 초래하는 것.
스택 영역(stack segment)
- 데이터를 일시적으로 저장하는 공간.
- 지역 변수 등이 저장된다.
- 일시적으로 저장될 데이터는 스택 영역에 PUSH로 저장한다.
- 필요하지 않은 데이터는 POP으로 삭제.
💡 코드 영역과 데이터 영역은 크기가 고정된 영역 = 정적 할당 영역
💡 힙 영역과 스택 영역은 프로세스 실행 과정에서 크기가 변할 수 있는 영역
= 동적 할당 영역
