보호 링
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
보호 링은 컴퓨터 시스템의 보안을 강화하기 위한 아키텍처로, 권한 수준을 계층적으로 구성하여 시스템 자원에 대한 접근을 제한한다. Multics 운영 체제에서 처음 도입되었으며, CPU 모드와는 별개로 소프트웨어적으로 구현되었다. 현대의 많은 운영 체제는 x86 아키텍처를 포함한 최신 CPU의 링 보호 기능을 활용하지만, Windows NT와 같은 일부 운영 체제는 커널 모드와 사용자 공간의 두 개의 링만 사용한다. ARM 아키텍처는 여러 권한 수준을 구현하며, 하이퍼바이저와 같은 가상화 기술에서도 활용된다. 링 보호는 하드웨어와 운영 체제 간의 긴밀한 협력을 필요로 하며, CPU 모드를 통해 소프트웨어의 시스템 환경 손상으로부터 하드웨어를 보호한다.
더 읽어볼만한 페이지
- 중앙 처리 장치 - 마이크로컨트롤러
마이크로컨트롤러는 프로세서, 메모리, 입출력 기능을 단일 칩에 통합하여 임베디드 시스템의 핵심이 되는 부품으로, 프로그램 내장 방식을 통해 소프트웨어만으로 제어 기능 변경이 가능하며, 현재는 32비트 ARM, MIPS 아키텍처 기반 제품이 주를 이루고, 저전력 소모, 소형화, 다양한 기능 통합을 특징으로 다양한 분야에서 활용된다. - 중앙 처리 장치 - NX 비트
NX 비트는 하드웨어 기반 보안 기능으로, 메모리 페이지의 실행 권한을 제어하여 특정 영역에서 코드 실행을 막아 버퍼 오버플로 공격과 같은 보안 위협을 줄이는 데 사용되며, AMD에서 처음 도입 후 다양한 프로세서와 운영체제에서 DEP 등의 이름으로 구현되었다. - 운영체제 기술 - 프로세스
프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로, 운영 체제가 시스템 자원을 효율적으로 관리하며 멀티태스킹 환경에서 독립적인 실행 흐름을 유지한다. - 운영체제 기술 - 커널 (컴퓨팅)
커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간 상호 작용을 관리하며 시스템 보안, 자원 관리, 하드웨어 추상화, 프로세스 스케줄링, 프로세스 간 통신, 다중 작업 환경 지원 등의 기능을 제공하고, 모놀리식, 마이크로, 혼합형 커널 등으로 구현되며 가상화 및 클라우드 컴퓨팅 환경에서 중요성이 커지고 있다.
보호 링 | |
---|---|
개요 | |
유형 | 보안 메커니즘 |
목적 | 컴퓨터 시스템 보호 |
관련 개념 | 권한 분리 보안 커널 신뢰 컴퓨팅 기반 |
설명 | |
역할 | 운영 체제 및 CPU에서 제공하는 보안 계층 |
작동 방식 | 권한 수준을 나누어 접근 제어 |
필요성 | 시스템 무결성 및 데이터 보호 |
링 구조 | |
링 번호 | 0부터 시작 (일반적으로 0~3) |
링 0 | 가장 높은 권한 수준 커널이 실행됨 |
링 1, 2 | 장치 드라이버 및 시스템 서비스 거의 사용되지 않음 |
링 3 | 가장 낮은 권한 수준 사용자 응용 프로그램 실행 |
작동 원리 | |
권한 수준 변경 | 게이트를 통해 이루어짐 시스템 호출 사용 |
보안 | 낮은 링에서 높은 링으로의 직접 접근 차단 권한 상승 시 검사 수행 |
예시 | |
일반적인 운영 체제 | Windows NT Linux macOS |
가상화 | 하이퍼바이저 (링 -1) 게스트 운영 체제 (링 1) |
중요성 | |
보안 강화 | 악성 코드로부터 시스템 보호 권한 없는 접근 방지 |
시스템 안정성 | 사용자 프로그램 오류가 시스템 전체에 영향 미치지 않도록 함 |
한계 | |
완전한 보안 보장 불가 | 링 간의 상호 작용에서의 취약점 존재 가능 보안 커널 자체의 결함 가능성 |
2. 역사적 배경
보호 링 개념은 유닉스 계열 운영 체제의 안전한 전신인 Multics 운영 체제가 도입한 혁신적인 개념 중 하나였다. 초기에는 하드웨어 지원이 부족하여 소프트웨어적으로 구현되었으나,[4] 이후 Honeywell 6180에서 하드웨어적으로 8개의 링을 지원하게 되었다.[5]
대부분의 범용 시스템은 하드웨어가 더 많은 CPU 모드를 제공하더라도 두 개의 링만 사용한다. 예를 들어, Windows 7 및 Windows Server 2008 (및 이전 버전)은 커널 모드(링 0)와 사용자 공간(링 3)의 두 개 링만 사용한다.[21] 이는 이전 버전의 Windows NT가 두 가지 보호 수준만 지원하는 프로세서에서 실행되었기 때문이다.[7]
OS/2는 세 개의 링을 사용했는데,[8] 링 0은 커널 코드 및 장치 드라이버, 링 2는 권한 있는 코드(I/O 접근 권한이 있는 사용자 프로그램), 링 3은 권한 없는 코드(거의 모든 사용자 프로그램)에 사용되었다. DOS에서는 커널, 드라이버 및 응용 프로그램이 일반적으로 링 3에서 실행되었지만(보호 모드 드라이버 또는 DOS 익스텐더가 사용되는 경우), EMM386과 같은 386 메모리 관리자는 링 0에서 실행되었다. DR-DOS의 EMM386 3.xx는 선택적으로 일부 모듈(DPMS)을 링 1에서 실행할 수 있었다. OpenVMS는 커널, Executive, Supervisor, User라는 네 가지 모드를 사용했다.
최근에는 Xen VMM 소프트웨어의 확산, 단일 커널 대 마이크로커널에 대한 논쟁, Microsoft의 NGSCB 이니셔티브의 "Ring-1" 설계 구조, x86 가상화 기반 하이퍼바이저의 등장과 함께 링 보호에 대한 관심이 다시 높아졌다.
ARM 버전 7 아키텍처는 응용 프로그램(PL0), 운영 체제(PL1), 하이퍼바이저(PL2)의 세 가지 권한 수준을 구현한다. 특이하게도 레벨 0(PL0)은 가장 권한이 적은 레벨이고, 레벨 2는 가장 권한이 많은 레벨이다.[9] ARM 버전 8은 AArch64[10] 및 AArch32[10]에 대해 응용 프로그램(EL0), 운영 체제(EL1), 하이퍼바이저(EL2), 보안 모니터/펌웨어(EL3)의 네 가지 예외 수준을 구현한다.
하드웨어는 한 링에서 다른 링으로 제어가 전달될 수 있는 방식을 엄격하게 제한하며, 링 간에 수행할 수 있는 메모리 접근 유형에 대한 제한을 시행한다. 예를 들어 x86에는 ''gate'' 구조가 있어 하위 레벨 링의 미리 정의된 진입점으로 안전하게 제어를 전송하며, 이는 많은 운영 체제에서 슈퍼바이저 호출 역할을 한다.
링 보호는 프로세서 모드와 결합될 수 있다. 둘 다 지원하는 하드웨어에서 실행되는 운영 체제는 두 가지 형태의 보호를 모두 사용하거나 하나만 사용할 수 있다. 링 아키텍처를 효과적으로 사용하려면 하드웨어와 운영 체제 간의 긴밀한 협력이 필요하다. 여러 하드웨어 플랫폼에서 작동하도록 설계된 운영 체제는 모든 지원 플랫폼에 링이 없는 경우 링을 제한적으로만 사용할 수 있다.
2. 1. Multics
보호 링의 여러 겹은 오늘날 유닉스 계열 운영 체제의 매우 안전한 전신인 Multics 운영 체제가 도입한 가장 혁신적인 개념 중 하나였다. GE 645 메인프레임 컴퓨터는 하드웨어 접근 제어를 갖추고 있었지만, 하드웨어에서 링을 완전히 지원하기에는 충분하지 않았다. 그래서 Multics는 소프트웨어에서 링 전환을 트래핑하여 링을 지원했으며,[4] 그 후속 제품인 Honeywell 6180은 8개의 링을 지원하며 하드웨어에서 이를 구현했다.[5] Multics의 보호 링은 CPU 모드와는 별개였다. 링 0을 제외한 모든 링의 코드와 일부 링 0 코드는 슬레이브 모드로 실행되었다.[6]원래 Multics 시스템은 8개의 링을 가지고 있었지만, 많은 최신 시스템은 더 적은 수의 링을 가지고 있다. 하드웨어는 특수 머신 레지스터의 도움을 받아 항상 실행 중인 명령 스레드의 현재 링을 인식하고 있다.
2. 2. 초기 유닉스 및 윈도우
유닉스 계열 운영 체제의 시초인 Multics는 여러 겹의 보호 링을 도입하여 보안을 강화했다. 초기 GE 645 메인프레임은 하드웨어 접근 제어를 갖추었지만, Multics는 소프트웨어적으로 링 전환을 구현했다.[4] 이후 Honeywell 6180은 하드웨어에서 8개의 링을 지원하도록 개선되었다.[5]대부분의 범용 시스템은 두 개의 링만 사용한다. Windows 7 및 Windows Server 2008 (및 이전 버전)은 커널 모드(링 0)와 사용자 공간(링 3)의 두 가지 링만 사용하는데,[21] 이는 이전 Windows NT가 두 가지 보호 수준만 지원하는 프로세서에서 실행되었기 때문이다.[7]
OS/2는 세 개의 링을 사용했다.[8] 링 0은 커널 코드 및 장치 드라이버, 링 2는 권한 있는 코드(I/O 접근 권한이 있는 사용자 프로그램), 링 3은 권한 없는 코드(거의 모든 사용자 프로그램)에 사용되었다. DOS에서는 커널, 드라이버, 응용 프로그램이 일반적으로 링 3에서 실행되었지만, EMM386과 같은 386 메모리 관리자는 링 0에서 실행되었다. DR-DOS의 EMM386 3.xx는 선택적으로 일부 모듈을 링 1에서 실행할 수 있었다. OpenVMS는 커널, Executive, Supervisor, User의 네 가지 모드를 사용했다.
Xen VMM, 단일 커널 대 마이크로커널 논쟁, Microsoft의 NGSCB "Ring-1" 설계, x86 가상화 기반 하이퍼바이저 등으로 인해 링 구조에 대한 관심이 다시 높아졌다.
2. 3. 현대 운영체제
Multics의 영향을 받은 현대 운영체제들은 보안을 위해 링 보호 기능을 활용한다.Windows 7 및 Windows Server 2008 (및 이전 버전)은 커널 모드(링 0)와 사용자 공간(링 3)의 두 가지 링만 사용한다.[21] 이는 이전 버전의 Windows NT가 두 가지 보호 수준만 지원하는 프로세서에서 실행되었기 때문이다.[7] OS/2는 세 개의 링을 사용하는데,[8] 링 0은 커널 코드 및 장치 드라이버, 링 2는 권한 있는 코드(I/O 접근 권한이 있는 사용자 프로그램), 링 3은 권한 없는 코드(거의 모든 사용자 프로그램)에 사용된다. DOS에서는 커널, 드라이버 및 응용 프로그램이 일반적으로 링 3에서 실행되지만(보호 모드 드라이버 또는 DOS 익스텐더가 사용되는 경우), EMM386과 같은 386 메모리 관리자는 링 0에서 실행된다. DR-DOS의 EMM386 3.xx는 선택적으로 일부 모듈(DPMS)을 링 1에서 실행할 수 있다. OpenVMS는 커널, Executive, Supervisor, User라는 네 가지 모드를 사용한다.
최근에는 Xen VMM 소프트웨어, 단일 커널 대 마이크로커널 논쟁, Microsoft의 NGSCB 이니셔티브의 "Ring-1" 설계 구조, x86 가상화 기반 하이퍼바이저 등으로 인해 링 보호에 대한 관심이 다시 높아졌다.
ARM 버전 7 아키텍처는 응용 프로그램(PL0), 운영 체제(PL1), 하이퍼바이저(PL2)의 세 가지 권한 수준을 구현한다. 특이하게도 레벨 0(PL0)은 가장 권한이 적은 레벨이고, 레벨 2는 가장 권한이 많은 레벨이다.[9] ARM 버전 8은 AArch64[10] 및 AArch32[10]에 대해 응용 프로그램(EL0), 운영 체제(EL1), 하이퍼바이저(EL2), 보안 모니터/펌웨어(EL3)의 네 가지 예외 수준을 구현한다.
링 보호는 프로세서 모드와 결합될 수 있다. 둘 다 지원하는 하드웨어에서 실행되는 운영 체제는 두 가지 형태의 보호를 모두 사용하거나 하나만 사용할 수 있다. 링 아키텍처를 효과적으로 사용하려면 하드웨어와 운영 체제 간의 긴밀한 협력이 필요하다. 여러 하드웨어 플랫폼에서 작동하도록 설계된 운영 체제는 모든 지원 플랫폼에 링이 없는 경우 링을 제한적으로만 사용할 수 있다. 하드웨어가 링을 통해 더 세분화된 기능을 제공하더라도 보안 모델은 종종 "커널" 및 "사용자"로 단순화된다.
3. 주요 특징
보호 링은 컴퓨터 시스템의 보안과 안정성을 유지하는 데 중요한 역할을 하며, 다음과 같은 주요 특징을 갖는다.
- '''프로세서 모드]''':
- '''슈퍼바이저 모드''': 시스템 레벨 소프트웨어에서 실행되는 코드가 변경할 수 있는 하드웨어 플래그이다.[11] 시스템 레벨 작업이나 스레드가 동작 중일 때 설정되며, 사용자 공간 애플리케이션 실행 시에는 해제된다. 이 플래그는 특권 명령 실행 가능 여부를 결정한다. 리눅스, 윈도우 등은 슈퍼바이저 모드와 사용자 모드를 사용하며,[11] 사용자 모드 코드가 특별한 기능을 사용하려면 시스템 호출을 통해 슈퍼바이저 모드(커널 공간)로 전환해야 한다.[11]
- '''하이퍼바이저 모드''': 최근 인텔과 AMD CPU는 하이퍼바이저가 링 0 하드웨어 접근을 제어할 수 있게 하는 x86 가상화 명령어를 제공한다.[35] 인텔 VT-x와 AMD-V는 게스트 운영 체제가 다른 게스트나 호스트 운영 체제에 영향을 주지 않고 링 0 작업을 기본적으로 실행할 수 있도록 새로운 "링-1"을 만든다.[35]
- '''기타 모드''': x86 아키텍처의 FLAGS 레지스터에 있는 IOPL (I/O 권한 레벨) 플래그는 프로그램이나 태스크의 I/O 권한 레벨을 나타낸다. AArch64 아키텍처는 예외 레벨(Exception Level)을 EL0 ~ EL3의 4단계로 지원한다.
- '''권한 레벨 (Privilege Level)''': x86 아키텍처는 0부터 3까지 4개의 권한 레벨을 제공하며, 숫자가 낮을수록 더 높은 권한을 갖는다. 대부분의 최신 운영 체제는 링 0(커널 모드)과 링 3(사용자 모드)만 사용한다.[21]
3. 1. 링 보호
링 보호는 컴퓨터 아키텍처 내에서 권한의 두 개 이상의 계층적 "레벨" 또는 "계층"으로 구성된다. 이는 일반적으로 일부 CPU아키텍처에 의해 하드웨어로 구현되며, 여러 CPU 모드를 하드웨어 레벨 또는 마이크로코드레벨로 제공한다. 링은 가장 높은 특권 레벨(가장 신뢰할 수 있고, 번호 0)에서 가장 낮은 특권 레벨(가장 신뢰할 수 없고, 큰 번호)까지의 계층 구조로 형성된다. 많은 OS에서 링 0이 가장 특권이 높으며, 하드웨어(CPU 및 메모리)와 가장 직접적으로 상호 작용할 수 있다.
링 사이에는 특별한 게이트(문)가 있으며, 외부 링에서 내부 링의 리소스에 미리 정해진 방식으로 접근하는 것을 가능하게 하며, 임의의 사용은 허용하지 않는다. 게이트를 통한 링 간의 올바른 액세스는 한 링의 프로그램이 다른 링의 프로그램용 리소스를 악용하는 것을 방지하여 보안을 강화한다.[32] 예를 들어, 하드웨어 액세스는 링 1의 장치 드라이버에서 수행해야 하며, 사용자 프로그램으로 링 3에서 작동하는 스파이웨어가 사용자에게 알려지지 않고 웹 카메라를 켜는 것은 불가능하다. 더 큰 번호의 링에서 작동하는 웹 브라우저 등의 프로그램은, 더 작은 번호의 링에서만 액세스할 수 있는 리소스인 네트워크에 대한 액세스를 정해진 방법으로 요청해야 한다.
하드웨어 지원 링 보호는 Multics 운영 체제(UNIX계 OS의 선조)가 도입한 다양한 혁신적인 개념 중 가장 진보된 것이었다. 그러나 오늘날 가장 일반적인 OS는 2단계의 링만 사용하며, 하드웨어가 제공하는 CPU 모드의 일부만 사용하는 경우가 많다. 예를 들어 Windows XP 및 이후 OS는 커널 모드에 해당하는 링 0과 사용자 모드에 해당하는 링 3, 두 개의 링만 사용한다.
최근 CPU 아키텍처(인텔의 x86 아키텍처 등)는 어느 정도의 링 보호 기능을 가지고 있다. 그러나 Windows NT 계열 OS나 Unix 계열 OS는 이를 완전히 활용하지 못하고 있다. OS/2에서는 3개의 링을 사용했다.[24] 링 0은 커널과 장치 드라이버, 링 2는 특권 코드(I/O 접근 특권을 가진 사용자 프로그램), 링 3은 특권이 없는 코드(거의 모든 사용자 프로그램)에 사용되었다. DOS에서는 커널, 드라이버, 애플리케이션 모두 링 3에서 작동하는 경우가 많았으며, EMM386과 같은 386 메모리 관리자가 링 0에서 작동했다. 또한, DR-DOS의 EMM386 3.xx는 선택적으로 일부 모듈(DPMS 등)을 링 1에서 작동시킬 수도 있었다. OpenVMS는 커널, 익스큐티브, 슈퍼바이저, 사용자 순으로 특권이 높은 4가지 모드를 사용한다.
최근 Xen의 VMM 소프트웨어, 모놀리식 커널과 마이크로커널에 관한 논쟁, 마이크로소프트의 NGSCB 이니셔티브에 의한 "Ring-1" 설계 구조, Intel VT-x 등 펌웨어 내장형 하이퍼바이저 등을 통해 링 보호에 관한 새로운 움직임이 있었다.
Multics는 8단계의 링을 가지고 있었지만, 최근 시스템에서는 더 적다. 하드웨어는 현재 실행 중인 스레드가 실행하는 명령 시퀀스의 링 레벨을 특수 레지스터로 감시한다. 시스템에 따라 가상 공간의 일부 영역과 링 번호 할당이 하드웨어와 연동되어 있다. 예를 들어, 데이터 제네럴의 Eclipse MV/8000에서는 프로그램 카운터(PC)의 최상위 3비트가 링 레지스터를 겸하고 있다. 따라서 가상 주소 0xE200000을 PC에 설정하고 코드를 실행하면 자동으로 링 7이 되며, 가상 공간의 다른 섹션에 있는 서브루틴을 호출하면 자동 링 전환이 일어난다.
AArch64는 링에 해당하는 기능으로 예외 레벨(Exception Level)을 4단계로 지원하며, 원칙적으로 이들을 모두 사용한다. 가장 특권이 큰 EL3는 펌웨어 및 보안 감시 기능, EL2는 하이퍼바이저, EL1은 OS 커널, EL0는 사용자 모드에 할당된다. EL3는 추가 지원 예외 레벨이며, 지원되지 않는 CPU에서는 EL2가 최고가 된다. 보안 감시 기능은 원래 EL3에서 구현할 것을 예상했지만, 공격에 굴복하면 시스템 전체에 피해가 미치므로, EL2 이하 환경으로 구현하고, EL3는 EL2 이하 환경 간의 다리 역할을 하는 구성으로 변경되었다.
하드웨어는 한 링에서 다른 링으로의 제어 이동을 엄격하게 제한한다. 또한 메모리 접근도 각 링의 레벨에 따라 제한한다. 미리 설정된 진입점을 통해 특수한 ''gate'' 명령이나 ''call'' 명령을 사용하여 더 높은 특권 레벨의 링으로 제어를 이동한다(이를 콜 게이트 방식 등이라고 한다). 많은 OS에서 이와 유사한 시스템 콜 방식을 채택하고 있다. 이러한 하드웨어 제한은 우연이나 고의로 인한 보안 위반으로부터 시스템을 보호하기 위해 설계되었다. 또한, 가장 높은 특권 레벨의 링에는 특별한 기능이 부여된다. 예를 들어, 가상 메모리를 우회하여 물리 메모리 공간에 접근할 수 있다.
링 보호는 시스템에 따라 CPU 모드와 밀접한 관계가 있을 수 있다. 두 가지를 모두 지원하는 시스템에서 작동하는 운영 체제가 반드시 둘 다 이용하는 것은 아니다.
링 보호의 효과적인 이용에는 하드웨어와 운영 체제의 긴밀한 협력이 필요하다. 여러 플랫폼에서 작동하도록 설계된 운영 체제는 공통으로 사용할 수 있는 일부 링만 사용한다. 따라서 하드웨어가 고도의 링 보호 기능을 가지고 있더라도 "커널"과 "사용자"로 단순화된 보안 모델이 채택되는 경우가 많다.
3. 2. 프로세서 모드
프로세서 모드는 다양한 종류와 특징을 가지며, 컴퓨터 시스템의 보안과 안정성을 유지하는 데 중요한 역할을 한다.
- 보호 링:
컴퓨터 아키텍처 내에서 권한의 두 개 이상의 계층적 "레벨" 또는 "계층"으로 구성된다. 일반적으로 일부 CPU아키텍처에 의해 하드웨어로 구현되며, 여러 CPU 모드를 하드웨어 레벨 또는 마이크로코드레벨로 제공한다. 가장 높은 특권 레벨(가장 신뢰할 수 있고, 번호 0)에서 가장 낮은 특권 레벨(가장 신뢰할 수 없고, 큰 번호)까지 계층 구조로 형성된다. 많은 OS에서 링 0이 가장 특권이 높으며, CPU 및 메모리 등 하드웨어와 직접 상호 작용할 수 있다.
링 사이에는 특별한 게이트(문)가 있어, 외부 링에서 내부 링의 리소스에 미리 정해진 방식으로 접근할 수 있도록 허용하며, 임의 사용은 허용하지 않는다. 게이트를 통한 링 간 올바른 접근은 한 링의 프로그램이 다른 링의 프로그램용 리소스를 악용하는 것을 방지하고 보안을 강화한다.
원래 Multics 시스템은 8개의 링을 가졌지만, 현대 시스템은 더 적은 수의 링을 가진다. 하드웨어는 특수 머신 레지스터를 통해 실행 중인 명령 스레드 (컴퓨팅)의 현재 링을 인식한다.
하드웨어는 링 간 제어 전달 방식과 메모리 접근 유형을 엄격히 제한하여 보안 침해를 방지한다. 가장 권한이 있는 링은 가상 메모리 하드웨어를 우회하는 실제 메모리 주소 지정 등 특별한 기능을 가질 수 있다.
ARM 버전 7 아키텍처는 응용 프로그램(PL0), 운영 체제(PL1), 하이퍼바이저(PL2)의 세 가지 권한 수준을 구현한다. 특이하게도 PL0은 가장 권한이 적고, PL2는 가장 권한이 많다.[9]
링 보호는 일부 시스템에서 프로세서 모드와 결합될 수 있다. 둘 다 지원하는 하드웨어에서 실행되는 운영 체제는 두 가지 보호 형태를 모두 사용하거나 하나만 사용할 수 있다. 링 아키텍처를 효과적으로 사용하려면 하드웨어와 운영 체제 간 긴밀한 협력이 필요하다. 여러 하드웨어 플랫폼에서 작동하도록 설계된 운영 체제는 링을 제한적으로만 사용할 수 있으며, 보안 모델은 "커널" 및 "사용자"로 단순화되는 경향이 있다.
- '''기타 모드'''
x86 아키텍처의 FLAGS 레지스터에 있는 '''IOPL''' (I/O 권한 레벨) 플래그는 보호 모드와 롱 모드에서 프로그램이나 태스크의 I/O 권한 레벨을 나타낸다. 프로그램이 I/O 포트에 접근하려면 현재 권한 레벨(CPL)이 IOPL보다 작거나 같아야 한다.[32]
3. 2. 1. 슈퍼바이저 모드
리눅스, 윈도우와 같은 운영 체제는 슈퍼바이저 모드와 사용자 모드를 사용한다.[11] 사용자 모드의 코드가 특별한 기능을 사용하고 싶을 경우, 시스템 호출을 통해 슈퍼바이저 모드(커널 공간)로 전환하여, 커널 공간에 있는 운영체제의 신뢰할 수 있는 코드로 처리하고, 결과를 사용자 공간으로 반환한다.[11]슈퍼바이저 모드는 시스템 수준 소프트웨어에서 실행되는 코드가 변경할 수 있는 하드웨어로 구현된 플래그를 의미한다.[11] 시스템 수준의 작업이나 스레드가 동작 중일 때는 이 플래그가 설정되어 있으며, 사용자 공간의 애플리케이션이 동작 중일 때는 설정되지 않는다. 이 플래그는 제어용 레지스터를 쓰거나, 인터럽트를 마스크하는 것과 같은 특권 명령을 실행할 수 있는지 여부를 결정한다. 두 가지 모드를 가지게 된 생각은 "더 많은 제어를 얻으면 더 많은 책임도 생긴다"는 생각에서 비롯되었다. 특권 명령을 잘못 사용하면 시스템 전체가 충돌할 수 있으므로, 슈퍼바이저 모드의 프로그램은 절대 실수하지 않는다고 신뢰받는다.
슈퍼바이저 모드는 "특권 명령을 포함한 모든 명령 실행을 가능하게 하는 일부 프로세서가 가진 실행 모드"로 정의된다.[25] 또한, 다른 주소 공간에 대한 접근을 가능하게 하거나, 메모리 관리 유닛이나 다른 주변 장치에 대한 접근도 가능하게 할 수 있다. 일반적으로 운영 체제는 이 모드에서 작동한다.[25]
모놀리식 커널의 운영체제는 커널이 슈퍼바이저 모드에서 작동하고, 애플리케이션이 사용자 모드에서 작동한다. 마이크로커널 등에서는 반드시 이런 구분이 이루어지는 것은 아니다. DOS (적어도 EMM386과 같은 386 메모리 관리자를 로드하지 않은 경우)나 다른 단순한 운영체제와 마찬가지로 많은 임베디드 시스템은 항상 슈퍼바이저 모드에서 작동하며, 장치 드라이버와 사용자 프로그램의 프로그래밍에 차이가 없다.
대부분의 프로세서는 최소 두 종류의 모드를 갖는다. x86 프로세서는 4개의 모드를 가지며 4개의 링 보호 기능을 갖는다. 링 0에서 작동하는 프로그램은 모든 것을 할 수 있으며, 링 3에서 작동하는 코드에서 장애가 발생해도 시스템의 다른 부분에 영향을 미치지 않는다. 링 1과 링 2는 거의 사용되지 않지만, 각각 다른 접근 수준을 구성할 수 있다.
사용자 모드에서 커널 모드로의 전환은 많은 시스템에서 매우 큰 비용이 든다. 기본적인 시스템 콜인 getpid를 실측해보면, 많은 머신에서 1000~1500 사이클이 걸린다. 그중 약 100 사이클이 실제 모드 전환(사용자에서 커널 공간으로 70 사이클, 돌아오는 데 40 사이클)이고, 나머지는 "커널 오버헤드"이다.[26][27] L3 마이크로커널에서는 이 오버헤드를 최소화하여 전체 비용이 약 150 사이클이다.[26]
모리스 윌크스는 링이 제공하는 계층형 보호 기능은 시스템 프로그래머의 요구 사항과 제대로 맞지 않았으며, 두 가지 모드만 가진 단순한 시스템에서는 거의 개선되지 않았음이 분명해졌다고 기록했다.[28]
3. 2. 2. 하이퍼바이저 모드
최근 인텔과 AMD의 CPU는 하이퍼바이저가 링 0 하드웨어 접근을 제어할 수 있게 하는 x86 가상화 명령어를 제공한다.[35] 인텔 VT-x(코드명 "Vanderpool")와 AMD-V(코드명 "Pacifica")는 서로 호환되지는 않지만, 게스트 운영 체제가 다른 게스트나 호스트 OS에 영향을 주지 않고 링 0 작업을 기본적으로 실행할 수 있도록 하는 새로운 "링-1"을 만들어 낸다.[35]하드웨어 지원 가상화 이전에는 게스트 운영 체제가 링 1에서 실행되었다. 더 높은 권한 수준(링 0)이 필요한 모든 시도는 인터럽트를 발생시킨 다음 소프트웨어를 사용하여 처리되었으며, 이를 "트랩 앤 에뮬레이트"라고 한다.
가상화를 지원하고 이러한 오버헤드를 줄이기 위해 VT-x 및 AMD-V를 사용하면 게스트가 링 0에서 실행될 수 있다. VT-x는 VMX 루트/비-루트 작동을 도입한다. 하이퍼바이저는 가장 높은 권한을 가진 VMX 루트 작동 모드에서 실행된다. 게스트 OS는 VMX 비-루트 작동 모드에서 실행되며, 이를 통해 실제 하드웨어 권한 없이 링 0에서 작동할 수 있다. VMX 비-루트 작동 및 VMX 전환은 가상 머신 제어라는 데이터 구조에 의해 제어된다.[16] 이러한 하드웨어 확장을 통해 x86 아키텍처에서 하드웨어 지원과 함께 "트랩 앤 에뮬레이트" 가상화를 수행할 수 있다.
최근 인텔과 AMD의 CPU는 하이퍼바이저를 위한 x86 가상화 명령어를 제공하며, 하이퍼바이저가 링 0의 하드웨어 접근을 제어할 수 있게 한다. 인텔 VT-x와 AMD-V는 서로 호환되지 않지만, 둘 다 새롭게 링 0보다 더 높은 권한 수준의 상태[30]를 제공한다. 따라서 게스트 OS에 전혀 수정 없이, 게스트 OS가 링 0 명령을 실행해도 호스트 OS나 다른 게스트 OS에 영향을 주지 않도록 할 수 있다.[31]
3. 2. 3. 기타 모드
x86 아키텍처의 FLAGS 레지스터에 있는 '''IOPL''' (I/O 권한 레벨) 플래그는 보호 모드와 롱 모드에서 프로그램이나 태스크의 I/O 권한 레벨을 나타낸다. 프로그램이 I/O 포트에 접근하려면 현재 권한 레벨(CPL)이 IOPL보다 작거나 같아야 한다.[32] IOPL은 Ring 0에서만 변경할 수 있다.AArch64 아키텍처는 예외 레벨(Exception Level)을 4단계(EL0 ~ EL3)로 지원한다. EL3는 가장 특권이 높은 레벨로 펌웨어 및 보안 감시 기능, EL2는 하이퍼바이저, EL1은 OS 커널, EL0는 사용자 모드에 할당된다.
하드웨어는 링 간 제어 이동을 엄격하게 제한하고, 메모리 접근도 링 레벨에 따라 제한한다. 특수한 'gate' 명령이나 'call' 명령을 사용하여 더 높은 권한 레벨의 링으로 제어를 이동할 수 있다. (→ 콜 게이트)
링 프로텍션은 CPU 모드와 밀접하게 관련되어 있지만, 둘 다 지원하는 시스템에서도 운영 체제가 반드시 둘 다 이용하는 것은 아니다. 많은 운영 체제가 "커널"과 "사용자"의 단순화된 보안 모델을 사용한다.[32]
3. 3. 권한 레벨 (Privilege Level)
x86 아키텍처는 0부터 3까지 4개의 권한 레벨을 제공하며, 숫자가 낮을수록 더 높은 권한을 갖는다. 각 레벨은 접근 가능한 리소스에 제한을 두어 시스템 보안을 강화한다. 대부분의 최신 운영 체제는 링 0(커널 모드)과 링 3(사용자 모드)의 두 가지 레벨만 사용한다.[21] 링 0은 커널 코드 및 장치 드라이버가 실행되며, 시스템의 모든 리소스에 접근할 수 있다. 링 3은 대부분의 사용자 프로그램이 실행되는 공간으로, 제한된 리소스에만 접근할 수 있다.OS/2는 세 개의 링을 사용하는데,[8] 링 0은 커널 코드 및 장치 드라이버, 링 2는 권한 있는 코드(I/O 접근 권한이 있는 사용자 프로그램), 링 3은 권한 없는 코드(거의 모든 사용자 프로그램)에 사용된다. DOS에서는 커널, 드라이버, 응용 프로그램이 일반적으로 링 3에서 실행되지만,[8] EMM386과 같은 386 메모리 관리자는 링 0에서 실행된다. OpenVMS는 커널, Executive, Supervisor, User의 네 가지 모드를 사용한다.[8]
윈도우 NT는 링 0과 링 3의 두 단계 시스템을 사용한다.[17] 마이크로소프트 윈도우, macOS, 리눅스, iOS, 안드로이드를 포함한 현재의 많은 운영 체제는 주로 페이징 메커니즘을 사용하며, 권한 레벨을 지정하는 데 단 하나의 비트(U/S 비트)만 사용한다.
x86 아키텍처에서 하위 레벨 링의 코드는 '게이트' 구조를 통해 상위 레벨 링의 코드를 안전하게 호출할 수 있다. 이는 슈퍼바이저 호출과 유사한 방식으로 작동한다. 하드웨어는 링 간 제어 전달 및 메모리 접근 유형을 엄격하게 제한하여 보안을 유지한다.
ARM v7 아키텍처는 응용 프로그램(PL0), 운영 체제(PL1), 하이퍼바이저(PL2)의 세 가지 권한 레벨을 제공하며, PL2가 가장 높은 권한을 가진다.[9] ARM v8은 네 가지 예외 레벨(EL0~EL3)을 구현한다.
링 보호는 프로세서 모드와 결합될 수 있다. 둘 다 지원하는 하드웨어에서 실행되는 운영 체제는 두 가지 형태의 보호를 모두 사용하거나 하나만 사용할 수 있다.
4. 구현 및 활용
Multics 운영 체제는 여러 겹의 보호 링을 도입하여 시스템 보안을 강화하는 혁신적인 개념을 제시했다. 대부분의 범용 시스템은 커널 모드용 링 0과 사용자 공간용 링 3, 두 개의 링만 사용하지만,[21] x86 아키텍처를 포함한 많은 최신 CPU는 링 보호 기능을 제공한다.
하드웨어는 특수 레지스터를 통해 현재 실행 중인 스레드 (컴퓨팅)의 링을 인식하며, 링 간 제어 전달 및 메모리 접근 유형을 제한한다. 예를 들어, x86의 'gate' 구조는 하위 레벨 링의 진입점으로 안전하게 제어를 전송하며, 슈퍼바이저 호출 역할을 한다. ARM v7은 세 가지 권한 수준(응용 프로그램, 운영 체제, 하이퍼바이저)을, v8은 네 가지 예외 수준(응용 프로그램, 운영 체제, 하이퍼바이저, 보안 모니터/펌웨어)을 구현한다.
링 보호는 프로세서 모드와 결합될 수 있으며, 효과적인 사용을 위해서는 하드웨어와 운영 체제 간 긴밀한 협력이 필요하다. 운영 체제는 지원 플랫폼에 따라 링 사용을 제한할 수 있으며, 보안 모델은 "커널" 및 "사용자"로 단순화되기도 한다.
최근 Xen VMM, 모놀리식 커널과 마이크로커널 논쟁, Microsoft NGSCB의 "Ring-1" 구조, Intel VT-x 등 펌웨어 내장형 하이퍼바이저 등장으로 링 보호에 대한 관심이 다시 높아졌다.
AArch64는 링에 해당하는 예외 레벨을 4단계(EL3, EL2, EL1, EL0)로 지원하며, EL3는 펌웨어 및 보안 감시, EL2는 하이퍼바이저, EL1은 OS 커널, EL0는 사용자 모드에 할당된다. 하드웨어는 링 간 제어 이동을 제한하고 메모리 접근을 각 링 레벨에 따라 제한하며, 콜 게이트 방식과 유사한 시스템 콜 방식을 채택한다.
링 프로텍션의 효과적인 이용에는 하드웨어와 운영 체제의 긴밀한 협력이 필요하며, 여러 플랫폼에서 작동하도록 설계된 운영 체제는 공통으로 사용할 수 있는 일부 링만 사용한다. CPU 아키텍처는 실제 운영 체제가 활용하는 것 이상의 유연성을 제공하며, 복잡한 CPU 모드를 제대로 활용하려면 OS와 CPU의 긴밀한 협력이 필요하다.
4. 1. 운영체제별 구현
리눅스, 윈도우는 슈퍼바이저/사용자 모드를 사용하는 운영 체제이다. 사용자 모드 코드는 특별한 명령을 수행하기 위해 시스템 호출을 통해 슈퍼바이저 모드나 커널 공간으로 호출하여 운영 체제의 신뢰된 코드가 필요한 작업을 수행하고 사용자 공간으로 반환한다.[21] 도스 (EMM386과 같은 386 메모리 관리자가 적재되지 않는 동안) 및 기타 단순 운영 체제, 수많은 임베디드 장치는 영구적으로 슈퍼바이저 모드에서 실행되는데, 이는 드라이버가 사용자 프로그램으로서 직접 작성될 수 있음을 의미한다.Windows 7 및 Windows Server 2008 (및 이전 버전)은 커널 모드에 해당하는 링 0과 사용자 공간에 해당하는 링 3의 두 개의 링만 사용하는데,[21] 이는 이전 버전의 Windows NT가 두 개의 보호 수준만 지원하는 프로세서에서 실행되었기 때문이다.[7]
OS/2는 세 개의 링을 사용한다:[8] 링 0은 커널 코드 및 장치 드라이버, 링 2는 권한 있는 코드(I/O 접근 권한이 있는 사용자 프로그램), 링 3은 권한 없는 코드(거의 모든 사용자 프로그램)에 사용된다. DOS에서는 커널, 드라이버 및 응용 프로그램이 일반적으로 링 3에서 실행되지만(보호 모드 드라이버 또는 DOS 익스텐더가 사용되는 경우에만 해당), EMM386과 같은 386 메모리 관리자는 링 0에서 실행된다. DR-DOS의 EMM386 3.xx는 선택적으로 일부 모듈(DPMS)을 링 1에서 실행할 수 있다. OpenVMS는 커널, Executive, Supervisor 및 User라는 네 가지 모드를 사용하며, 권한이 감소하는 순서로 정렬된다.
ARM 버전 7 아키텍처는 응용 프로그램(PL0), 운영 체제(PL1), 하이퍼바이저(PL2)의 세 가지 권한 수준을 구현한다. 레벨 0(PL0)은 가장 권한이 적은 레벨이고, 레벨 2는 가장 권한이 많은 레벨이다.[9] ARM 버전 8은 AArch64[10] 및 AArch32[10]에 대해 응용 프로그램(EL0), 운영 체제(EL1), 하이퍼바이저(EL2) 및 보안 모니터/펌웨어(EL3)의 네 가지 예외 수준을 구현한다.
모놀리식 커널 OS는 커널이 슈퍼바이저 모드에서 작동하고, 애플리케이션이 사용자 모드에서 작동한다. 마이크로커널 등에서는 반드시 이런 구분이 이루어지는 것은 아니다.
사용자 모드에서 커널 모드로의 전환은 많은 시스템에서 큰 비용이 든다. 기본적인 시스템 콜인 getpid를 실측해보면, 많은 머신에서 1000~1500 사이클이 걸린다. 그중 약 100 사이클이 실제 모드 전환(사용자에서 커널 공간으로 70 사이클, 돌아오는 데 40 사이클)이고, 나머지는 "커널 오버헤드"이다.[26][27] 마이크로커널은 주로 보안과 간결성을 위해 특권 모드에서 실행하는 코드의 양을 최소화하려고 하지만, 이로 인해 성능이 희생되는 경우가 많다.
4. 2. 가상화 기술에서의 활용
인텔과 AMD가 출시한 최근의 CPU는 하이퍼바이저가 링 0 하드웨어 접근을 제어할 수 있게 하는 x86 가상화 명령을 제공한다. 인텔 VT-x(코드이름 Vanderpool)와 AMD-V(코드이름 Pacifica)는 서로 호환되지는 않지만, 둘 다 새로운 "링-1"을 만들어내는데, 이로써 게스트 운영 체제가 링 0 동작을 호스트 운영 체제나 다른 게스트 운영 체제에 영향을 미치지 않고도 네이티브하게 수행할 수 있다.[35]이러한 설계 구조에 대한 관심은 Xen VMM 소프트웨어의 확산, Tanenbaum–Torvalds 논쟁의 단일 커널 대 마이크로커널에 대한 (특히 Usenet 뉴스 그룹 및 웹 포럼에서) 진행 중인 논의, Microsoft의 NGSCB 이니셔티브의 일부인 "Ring-1" 설계 구조, Intel VT-x (이전의 Vanderpool)와 같은 x86 가상화 기반 하이퍼바이저의 등장과 함께 다시 높아졌다.
최근 CPU 아키텍처(인텔의 x86 아키텍처 등)는 어느 정도의 링 프로텍션 기능을 가지고 있다.
AArch64는 링에 해당하는 기능으로 예외 레벨(Exception Level)을 4단계로 지원하며, 원칙적으로 이들을 모두 사용한다. 가장 특권이 큰 EL3는 펌웨어 및 보안 감시 기능의 일부, EL2는 하이퍼바이저, EL1은 OS 커널, EL0는 사용자 모드에 할당된다. EL3는 추가로 지원된 예외 레벨이며, 지원되지 않는 CPU에서는 EL2가 최고가 된다. 보안 감시 기능은 원래 EL3에서 구현할 것을 예상했지만, 그 목적상 공격에 굴복하면 시스템 전체에 피해가 미치므로, 보안 감시 기능은 EL2 이하의 환경으로 구현하고, EL3는 EL2 이하의 각 환경 간의 다리 역할을 하는 구성으로 변경되었다.
최근 인텔과 AMD의 CPU는 하이퍼바이저를 위한 x86 가상화 명령어를 제공하며, 하이퍼바이저가 링 0의 하드웨어 접근을 제어할 수 있다. 인텔 VT-x와 AMD-V는 서로 호환되지 않지만, 둘 다 새롭게 링 0보다 더 높은 권한 수준의 상태[30]를 제공한다. 따라서 게스트 OS에 전혀 수정 없이, 게스트 OS가 링 0 명령을 실행해도 호스트 OS나 다른 게스트 OS에 영향을 주지 않도록 할 수 있다[31]。
4. 3. 보안 강화
Multics 운영 체제가 도입한 보호 링은 여러 겹으로 구성되어 시스템 보안을 강화하는 혁신적인 개념이었다. 대부분의 범용 시스템은 두 개의 링(커널 모드용 링 0, 사용자 공간용 링 3)만 사용하지만,[21] x86 아키텍처를 포함한 많은 최신 CPU는 링 보호 기능을 제공한다. OS/2는 세 개의 링을 사용했고(링 0은 커널 및 장치 드라이버, 링 2는 권한 있는 코드, 링 3은 권한 없는 코드),[8] OpenVMS는 네 개의 모드(커널, Executive, Supervisor, User)를 사용했다.하드웨어는 특수 레지스터를 통해 현재 실행 중인 스레드 (컴퓨팅)의 링을 인식하며, 링 간 제어 전달 및 메모리 접근 유형을 제한한다. x86의 'gate' 구조는 하위 레벨 링의 진입점으로 안전하게 제어를 전송하며, 슈퍼바이저 호출 역할을 한다. ARM v7은 세 가지 권한 수준(응용 프로그램, 운영 체제, 하이퍼바이저)을, v8은 네 가지 예외 수준(응용 프로그램, 운영 체제, 하이퍼바이저, 보안 모니터/펌웨어)을 구현한다.
링 보호는 프로세서 모드와 결합될 수 있으며, 효과적인 사용을 위해서는 하드웨어와 운영 체제 간 긴밀한 협력이 필요하다. 운영 체제는 지원 플랫폼에 따라 링 사용을 제한할 수 있으며, 보안 모델은 "커널" 및 "사용자"로 단순화되기도 한다. 궁극적으로 CPU 모드의 목적은 소프트웨어에 의한 시스템 손상 및 보안 위반으로부터 하드웨어를 보호하는 것이다.
마이크로커널 운영 체제는 보안 및 간결성을 위해 권한 있는 모드에서 실행되는 코드 양을 최소화하지만, 성능 희생이 발생할 수 있다. 운영 체제는 개별 리소스에 대해 다양한 접근 권한을 제공하며, 링은 계층적 권한 구조를 나타낸다. 링 보호는 컴퓨터 아키텍처 내에서 권한의 계층적 레벨로 구성되며, 하드웨어 또는 마이크로프로그래밍 레벨로 제공된다. 링은 가장 높은 권한 레벨(링 0)에서 가장 낮은 권한 레벨까지 계층을 형성하며, 링 0은 하드웨어와 직접 상호 작용한다.
특별한 게이트는 외부 링에서 내부 링 리소스에 접근하는 것을 제어하여 보안을 강화한다. 예를 들어, 하드웨어 접근은 링 1의 장치 드라이버에서 수행되어야 하며, 링 3의 스파이웨어는 웹 카메라를 켤 수 없다. 웹 브라우저와 같은 프로그램은 네트워크 접근을 위해 더 작은 번호의 링에 요청해야 한다.
최근 Xen VMM, 모놀리식 커널과 마이크로커널 논쟁, Microsoft NGSCB의 "Ring-1" 구조, Intel VT-x 등 펌웨어 내장형 하이퍼바이저 등장으로 링 보호에 대한 관심이 높아졌다.
AArch64는 링에 해당하는 예외 레벨을 4단계(EL3, EL2, EL1, EL0)로 지원하며, EL3는 펌웨어 및 보안 감시, EL2는 하이퍼바이저, EL1은 OS 커널, EL0는 사용자 모드에 할당된다. 하드웨어는 링 간 제어 이동을 제한하고 메모리 접근을 각 링 레벨에 따라 제한하며, 콜 게이트 방식과 유사한 시스템 콜 방식을 채택한다.
링 프로텍션의 효과적인 이용에는 하드웨어와 운영 체제의 긴밀한 협력이 필요하며, 여러 플랫폼에서 작동하도록 설계된 운영 체제는 공통으로 사용할 수 있는 일부 링만 사용한다. CPU 아키텍처는 실제 운영 체제가 활용하는 것 이상의 유연성을 제공하며, 복잡한 CPU 모드를 제대로 활용하려면 OS와 CPU의 긴밀한 협력이 필요하다.
5. 한국적 관점 및 시사점
보호 링 및 프로세서 모드 기술은 한국의 IT 환경에서 보안, 안정성, 기술 경쟁력 등 다양한 측면에 영향을 미친다.
운영 체제와 CPU 아키텍처의 긴밀한 협력은 시스템의 보안 및 안정성을 향상시키지만, 특정 CPU 아키텍처에 대한 의존성을 높여 비용 효율성을 저하시킬 수 있다. 예를 들어, 윈도우는 과거 PowerPC나 MIPS 등 x86 이외의 아키텍처도 지원했기 때문에 2개의 링(링0과 링3)만 사용한다.[32] 마이크로커널은 보안과 간결성을 위해 특권 모드에서 실행하는 코드의 양을 최소화하지만, 성능 저하로 이어질 수 있다.
5. 1. 기술 발전 및 경쟁력 강화
운영 체제가 CPU 아키텍처의 복잡한 CPU 모드군을 제대로 활용하려면 긴밀한 협력이 필요하며, 이는 OS가 특정 CPU 아키텍처에 의존하게 만든다. OS와 CPU가 서로를 고려하여 설계된 경우(예: Multics)에는 문제가 없지만, OS가 여러 플랫폼에서 동작하도록 설계된 경우에는 대부분의 CPU 모드 기능이 무시된다. 예를 들어, Windows는 과거 PowerPC나 MIPS 등 x86 이외의 아키텍처도 지원했기 때문에 2개의 링(링0과 링3)만 사용한다.[32]오늘날 OS와 하드웨어가 긴밀하게 상호 의존하는 것은 보안과 안정성 측면에서는 좋지만, 비용 효율성이 떨어진다. 마이크로커널은 보안과 간결성을 위해 특권 모드에서 실행하는 코드의 양을 최소화하려 하지만, 이는 성능 저하로 이어질 수 있다.
참조
[1]
컨퍼런스
An Augmented Capability Architecture to Support Lattice Security and Traceability of Access
[2]
컨퍼런스
Design and implementation of the J-SEAL2 mobile agent kernel
[3]
웹사이트
Envisioning a Simplified Intel Architecture for the Future
https://www.intel.co[...]
2024-05-28
[4]
학술지
A Hardware Architecture for Implementing Protection Rings
http://www.multician[...]
1972-03
[5]
웹사이트
Multics Glossary - ring
http://www.multician[...]
[6]
서적
The Multics Virtual Memory, part 2
http://www.bitsavers[...]
Honeywell Information Systems
1972-06
[7]
서적
Windows Internals Part 1
Microsoft Press
[8]
웹사이트
Presentation Device Driver Reference for OS/2 – 5. Introduction to OS/2 Presentation Drivers
http://cyberkinetica[...]
2015-06-13
[9]
서적
ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition
https://developer.ar[...]
Arm Ltd.
[10]
서적
Arm Architecture Reference Manual Armv8, for A-profile architecture
https://developer.ar[...]
Arm Ltd.
[11]
웹사이트
supervisor mode
https://foldoc.org/S[...]
1995-02-15
[12]
컨퍼런스
On µ-Kernel Construction
https://os.itec.kit.[...]
1995-12
[13]
컨퍼런스
Why aren't operating systems getting faster as fast as hardware?
1990
[14]
학술지
Operating systems in a changing world
1994-04
[15]
잡지
Kernel Mode Databases: A DBMS Technology For High-Performance Applications
http://www.ddj.com/d[...]
2008-05
[16]
서적
Intel® 64 and IA-32 Architectures Software Developer's Manual, Volume 3C
https://www.intel.co[...]
Intel Cooperation
[17]
서적
Microsoft Windows Internals
Microsoft Press
2005
[18]
서적
Microprocessor 8086: Architecture, Programming and Interfacing
PHI Learning
[19]
서적
Operating Systems: Principles and Practice
Recursive Books
2014-08-21
[20]
웹사이트
Hardware Virtualization: the Nuts and Bolts
https://www.anandtec[...]
2021-03-13
[21]
서적
Microsoft Windows Internals
https://archive.org/[...]
Microsoft Press
[22]
문서
An Augmented Capability Architecture to Support Lattice Security and Traceability of Access
http://doi.ieeecompu[...]
[23]
문서
Design and Implementation of the J-SEAL2 Mobile Agent Kernel
http://doi.ieeecompu[...]
[24]
문서
Presentation Device Driver Reference for OS/2 - 5. Introduction to OS/2 Presentation Drivers
http://www.warpspeed[...]
[25]
문서
supervisor mode
http://foldoc.org/in[...]
[26]
컨퍼런스
On µ-Kernel Construction
http://i30www.ira.uk[...]
1995-12
[27]
컨퍼런스
Why aren't operating systems getting faster as fast as hardware?
1990
[28]
학술지
Operating systems in a changing world
http://doi.acm.org/1[...]
1994-04
[29]
잡지
"Kernel Mode Databases: A DBMS Technology For High-Performance Applications"
http://www.ddj.com/d[...]
2008-05
[30]
문서
링0보다도 고위이므로 「링-1」(링・마이너스1)이라고 비유되기도 한다
[31]
웹사이트
Intel VT vs. AMD Pacifica
http://www.networkco[...]
CMP
2005-11-01
[32]
서적
Microsoft Windows Internals
Microsoft Press
[33]
문서
An Augmented Capability Architecture to Support Lattice Security and Traceability of Access
http://doi.ieeecompu[...]
[34]
문서
Design and Implementation of the J-SEAL2 Mobile Agent Kernel
http://doi.ieeecompu[...]
[35]
웹인용
Intel VT vs. AMD Pacifica
http://www.networkco[...]
CMP
2008-07-16
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com