프로세스의 문맥: 프로세스를 설명하기 위해 중요한 개념, 특정 시점을 놓고 봤을 때 이 프로세스가 어디까지 실행을 했는가에 대한 정보(현재 상태를 규명하는 정보)
Running: 프로세스가 CPU를 할당받아 진행중인 상태
Ready: 메모리 등 필요한 요소를 모두 갖추고 CPU를 할당받기 위해 대기중인 상태(CPU가 작업을 진행하려면 디스크에는 접근을 못 하니까 메모리에 올라와 있어야 함)
Blocked(wait, sleep): CPU를 주어도 당장 instruction을 실행할 수 없는 상태, I/O 등 프로세스 자신이 요청한 작업이 완료되는 것을 기다리는 상태(ex 메모리에 필요한 코드 영역이 올라와 있지 않아 읽어와야 하거나 디스크에서 파일 읽어오기)
New: 프로세스 생성중인 상태
Terminated: 프로세스 수행이 끝난 상태, 종료와는 구분(종료 전 처리할 작업이 있을 수 있음)
CPU는 Running 상태의 프로세스 Instruction 실행, timer interrupt가 들어오면 작업 멈추고 대기 큐로 이동, 다음 프로세스 수행
Running 중 I/O 등의 작업이 필요할 경우 해당 I/O device의 대기 큐에 보냄(Running ⇒ Blocked)
⇒ device의 controller가 순서대로 작업 수행 후 완료되면 interrupt를 통해 CPU에게 I/O작업이 종료됐음을 알림
⇒ interrupt에 의해 CPU 제어권이 O.S의 커널에 넘어감
⇒ O.S는 작업 완료 후 도출된 데이터를 메모리 영역의 Process에 넘기거나, Process의 상태를 blocked에서 ready로 바꾸는 등의 작업 실행
이러한 일련의 작업은 HW적 처리 뿐만 아니라 SW적 처리를 위해 blocked 상태로 넘어갈 수도 있음
프로세스의 대기 큐들은 위 그림과 같이 커널의 Data 영역에 자료구조를 만들어 놓고 운영
장기 스케줄러(job scheduler): 프로세스가 생성 될 때 메모리 여유 공간을 확인하여 메모리에 올릴 것인지 판단, degree of Multiprograming(메모리에 올라갈 프로세스의 수)를 제어, 요즘은 사용 X, 바로 메모리에 올림
단기 스케줄러(cpu scheduler):, 어떤 프로세스에게 CPU를 할당할지 결정, CPU의 속도만큼 충분히 빨라야 함
중기 스케줄러(swapper): 메모리에 여유 공간이 없으면 프로세스의 메모리를 통째로 빼앗아 DISK로 옮김, degree of multiprogramming 제어
스케줄러라 표현했지만 O.S 내에 있는 코드임
지금은 장기가 아닌 중기를 이용하여 degree of multiprogramming을 제어함
Q. 메모리에 올라간 프로그램이 아주 많거나 아주 적을 경우 생기는 문제?
Q. 여기서 event occur에서 event 는 뭘 가리키지?
Q. PC는 정확히 뭐지?