운영체제(OS)는 여러 프로그램을 동시에 실행하기 위해 각 프로그램을 서로 전환시켜 줄 수 있는 관리자 프로그램이다.

Untitled

OS는 타이머를 이용해 사용자 프로그램을 전환시켜줄 때가 됐는지 판단한다. 이러한 스케줄링 기법을 **시분할(time slicing)**이라 한다.

시분할 방식은 시간을 정해진 간격으로 나누고, 정해진 시간 간격 동안 사용자 프로그램을 실행한다.

이 방법은 매우 느리다. 프로그램을 메모리로 불러오려면 시간이 걸리므로, 아래 처럼 각 프로그램에게 각기 다른 공간을 허용하면 더 빠르게 시분할이 가능하다.

Untitled

다만 절대 주소 지정(즉시, 간접, 직접 등)을 사용하면 1000번지에서 실행되도록 만들어진 프로그램은 2000번지에서 작동하지 않는다.

인덱스 레지스터는 안의 값을 명령어에 들어 있는 주소와 더해서 유효 주소를 계산한다.

Untitled

주소가 1000번지이고 3000번지에서 실행하고자 한다면 인덱스 레지스터는 2000으로 설정될 것이다.

인덱스 레지스터를 이용하지 않는 방법은 상대 주소 지정을 사용하는 것이다.

상대 주소 지정은 명령어의 주소를 기준으로 하는 상대적인 주소로 해석한다. 즉, 명령어에 들어 있는 주소를 0부터 시작하는 위치로 해석하지 않는다는 것이다.