다중 프로그래밍 환경에서 여러 프로그램을 메모리에 적재하여 병행 실행하는 방법을 통해 효율을 높일 수 있는데, 병행 실행하는 프로그램들은 컴퓨터 자원을 공유하므로 이를 제어하는 방법이 필요하여 프로세스가 등장하게 된다.
프로세스란
프로세스가 실행중인 프로그램이 되기 위해서는 점 유시간, 메모리, 파일 입출력장치 같은 자원이 필요하고, 프로세스를 생성하거나 실행할 때 이 자원을 할당한다. 또한 프로그램 카운터, 프로세서의 현재 활동(레지스터 내용)도 포함한다.
프로세스 구조
프로세스의 종류
프로세스의 상태는 크게 실행 상태와 비실행 상태로 구분
운영체제가 프로세스를 생성하면 비실행 상태로 초기화해서 실행을 대기
실행 중인 프로세스를 종료 혹은 인터럽트가 발생하면 비실행 프로세스 중에서 선택한 프로세스를 실행 상태로 바꾼다(디스패치). 이때 인터럽트된 프로세스는 비실행 상태가 된다.
실행 중인 프로세스는 새로운 자원을 할당받기 위해 프로세서를 기다리는 비실행 상태로 바뀌기도 한다.
프로세스의 상태 변화 과정
준비 => 실행
실행 => 준비
실행 => 대기(보류)
대기 => 준비