~에 따르면http://www.linfo.org/kernel_mode.html7항:
사용자 프로세스가 시스템 호출을 통해 커널 코드의 일부를 실행하면 해당 프로세스는 일시적으로 커널 프로세스가 되어 커널 모드에 있게 됩니다. 커널 모드에서 프로세스는 루트(즉, 관리) 권한과 중요한 시스템 리소스에 대한 액세스 권한을 갖습니다. 전체 커널은 프로세스가 아니라 커널 모드에서만 실행되는 프로세스의 컨트롤러입니다. 커널이 프로세스의 요청을 만족시키면 프로세스를 사용자 모드로 되돌립니다.
이 라인에 대해서는 잘 모르겠습니다.
커널 모드에서 프로세스는 루트(즉, 관리) 권한과 중요한 시스템 리소스에 대한 액세스 권한을 갖습니다.
루트로 실행되지 않는 사용자 공간 프로세스에 루트 권한이 있는 이유는 무엇입니까? 루트로 실행되는 사용자 공간 프로세스와 어떻게 다른가요?
답변1
루트 및 루트가 아닌 권한은 모두 사용자 공간과 관련됩니다. 예를 들어 루트 사용자는 애플리케이션을 설치할 수 있지만 일반 사용자는 설치할 수 없습니다.
그러나 루트 사용자라도 몇 가지 제한 사항이 있습니다. 이러한 제한은 사용자 공간과 커널 공간을 구별하는 운영 체제 설계에 의해 부과됩니다. 예를 들어, 루트 사용자라도 드라이버가 해당 옵션을 제공하지 않으면 하드 드라이브 회전 속도를 변경할 수 없습니다(해당 기능을 허용하는 드라이버를 작성할 수는 있지만 하드웨어에 직접 액세스하지는 않습니다). , 그러나 드라이버를 통해 하드웨어에 액세스).
그 이유는 하드웨어의 실제 제어는 커널 공간에서 이루어지며, 사용자 공간이 하드웨어에 접근하는 방식은 시스템 호출을 통해서 이루어지기 때문입니다. 커널 공간은 사용자의 장소가 아닙니다 :)
귀하의 질문에 답하기 위해 프로세스는 루트 권한을 얻는 대신 커널 모드로 전환하여 모든 시스템 리소스에 대한 무제한 액세스를 허용합니다. 그러나 이 무제한 액세스는 커널 모드에서 실행되는 코드에만 적용되므로 프로세스에는 해당 액세스 권한이 없습니다. 커널 코드의 호출만 사용합니다.
커널 모드에서 실행되는 코드는 시스템에 대해 완전히 제한 없이 액세스할 수 있습니다.
답변2
(간단히 설명하겠습니다.)
이론적으로 특권에는 두 가지 차원이 있습니다.
컴퓨터명령어 세트 아키텍처(ISA)는 기계의 특정 정보 및/또는 기능을 보호합니다.
이것운영 체제(운영 체제)은 애플리케이션과 통신의 생태계를 만듭니다. 그 핵심에는 종속성 없이 ISA에서 실행되는 프로그램인 커널이 있습니다.
오늘날의 운영 체제는 오늘날처럼 컴퓨터를 사용할 수 있도록 다양한 작업을 수행합니다. 매우(아주) 단순화된 관점에서 보면 커널은 컴퓨터가 실행하는 유일한 프로그램이라고 생각할 수 있습니다. 애플리케이션, 프로세스, 사용자는 모두 운영 체제, 특히 커널이 생성한 생태계의 산물입니다.
운영 체제와 관련된 사용자(공간) 권한에 대해 이야기할 때 운영 체제에서 관리, 부여 및 시행되는 권한에 대해 이야기합니다. 예를 들어, 특정 디렉터리의 데이터에 대한 액세스를 제한하는 파일 권한은 커널에 의해 시행됩니다. 파일과 관련된 일부 ID를 살펴보고 권한을 나타내는 일부 비트를 해석한 후 데이터를 가져오거나 이를 거부합니다.
ISA의 권한 계층은 커널이 해당 목적에 사용하는 도구를 제공합니다. 구체적인 세부 사항은 매우 다양하지만 일반적으로 CPU에서 실행되는 프로그램이 I/O를 수행하고 ISA에서 제공하는 명령을 사용하는 커널 모드와 사용자 모드가 있습니다. 제한된.
예를 들어, 특정 메모리 주소에 데이터를 쓰는 명령어를 읽을 때 커널 모드의 CPU는 간단히 데이터를 특정 메모리 주소에 쓸 수 있는 반면, 사용자 모드에서는 먼저 메모리 주소가 메모리 주소 내에 있는지 확인하기 위해 몇 가지 검사를 수행합니다. 데이터 쓰기에 허용되는 주소 범위입니다. 주소가 쓰기 불가능하다고 판단되면 일반적으로 ISA는 커널 모드로 전환하고 커널의 일부인 다른 명령 스트림 실행을 시작하며 올바른 작업(TM)을 수행합니다.
이것은 한 프로그램이 다른 프로그램의 실행을 방해하지 않도록 하기 위한 실행 전략의 예입니다. 따라서 현재 방문 중인 웹페이지의 JavaScript로 인해 온라인 뱅킹 애플리케이션이 의심스러운 거래를 수행할 수 없습니다.
커널 모드에서는 커널 모드에서 실행되는 프로그램이 올바른 작업을 수행한다고 가정하고 올바른 작업을 강제하기 위해 다른 어떤 것도 트리거되지 않습니다. 이것이 바로 커널 모드에서 프로그램이 운영 체제 생태계의 추상 규칙과 개념을 준수하도록 강제하는 것이 없는 이유입니다. 이것이 커널 모드에서 실행되는 프로그램이 루트 사용자만큼 강력한 이유입니다.
기술적으로 말하면 커널 모드는 단순히 운영 체제의 루트가 되는 것보다 훨씬 강력합니다.