01 process란?
프로세스는 다음과 같이 정의될 수 있다.
1. 수행 중인 프로그램
2. 자신만의 메모리 공간과 CPU를 가지고 있음
3. 스케쥴링의 대상 (scheduling entity)
4. 자원 할당을 위해 서로 경쟁
5. 부모-자식 관계 구성 (parent-child relation, family)
그렇다면, 프로세스(process)와 프로그램(program)의 차이는 무엇일까?
Process(Task)는 active한 객체로, 메모리와 CPU 상에 올라가서 동작한다.
Program은 passive한 객체로, 일종의 파일(binary)이라고 할 수 있다.
02 관련 용어(terminology)
Load는 프로그램을 disk에서 main memory로 올리는 것을 의미한다. Load 구현을 위해서는 disk를 관리하기 위한 file system과 main memory를 관리하기 위한 virtual memory가 필요하다. 최종적으로는 운영체제에 의해 수행된다.
Fetch는 프로세스를 main memory에서 CPU로 올리는 것을 의미한다. memory에는 data와 Instruction이 있기 때문에, data fetch와 instruction fetch의 두 종류가 있다. 최종적으로는 hardware(CPU)에 의해 수행된다.