프로세스 관리와 문맥 교환
프로세스를 제어하기 위한 PCB와 문맥교환
프로세스 관리와 문맥 교환
핵심 포인트 정리
- 프로세스: 실행 중인 프로그램.
- 프로세스 제어 블록(PCB): 프로세스를 관리하기 위한 자료 구조.
- 문맥 교환: 프로세스 간의 실행 전환.
- 프로세스의 메모리 영역: 코드, 데이터, 힙, 스택 영역으로 구성.
프로세스와 프로세스 관리
프로세스(process)는 실행 중인 프로그램을 의미합니다.
프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리에 불과하지만, 보조기억장치에 저장된 프로그램이 메모리에 적재되고 실행되는 순간 프로세스가 됩니다.
운영체제는 프로세스를 프로세스 제어 블록(PCB, Process Control Block)을 통해 관리합니다.
PCB는 특정 프로세스를 식별하기 위한 다양한 정보를 포함하는 자료 구조로, 프로세스 ID, 레지스터 값, 프로세스 상태, CPU 스케줄링 정보, 메모리 관리 정보, 사용한 파일과 입출력장치 목록 등이 담깁니다.
PCB는 커널 영역에 생성되며, 프로세스가 종료되면 폐기됩니다.
프로세스의 종류
- 포그라운드 프로세스(foreground process): 사용자가 보는 앞에서 실행되는 프로세스
- 백그라운드 프로세스(background process): 사용자가 보지 못하는 뒤편에서 실행되는 프로세스.
유닉스 체계에서는 데몬(daemon), 윈도우 운영체제에서는 서비스(service)라고 불립니다.
문맥 교환
문맥 교환(context switching)은 하나의 프로세스에서 다른 프로세스로 실행 순서가 넘어갈 때 발생합니다.
문맥은 프로세스의 실행 상태를 유지하기 위한 중간 정보로, PCB에 저장됩니다.
문맥 교환 과정에서 운영체제는 현재 실행 중인 프로세스의 문맥을 PCB에 백업하고, 다음 실행할 프로세스의 문맥을 복구합니다.
프로세스의 메모리 영역
프로세스는 사용자 영역에 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장됩니다.
- 코드 영역(code segment): 실행할 수 있는 코드, 즉 기계어로 이루어진 명령어가 저장되는 영역. 읽기 전용입니다.
- 데이터 영역(data segment): 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간. 전역 변수 등이 포함됩니다.
- 힙 영역(heap segment): 프로그래머가 직접 할당할 수 있는 저장 공간. 메모리 누수(memory leak)를 방지하기 위해 할당된 공간은 반환해야 합니다.
- 스택 영역(stack segment): 일시적으로 데이터를 저장하는 공간. 함수의 매개 변수, 지역 변수 등이 저장됩니다.
힙 영역과 스택 영역은 실시간으로 크기가 변할 수 있기 때문에 동적 할당 영역이라고 불립니다.
확인 문제
- 프로세스와 관련한 설명 중 옳지 않은 것을 고르세요.
- 실행되는 프로그램을 프로세스라고 합니다.
- 프로세스가 생성되면 커널 영역에 PCB가 생성됩니다.
- 프로세스들은 문맥 교환을 통해 번갈아가며 수행됩니다.
- 프로세스는 반드시 사용자와 상호작용할 수 있어야 합니다.
- 문맥 교환과 관련한 설명 중 옳지 않은 것을 고르세요.
- 문맥 교환은 자주 수행될수록 좋습니다.
- 문맥 교환 과정에서 직전에 수행되던 프로세스의 문맥이 백업됩니다.
- 문맥 교환 과정에서 다음에 수행할 프로세스의 문맥이 복구됩니다.
- 문맥은 PCB에 기록됩니다.
This post is licensed under CC BY 4.0 by the author.