사용자모드, 커널모드, 시스템 호출
강력한 격리를 달성하려면 응용 프로그램과 운영체제 간에 엄격한 경계가 필요합니다.
응용 프로그램이 실수한 경우 다른 응용 프로그램이나 운영체제에서 실패하면 안됩니다.
운영체제는 실패한 응용 프로그램을 정리하고 다른 프로그램을 계속 실행할 수 있어야 합니다.
강력한 격리를 달성하기 위해서 응용 프로그램이 운영체제의 데이터 구조와 명령을 수정하거나 다른 프로세스의 메모리에 접근하지 못하도록 해야 합니다.
CPU는 강력한 하드웨어 지원을 제공합니다.
RISC-V는 CPU가 명령을 실행할 수 있는 3가지 모드를 지원합니다. (사용자모드, 커널모드, 머신모드)
XV6는 머신모드에서 몇 줄의 명령어를 실행한 후 커널 모드로 변경됩니다.
machine mode (머신 모드)
머신모드는 CPU가 가장 높은 권한을 가지고 있는 모드입니다.
시스템의 모든 자원에 대한 완전한 접근 권한을 가지며, 운영체제를 초기화하고 설정하는 등의 작업을 수행할 수 있습니다.
커널널 모드에서 CPU는 특권 명령어를 실행할 수 있습니다.
예를 들어, 인터럽트를 활성하거나 비활성화하고, 페이지 테이블 주소를 저장하는 레지스터를 읽거나 쓰는 작업이 가능합니다. 사용자모드에서 특권 명령을 실행하려고 한다면 CPU는 해당 명령을 실행하지 않고, 커널 모드로 전환하여 슈퍼바이저 모드 코드가 응용프로그램을 종료할 수 있게 합니다. 커널 공간에서 실행 중인 소프트웨어를 커널이라고 합니다.
응용 프로그램이 커널 함수를 호출하려면 커널로 전환해야 합니다.
CPU는 사용자 모드에서 커널모드로 전환하고 커널의 지정된 진입 지점에서 커널로 진입하는 특수 명령을 제공합니다.
(이러한 목적으로 RISC-V는 ecall명령어를 제공합니다.)
CPU가 커널모드로 전환되면 커널은 시스템 호출 인수의 유효성을 검사합니다. 응용 프로그램이 요청된 작업을 수행할 수 있는지 결정한 후 작업을 거부하거나 실행할 수 있습니다.
'xv6-book' 카테고리의 다른 글
xv6-book (Ch2.4-xv6 organization) (0) | 2024.04.30 |
---|---|
xv6-book (Ch2.3-Kernel organization) (0) | 2024.04.30 |
xv6-book (Ch2.1-Abstracting physical resources) (0) | 2024.02.14 |
xv6-book (Ch2-Operating system organization) (1) | 2024.02.13 |
xv6-book (Ch1-과제) (1) | 2024.02.09 |