Published on

시스템 공간과 사용자 공간

Authors
  • avatar
    Name
    유사공대생
    Twitter

멀티 태스킹 시스템은 모든 프로그램에게 자신이 컴퓨터 안에서 실행되는 유일한 프로그램이라는 환상을 심어준다. MMU는 각 프로세스에게 자신만의 메모리 주소 공간을 제공해서 이런 환상을 키워준다. 하지만 I/O 장치가 끼어들면 이런 환상을 유지하지가 힘들어진다.

image

예를 들어, 운영체제가 타이머 장치를 사용해서 위 그림처럼 실행중인 프로그램을 다른 프로그램으로 전환할 시점을 알아낸다. 운영체제는 초당 발생할 인터럽트 횟수에 맞춰 타이머를 설정한다. 하지만 사용자 프로그램이 이 타이머 설정을 한 시간에 한 번만 인터럽트하도록 변경하면 모든 것이 예상과 다르게 작동한다. 마찬가지로 사용자 프로그램이 MMU의 설정을 마음대로 바꿀 수 있다면 MMU가 프로그램을 서로 격리시키지 못할 것이다.

여러 CPU는 이런 문제를 해결할 수 있는 추가 하드웨어를 제공한다. CPU에는 컴퓨터가 시스템 모드에 있는지 사용자 모드에 있는지 결정하는 비트가 어떤 레지스터 안에 들어 있다. I/O를 처리하는 명령어 등 일부 명령어는 특권(privileged) 명령어라서 오직 시스템 모드에서만 실행할 수 있다. 트랩(trap)이나 시스템 콜(system call)이라고 부르는 특별한 명령어를 통해 사용자 모드에서 실행중인 프로그램이 시스템 모드 프로그램(즉 운영체제)에게 요청을 보낼 수 있다.

이런 방식에는 몇 가지 장점이 있다.

첫째, 이 방식은 사용자 프로그램으로부터 운영체제를 보호하고, 사용자 프로그램을 다른 사용자 프로그램으로부터 보호한다.

둘째, 사용자 프로그램이 MMU 등의 몇몇 요소에 손을 댈 수 없기 때문에 운영체제가 프로그램에 대한 자원 할당을 전적으로 제어할 수 있다. 하드웨어 예외는 오직 시스템 공간에서만 처리된다.