프로세스
- 실행 중인 프로그램. 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 프로그램은 프로세스가 됨
프로세스 제어 블록(PCB)
- 프로세스와 관련된 정보를 저장하는 자료 구조
운영체제는 프로세스의 실행 순서를 관리하고 프로세스에 CPU를 비롯한 자원을 배분하는데, 이 때 PCB를 이용한다.
프로세스ID(PID), 레지스터 값, 프로세스 상태, CPU 스케줄링 정보, 메모리 관리 정보, 사용한 파일과 입출력장치 목록 등을 가지고 있음
문맥 교환
- 프로세스 간 실행을 전환하는 것
기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB에서 복구하여 새로운 프로세스를 실행하는 것
문맥
- 하나의 프로세스 수행을 재개하기 이해 기억해야 할 정보
정적 할당 영역
- 코드 영역 - 실행할 수 있는 코드, 기계어로 이뤄진 명령어 저장. 읽기 전용
- 데이터 영역 - 프로그램이 실행되는 동안 유지할 데이터 저장(전역변수)
동적 할당 영역
- 힙 영역 - 프로그래머가 직접 할당할 수 있는 저장공간(반환하지 않으면 메모리 누수 발생 가능성 있음)
- 스택 영역 - 데이터를 일시적으로 저장하는 공간(매개변수, 지역변수)
1) 생성 상태
new - 프로세스를 생성 중인 상태
2) 준비 상태
ready - CPU를 할당받아 실행 가능한 상태이지만, 차례가 되지 않아 기다리고 있는 상태 (디스패치
- 준비 상태에서 실행 상태로 전환되는 것)
3) 실행 상태
running - CPU를 할당받아 실행 중인 상태
(할당된 시간을 모두 사용하면 준비상태
가 됨. 실행 도중 입출력 장치의 작업을 기다린다면 대기 상태
가 됨)
4) 대기 상태
blocked - 입출력장치의 작업을 기다리는 상태
5) 종료 상태
terminated - 프로세스가 종료된 상태
fork
- 자신의 프로세스의 복사본을 자식 프로세스로 생성하는 시스템 호출
exec
- 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출
프로세스를 구성하는 실행의 흐름 단위
프로세스의 스레드들은 실행에 필요한 최소한의 정보(프로그램 카운터, 스택, 레지스터)는 개별적으로 유지한 채, 프로세스의 자원을 공유하며 실행됨