1. 프로세스 개요

사용자가 볼 수 있는 공간에서 실행되는 프로세스를 포그라운드 프로세스 보지 못하는 뒤편에서 실행되는 프로세스를 백그라운드 프로세스 라고 한다.

백그라운드 프로세스를 유닉스 체계의 운영체제에서는 데몬이라고 하고 윈도우 운영체제에서는 서비스라고 부른다.

프로세스 제어 블록 (PCB)

커널 영역에서 프로세스 제어 블록이 생성된다. 프로세스 제어 블록은 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 배분한다.

PCB에 담기는 정보

  1. 프로세스 아이디(pid)
    1. 프로세스를 식별하기 위해 부여하는 고유한 번호
  2. 레지스터 값
    1. 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값이 담김
  3. 프로세스 상태
  4. CPU 스케줄링 정보
    1. 프로세스가 언제 어떤 순서로 CPU를 할당받을지 기록
  5. 메모리 관리 정보
    1. 프로세스마다 저장된 위치가 다르기 때문에 주소값 저장
  6. 사용한 파일과 입출력장치 목록

문맥 교환

기존 프로세스의 문맥을 PCB에 백업하고 새로운 프로세스를 실행하기 위해 문맥을 PCB로 부터 복구하여 새로운 프로세스를 실행하는 것을 문맥교환이라고 한다.

프로세스의 메모리 영역 4가지

  1. 코드 영역
    1. 실행할수 있는 기계어로 이루어진 명령어로 저장, 읽기 전용
  2. 데이터 영역
    1. 잠깐 썻다가 없앨 데이터가 아닌 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간, 정적할당 영역이다. 전역변수가 대표
  3. 힙 영역
    1. 프로그래머가 직접 할당할 수 있는 저장 공간
    2. 쓰고 메모리 공간을 반환하지 않으면 메모리 누수가 난다.
  4. 스택 영역
    1. 데이터를 일시적으로 저장하는 공간
    2. 동적할당 영역이다.

2. 프로세스 상태와 계층 구조