![사용자 모드에서 프로세스를 커널 모드로 전환합니다. 그러면 해당 프로세스는 루트 권한을 갖게 될까요?](https://rvso.com/image/52106/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EB%AA%A8%EB%93%9C%EC%97%90%EC%84%9C%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EC%BB%A4%EB%84%90%20%EB%AA%A8%EB%93%9C%EB%A1%9C%20%EC%A0%84%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4.%20%EA%B7%B8%EB%9F%AC%EB%A9%B4%20%ED%95%B4%EB%8B%B9%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%8A%94%20%EB%A3%A8%ED%8A%B8%20%EA%B6%8C%ED%95%9C%EC%9D%84%20%EA%B0%96%EA%B2%8C%20%EB%90%A0%EA%B9%8C%EC%9A%94%3F.png)
에 따르면http://www.linfo.org/kernel_mode.html단락 7에서:
사용자 프로세스가 시스템 호출을 통해 커널 코드의 일부를 실행하면 해당 프로세스는 일시적으로 커널 프로세스가 되어 커널 모드에 있게 됩니다. 커널 모드에 있는 동안 프로세스는 루트(즉, 관리) 권한과 주요 시스템 리소스에 대한 액세스 권한을 갖습니다. 프로세스가 아닌 프로세스의 컨트롤러인 전체 커널은 커널 모드에서만 실행됩니다. 커널이 프로세스의 요청을 만족시키면 프로세스를 사용자 모드로 되돌립니다.
라인에 관해서는 나에게 분명하지 않습니다.
커널 모드에 있는 동안 프로세스는 루트(즉, 관리) 권한과 주요 시스템 리소스에 대한 액세스 권한을 갖습니다.
루트가 아닌 사용자 공간 프로세스가 어떻게 루트 권한을 갖게 됩니까? 루트로 실행되는 사용자 공간 프로세스와 어떻게 다른가요?
답변1
루트 권한과 루트가 아닌 권한은 모두 사용자 공간과 관련된 것입니다. 예를 들어 루트 사용자는 애플리케이션을 설치할 수 있지만 일반 사용자는 설치할 수 없습니다.
그러나 루트 사용자라도 몇 가지 제한 사항이 있습니다. 이러한 제한은 운영 체제 설계에 따라 부과되며 사용자 공간과 커널 공간을 구별합니다. 예를 들어 루트 사용자라도 드라이버를 통해 해당 옵션이 제공되지 않으면 하드 디스크 회전 속도를 변경할 수 없습니다(해당 기능을 허용하는 드라이버를 작성할 수 있지만 그러면 하드웨어에 직접 액세스하는 것이 아니라 드라이버를 통해 액세스하게 됩니다.)
그 이유는 하드웨어의 실제 제어가 모두 커널 공간에서 이루어지고 사용자 공간이 하드웨어에 액세스하는 방식이 시스템 호출을 통해서 이루어지기 때문입니다. 커널 공간은 사용자를 위한 공간이 아닙니다 :)
귀하의 질문에 대답하려면 루트 권한을 얻는 프로세스가 아니라 모든 시스템 리소스에 무제한 액세스를 허용하는 커널 모드로 전환하는 것입니다. 그러나 이러한 무제한 액세스는 커널 모드에서 실행되는 코드에만 사용할 수 있으므로 프로세스에는 없습니다. 커널 코드 호출만 사용합니다.
커널 모드에서 실행되는 코드는 시스템에 완전히 제한 없이 액세스할 수 있습니다.
답변2
(간단히 설명하겠습니다.)
이론적으로 권한에는 두 가지 차원이 있습니다.
컴퓨터명령어 세트 아키텍처(ISA)는 기계의 특정 정보 및/또는 기능을 보호합니다.
그만큼운영 체제(OS) 애플리케이션과 통신을 위한 생태계를 조성합니다. 그 핵심에는 어떤 종류의 종속성 없이 ISA에서 실행될 수 있는 프로그램인 커널이 있습니다.
오늘날의 운영 체제는 우리가 오늘날처럼 컴퓨터를 사용할 수 있도록 매우 다양한 작업을 수행합니다. 매우(매우, 매우) 단순화된 관점에서 커널이 컴퓨터에 의해 실행되는 유일한 프로그램이라고 상상할 수 있습니다. 애플리케이션, 프로세스 및 사용자는 모두 OS, 특히 커널에 의해 생성된 생태계의 인공물입니다.
운영 체제와 관련하여 사용자(공간) 권한에 대해 이야기할 때 운영 체제에서 관리, 부여 및 시행하는 권한에 대해 이야기합니다. 예를 들어, 특정 디렉터리에서 데이터 가져오기를 제한하는 파일 권한은 커널에 의해 시행됩니다. 파일과 관련된 일부 ID를 보고 권한을 나타내는 일부 비트를 해석한 다음 데이터를 가져오거나 이를 거부합니다.
ISA 내의 권한 계층은 커널이 해당 목적에 사용하는 도구를 제공합니다. 구체적인 세부 사항은 많이 다르지만 일반적으로 CPU에서 실행되는 프로그램이 I/O를 수행하고 ISA에서 제공하는 명령어를 사용하는 커널 모드와 I/O 및 명령어가 있는 사용자 모드가 있습니다. 제약됨.
예를 들어, 특정 메모리 주소에 데이터를 쓰는 명령을 읽을 때 커널 모드의 CPU는 단순히 특정 메모리 주소에 데이터를 쓸 수 있는 반면, 사용자 모드에서는 먼저 메모리 주소가 특정 메모리 주소에 있는지 확인하기 위해 몇 가지 검사를 수행합니다. 데이터를 쓸 수 있는 허용 주소 범위. 주소가 기록되지 않을 수 있다고 판단되면 일반적으로 ISA는 커널 모드로 전환하고 커널의 일부인 다른 명령 스트림 실행을 시작하며 올바른 작업을 수행합니다(TM).
이는 한 프로그램이 다른 프로그램을 방해하지 않도록 하는 시행 전략의 한 예입니다. 현재 방문 중인 웹페이지의 자바스크립트가 온라인 뱅킹 애플리케이션에서 의심스러운 거래를 수행할 수 없도록 합니다.
커널 모드에서는 올바른 일을 시행하기 위해 다른 어떤 것도 실행되지 않습니다. 커널 모드에서 실행되는 프로그램이 올바른 일을 하고 있다고 가정합니다. 그렇기 때문에 커널 모드에서는 프로그램이 OS 생태계의 추상 규칙과 개념을 따르도록 강제할 수 없습니다. 이것이 바로 커널 모드에서 실행되는 프로그램이 루트 사용자만큼 강력한 이유입니다.
기술적으로 커널 모드는 OS의 루트 사용자가 되는 것보다 훨씬 더 강력합니다.