10-1. 프로세스 개요
프로세스
- 프로세스(process) : 실행 중인 프로그램
- 포그라운드 프로세스(foreground process)
- 사용자가 볼 수 있는 공간에서 실행되는 프로세스
- 백그라운드 프로세스(background process)
- 사용자가 볼 수 없는 공간에서 실행되는 프로세스
- 사용자와 상호작용하는 프로세스도 존재
- 유닉스 : 데몬(daemon) / 윈도우 : 서비스(service)
프로세스 실행 과정
- 모든 프로세스가 CPU를 동시에 활용할 수 없음
- 프로세스마다 CPU를 이용할 수 있는 시간이 정해져 있음
- 시간이 지나면 타이머 인터럽트가 발생하면서 다음 순서의 프로세스 실행
- 이러한 프로세스의 실행 순서, 자원 배분을 관리하기 위해 운영체제가 이용하는 것이 ‘PCB’
- 하나의 프로세스에서 다른 프로세스로 넘어갈 때 기억해야 하는 정보가 ‘문맥’, 문맥을 교환하는 과정이 ‘문맥 교환’, 즉, 프로세스 전환
프로세스 제어 블록
PCB ; Process Control Block
프로세스의 정보를 저장하는 자료 구조
- PCB는 프로세스 생성 시, 커널 영역에 생성되고, 프로세스 실행이 끝나면 폐기됨
- PCB에 저장되는 정보
- 프로세스 ID (= PID)
- 레지스터 값
- 이전까지 사용한 레지스터의 중간값(프로그램 카운터 등) 저장
- 이전 작업을 이어서 실행할 때 사용
- 프로세스 상태
- 현재 프로세스의 상태 저장
- 입출력 장치 사용 대기 상태? CPU 사용 대기 상태? CPU 이용 중인 상태?
- CPU 스케줄링 정보
- 메모리 관리 정보
- 프로세스의 주소 정보, 페이지 테이블 정보 저장
- 베이스 레지스터, 한계 레지스터 등
- 사용한 파일과 입출력장치 목록 저장
문맥 교환
- 문맥(context) : 프로세스 수행 재개를 위해 기억해야 할 정보
