@ Multi programming이란?
// Active job이 메인 메모리에 같이 존재해서 수행하는 것
> Active job이란 아직 수행이 끝나지 않는 job을 말합니다.
// 이렇게 Active job을 동시에 가질 수 있는 개수를 Degree of Active job이라고 불렀습니다.
// 이는 매우 좋은 해결책이었지만, 이로 인해 문제가 발생합니다.
? Problem 1. Memory protection
// 0~1000 : OS, 1001~2500 : job1, 2501~4000 : job2, 4001~ : job3 이렇게 메모리가 할당된다고 합시다
> 이 때 만약 job1이 job2의 영역을 침범하여 3000이라는 주소에 데이터를 씁니다.
> 이러한 현상이 발생하는 것을 Memory protection 문제라고 합니다.
? Problem 2. Relocation (Memory)
// job이 메모리의 어느 위치에 로드 될 지를 알 수 없게 되었습니다.
// 이 때문에 임의의 주소에서도 문제없이 job이 수행될 수 있을 수 있도록 만들어야 하게 되었습니다.
@ 위의 두 문제를 handling 하기 위해 Base register & Bound register라는 개념이 생기게 됩니다.
// 프로그램을 작성할 때에는 주소 0을 기준으로 작성하고,
// base - bound 사이 값 주소인지를 매번 확인하는 Protection을 수행합니다.
// 그리고 Base register 을 이용해서 실제 물리적 메모리 주소를 계산합니다.