Job은 실행할 프로그램 + 데이터로 아직 실행 전으로, 보통 보조저장장치 안에 둔다
Process는 실행하려고 커널에 등록시킨 작업으로, 보조저장장치에서 메모리로 가져온다.
실행 중에 능동적으로 PCB등 각종 자원을 요청/할당/반납한다.
여기서 자원은 CPU, 메모리, 보조기억장치, 입력장치등 HW자원이나
메세지, signal 같은 SW자원이 있다.
PCB는 Process Control Block으로
OS가 프로세스 관리에 필요한 정보를 가지고 있다.
이 그림은 프로세스가 시스템에 등록되면 거쳐가는 상태들이다.
이 상태들을 나눠서 살펴보자
외부에서 발생한 예상하지못한 이벤트로
입력이 들어오거나 CPU 클럭, 콘솔창 등의 인터럽트가 있다.
인터럽트가 발생하면 프로세스를 잠깐 멈추고 커널이 확인하고
커널이 인터럽트를 처리한다 인터럽트 처리의 과정은
어디서 인터럽트가 일어났고, 왜 일어났는지 확인하고
인터럽트를 처리할지 무시할지를 결정한다.
이 과정을 자원 내부에서 살펴보면
인터럽트가 일어나면 프로세스를 중단시키고
어디까지 작업을 했는지 흐름을 저장하는 context saving을 PCB에 저장한다.
이후 interrupt handler가 인터럽트 장소와 원인을 찾고
인터럽트 서비스를 제공할지 무시할지 결정한다.
이후 인터럽트 서비스가 프로세서에서 돌아가고
인터럽트 서비스가 끝나면 저장해두었던 context saving을 불러와 다시 프로세스를 진행한다.
context를 saving하고 restoring하는 것을
context switching이라고 부른다
이 context switching은 OS성능에 큰 영향을 주기 때문에 불필요한 경우 최대한 줄이는 것이 좋다.