운영체제에서 프로세스는 하나의 작업단위이다.
폰노이만 구조에서 프로그램이 실행된다는 것은 해당 코드가 메모리에 올라가서 실행이 된다는 것을 의미
프로그램은 저장장치에 저장되어있는 정적인 상태
프로세스는 실행을 위해 메모리에 올라온 동적인 상태
즉 프로그램을 실행하면 프로세스가 된다.
프로세스는 컴퓨터 시스템의 작업 단위로 태스크라고도 부른다.
우선 운영체제는 프로그램을 메모리의 적당한 위치로 가져온다.
프로세스 제어 블록(PCB)를 만든다
프로세스 관리하는데 필요한 다양한 정보가 들어있다.
어떤 프로그램이 프로세스가 되었다는 것은 운영체제로부터 프로세스 제어 블록을 받았다는 의미
프로세스가 종료된다는 것은 해당 프로세스 제어 블록이 폐기된다는 의미.
생성 create - 프로세스가 메모리에 올라와 실행 준비를 완료한 상태, pcb 가 생성된다.
준비 ready - 생성된 프로세스가 cpu를 얻을 때 까지 기다리는 상태
실행 running - 준비 상태에 있던 프로세스가 cpu를 얻어 실제 작업을 수행하는 상태
프로세스 컨텍스트 스위치가 일어난다.
만약 퀀텀의 시간동안 작업이 마무리 되지 않는다면 다시 대기 상태로 돌아간다.
완료 terminate - 실행 상태 프로세스가 주어진 시간동안 작업을 마치면 완료 상태로 진입
pcb 폐기
대기 blocking - 입출력을 요구한 프로세스가 입출력이 완료될 때 까지 기다리는 상태
작업의 효율성을 높이기 위해 입출력을 요청한 프로세스를 실행 상태에 두지 않고 대기 상태로 옮기는 것.
대기 상태로 옮겨지면 cpu 스케줄러는 준비상태에 있는 다른 프로세스 하나를 가져다가 실행상태로 만든다.
대기 상태의 프로세는 요청한 입출력이 완료되면 입출력 관리자로부터 인터럽트를 받는다.
대기 상테에서 입출력이 끝난 프로세스는 실행 상태로 돌아가지 않고 준비 상태로 돌아가 자기 차례를 기다린다.