
일부 기사에서는 모듈/드라이버가 커널 형성에 참여하므로 커널 공간에 속한다고 말합니다. (참조:http://www.freesoftwaremagazine.com/articles/drivers_linux)
다른 사람들은 Ring0(하드웨어와 직접 상호 작용)만이 커널 공간(Ring2에 있는 모듈/드라이버 제외)이라고 할 수 있다고 말합니다. (참조:http://jaseywang.me/2011/01/04/vfs-kernel-space-user-space-2/)
어떤 관점이 옳은지 말해 줄 수 있는 사람이 있나요?
답변1
AMD64 및 클론, ix86에서 Linux는 링 0과 3만 사용합니다. 다른 일반적인 아키텍처에는 "링"이 없으므로 이를 완전히 사용하는 것은 완전히 이식성이 없습니다. 게다가 리눅스는 모놀리식이다. 전체 링 아이디어는 마이크로커널을 링 0에서 실행할 수 있고, 서비스 프로세스가 더 높은 링에서 실행되어 마이크로커널을 망칠 수 없도록 하고, 마지막으로 사용자 공간이 가장 높은 링에서 실행되도록 하는 것입니다. 많은 피해.
답변2
참고자료를 제공해 주실 수 있나요? 나는 당신이 (내가 아는 한) 링 0(커널)과 3(사용자)만 사용하는 Linux에 대해 이야기하고 있다고 가정합니다.
편집하다:
나는 그것이 운영 체제 설계에 달려 있다고 생각합니다. 마이크로커널 아키텍처에서 내부 링을 사용할 수 있습니다. 특정 시스템(예: Linux)에 대해 문의하고 계십니까? 나는 특정 OS에 대해서만 이 질문에 대답하는 것이 가능하다고 생각합니다. 그러나 대부분의 경우 x86 기반 OS는 "커널"(0)과 "사용자"(3)만 사용합니다.
답변3
가상화 상태에서 실행되지 않는 기존 운영 체제의 경우 커널 공간과 ring0은 권한 측면에서 동의어입니다. 그러나 현재의 차이점과 공유하는 공통점을 강조하기 위해 별도로 설명해야 합니다.
Kernel space
- OS에는 일반적으로 커널 공간과 사용자 공간이라는 두 가지 실행 모드가 있습니다. 커널 공간은 스케줄러, 장치 드라이버 등과 같은 OS의 권한 있는 코드가 있는 곳입니다. 그 임무는 전체 시스템을 관리하고 안정적인 방식으로 실행되도록 하는 것입니다. 사용자 공간에는 커널 공간에서 제공하는 기능을 사용하는 웹 브라우저 등의 프로세스가 포함됩니다.
Rings
- Intel 프로세서에는 4가지 권한 수준의 작동이 제공됩니다. 이것을 링이라고 합니다. 링 0은 가장 높은 권한을 갖고 링 3은 가장 낮은 권한을 갖습니다. 컴퓨터 메모리의 모든 영역에 이러한 수준이 표시될 수 있습니다. 링0에 의해 액세스하도록 표시된 메모리 영역은 링0에 있는 코드만 액세스할 수 있으며, 링3에 의해 액세스하도록 표시된 메모리 영역은 모든 링에서 액세스할 수 있습니다. 이는 낮은 권한 수준(높은 링)에서 신뢰도가 낮은 코드를 실행하고 더 높은 권한 수준(낮은 링)에서 신뢰도가 높은 코드를 실행하는 경우 전자가 후자에 영향을 미칠 수 없도록 보장하는 메커니즘을 제공합니다. 프로그래밍 방식으로 링(권한 수준)을 설정할 수 있는 코드가 실행됩니다.
설계를 단순화하고 코드 이식성을 높이기 위해(ARM과 같은 비인텔 CPU에는 4링 아키텍처가 없음) 대부분의 OS는 4개의 링 중 2개만 사용합니다. 이는 일반적으로 ring0 및 ring3입니다. 커널은 ring0에서 실행되며 커널 공간을 구성합니다(내일 OS 개발자가 커널을 ring0 대신 ring1에서 실행하도록 만들었다면 ring1이 커널 공간을 구성하게 됩니다). 응용 프로그램은 링3에서 실행되며 사용자 공간을 구성합니다.
이는 대부분의 OS에서 따르는 규칙입니다. 그러나 내가 OS 개발자라면 원하는 방식으로 링 아키텍처를 자유롭게 사용할 수 있습니다. 다음 시나리오를 고려하십시오.
(캔사스=커널 공간,우리를=사용자 공간,DD=장치 드라이버 또는 커널 모듈,RX= 링 X)
- 캔사스r0에서,우리를r3에서 - 가장 일반적으로 사용됩니다. 예. 리눅스, 윈도우 등
- 캔사스r1에서,우리를r3 - 하이퍼바이저가 ring0에서 실행되는 가상화된 설정입니다.
- 캔사스r0에서,DDr1에서,우리를r3 - 일부 연구 프로젝트에서는 버그가 있는 장치 드라이버로부터 커널을 보호하기 위해 이 구성을 사용합니다.
- 캔사스r0에서,DDr3에서,우리를r3 - 마이크로커널은 이 구성을 사용합니다.
- 캔사스r0에서,우리를r0 - 모든 것이 같은 링에 있습니다. Microsoft의 Singularity와 같은 일부 연구 OS에서는 이 구성을 사용합니다. KS는 다른 메커니즘을 사용하여 미국으로부터 보호됩니다. (MS DOS, Windows 98 등과 같은 이전 OS에서는 이것을 사용했습니다. KS는 미국에서 보호되지 않아 OS 충돌이 자주 발생했습니다.)
- 캔사스r3에서,우리를r0에서 - 터무니없습니다. 미국에 더 많은 특권을 부여하면 미국이 KS를 부패시킬 수 있습니다. 이러한 구성을 본 적이 없지만 이러한 OS를 작성하고 싶다면 아무것도 막을 수 없습니다.
참고: 글을 쓰는 동안 x86 아키텍처를 Intel CPU로 부르는 등 몇 가지 단순화 작업을 수행했습니다. 지금은 복잡한 문제로 고민하지 마세요.