보호 링
이것은 세그먼트의 전체 계층과 그들 사이의 권한을 허용합니다. 크로스 세그먼트 통화가 시스템 통화와 똑같은 소리를 보았을 수도 있습니다. Linux X86 어셈블리를 본 적이 있다면 시스템 호출을하는 표준 방법은 int 0x80이며, 이는 인터럽트 0x80입니다 . 인터럽트는 프로세서를 중지하고 인터럽트 게이트로 이동하여 통화 게이트와 동일하게 작동합니다. 권한 레벨을 변경하고 다른 코드 영역으로 튀어 나옵니다 .
Linux는 보호 링을 사용합니다?
우리는 운영 체제의 주요 작업 중 하나가 보안을 구현하는 방법을 언급했습니다. 즉, 한 응용 프로그램이나 사용자가 시스템에서 실행중인 다른 응용 프로그램을 방해 할 수 없습니다. 이는 응용 프로그램이 서로 메모리 나 파일을 덮어 쓰지 않아야하며 시스템 정책에 의해 지시 된 시스템 리소스에만 액세스 할 수 있어야 함을 의미합니다.
그러나 응용 프로그램이 실행될 때 프로세서를 독점적으로 사용합니다. 다음 장에서 프로세스를 조사 할 때 이것이 어떻게 작동하는지 봅니다. 애플리케이션이 소유 한 메모리에만 액세스하는지 확인하십시오. 필수 요점은 하드웨어가 이러한 규칙을 시행 할 책임이 있다는 것입니다.
우리가 검사 한 시스템 통화 인터페이스는 시스템 리소스에 대한 응용 프로그램의 게이트웨이입니다. 커널에 시스템 호출을 통해 응용 프로그램이 리소스를 요청하도록함으로써 커널은 어떤 종류의 액세스를 제공 할 수 있는지에 대한 규칙을 시행 할 수 있습니다. 예를 들어, 응용 프로그램이 Open () 시스템 호출을 디스크에서 파일을 열면 파일 권한에 대해 사용자의 권한을 확인하고 액세스 허용 또는 거부합니다.
4 . 1 . 1 권한 수준
하드웨어 보호는 일반적으로 핵심 작업 세트 주변의 동심원 링 세트로 볼 수 있습니다.
x86의 특권 레벨
그림 4 . 1 . 1 . 1 링
내면에서 대부분의 고리는 가장 보호 된 지침입니다. 커널 만 호출 해야하는 사람들. 예를 들어, 프로세서를 중단하려는 HLT 명령어는 전체 컴퓨터가 작동하지 않기 때문에 사용자 애플리케이션에서 실행할 수 없습니다. 그러나 컴퓨터가 합법적으로 종료 될 때 커널은이 명령어를 호출 할 수 있어야합니다. 1
각 내부 링은 추가 아웃 링으로 보호되는 지침에 액세스 할 수 있지만 링의 추가로 보호되는 것은 아닙니다. 모든 아키텍처가 위와 같이 여러 수준의 고리를 가지고있는 것은 아니지만 대부분은 적어도 “커널”및 “사용자”레벨을 제공합니다.
4 . 1 . 1 . 1 386 보호 모델
386 보호 모델에는 4 개의 링이 있지만 대부분의 운영 체제 (예 : Linux 및 Windows)는 2 개의 링 만 사용하여 많은 이산 보호 레벨을 허용하지 않는 다른 아키텍처와의 호환성을 유지합니다.
386은 시스템에서 실행되는 각 응용 프로그램 코드를 사용하여 권한을 유지합니다 코드 디스크립터, 무엇보다도 특권 수준을 설명합니다. 응용 프로그램 코드를 실행하면 코드 디스크립터가 설명하는 영역 밖에서 다른 코드로 점프하면 대상의 권한 수준이 확인됩니다. 현재 실행중인 코드보다 높으면 하드웨어에 의해 점프가 허용되지 않습니다 (및 응용 프로그램은 충돌합니다).
4 . 1 . 1 . 2 권한 제기
응용 프로그램은 시스템 통화를 구현하도록 지시와 같이 허용하는 특정 통화만으로 권한 수준 만 올릴 수 있습니다. 이들은 일반적으로 a라고합니다 게이트를 호출하십시오 그것들은 물리적 게이트처럼 기능하기 때문입니다. 그렇지 않으면 뚫을 수없는 벽을 통한 작은 입구. 해당 명령이 호출되면 하드웨어가 실행중인 애플리케이션을 완전히 멈추고 핸즈 제어가 커널을 어떻게 제어하는지 보았습니다. 커널은 게이트 키퍼 역할을해야합니다. 게이트를 통해 불쾌한 것이없는 것을 보장합니다. 이것은 시스템 통화 인수를주의 깊게 점검하여 아무 것도하지 않아야하는지 확인해야한다는 것을 의미합니다 (가능하다면 보안 버그입니다). 커널이 가장 안쪽 링에서 실행되면 원하는 작업을 수행 할 권한이 있습니다. 완료되면 제어가 응용 프로그램으로 다시 반환됩니다.
4 . 1 . 1 . 3 빠른 시스템 호출
위에서 설명한 트랩의 한 가지 문제는 프로세서가 구현하는 데 매우 비쌉니다. 컨텍스트가 전환되기 전에 저장해야 할 상태가 많이 있습니다. 현대 프로세서는이 오버 헤드를 깨달았고 그것을 줄이기 위해 노력했습니다.
위에서 설명한 콜 게이트 메커니즘을 이해하려면 프로세서가 사용하는 독창적이지만 복잡한 세분화 체계를 조사해야합니다. 세분화의 원래 이유는 그림 4와 같이 주소 레지스터에서 사용 가능한 16 비트 이상을 사용할 수 있었기 때문입니다 . 1 . 1 . 삼 . 1, x86 세분화 주소 지정.
세분화 프로세서의 주소 공간을 청크로 나누어 주소 공간을 확장. 프로세서는 특수 세그먼트 레지스터를 유지하고 주소는 세그먼트 레지스터 및 오프셋 조합으로 지정됩니다. 세그먼트 레지스터의 값은 최종 주소를 찾기 위해 오프셋 부분에 추가됩니다.
그림 4 . 1 . 1 . 삼 . 1 x86 세분화 주소 지정
X86이 32 비트 레지스터로 이동했을 때, 세분화 체계는 다른 형식으로 유지되었습니다. 고정 세그먼트 크기 대신 세그먼트가 어떤 크기로든 허용됩니다. 즉, 프로세서는 이러한 모든 다른 세그먼트와 크기를 추적해야하며 사용합니다 설명자. 모든 사람이 이용할 수있는 세그먼트 디스크립터는 글로벌 디스크립터 테이블 또는 짧은 GDT. 각 프로세스에는 GDT의 항목을 가리키는 여러 레지스터가 있습니다. 이들은 프로세스가 액세스 할 수있는 세그먼트입니다 (또한 현지의 설명자 테이블, 그리고 모두 intera
키 포인트:
- Linux는 응용 프로그램과 사용자 간의 간섭을 방지하기 위해 보안을 구현합니다.
- 하드웨어는 메모리 및 리소스 액세스에 관한 규칙을 시행합니다.
- 시스템 호출 인터페이스는 시스템 리소스에 액세스하기위한 응용 프로그램의 관문 역할을합니다.
- 권한 수준은 특정 지침 및 운영에 대한 액세스를 결정합니다.
- 386 보호 모델에는 4 개의 링이 있지만 대부분의 운영 체제는 2 개만 사용합니다.
- 각 응용 프로그램 코드에는 권한 수준을 정의하는 코드 디스크립터가 있습니다.
- 응용 프로그램은 시스템 통화와 같은 특정 통화를 통해서만 권한 수준을 높일 수 있습니다.
- 커널은 시스템 호출의 보안을 보장하기 위해 게이트 키퍼 역할을합니다.
- 빠른 시스템 통화는 컨텍스트 전환의 오버 헤드를 줄이기위한 목표.
- x86 세분화 체계는 프로세서의 주소 공간을 확장합니다.
질문:
- 운영 체제에서 보안을 구현하는 목적은 무엇입니까?
- 하드웨어는 메모리 액세스 규칙을 어떻게 시행합니까??
- 시스템 리소스에 액세스 할 때 시스템이 인터페이스를 호출하는 역할은 어떤 역할을합니까??
- 권한 수준은 하드웨어 보호에 어떻게 사용됩니까??
- 386 보호 모델에는 몇 개의 링이 있습니까??
- 코드 디스크립터 란 무엇입니까??
- 응용 프로그램이 어떻게 특권 수준을 높일 수 있습니까??
- 게이트 키퍼로서 커널의 역할은 무엇입니까?
- 빠른 시스템 호출의 목표는 무엇입니까??
- X86 프로세서에 세분화가 도입 된 이유는 무엇입니까??
- X86 세분화 체계는 어떻게 작동합니까??
- 세그먼트 설명자가 무엇이며 어디에 저장됩니까??
보호 링
이것은 세그먼트의 전체 계층과 그들 사이의 권한을 허용합니다. 크로스 세그먼트 통화가 시스템 통화와 똑같은 소리를 보았을 수도 있습니다. Linux X86 어셈블리를 본 적이 있다면 시스템 호출을하는 표준 방법은 int 0x80이며, 이는 인터럽트 0x80입니다 . 인터럽트는 프로세서를 중지하고 인터럽트 게이트로 이동하여 통화 게이트와 동일하게 작동합니다. 권한 레벨을 변경하고 다른 코드 영역으로 튀어 나옵니다 .
Linux는 보호 링을 사용합니다?
우리는 운영 체제의 주요 작업 중 하나가 보안을 구현하는 방법을 언급했습니다. 즉, 한 응용 프로그램이나 사용자가 시스템에서 실행중인 다른 응용 프로그램을 방해 할 수 없습니다. 이는 응용 프로그램이 서로 메모리 나 파일을 덮어 쓰지 않아야하며 시스템 정책에 의해 지시 된 시스템 리소스에만 액세스 할 수 있어야 함을 의미합니다.
그러나 응용 프로그램이 실행될 때 프로세서를 독점적으로 사용합니다. 다음 장에서 프로세스를 조사 할 때 이것이 어떻게 작동하는지 봅니다. 애플리케이션이 소유 한 메모리에만 액세스하는지 확인하십시오. 필수 요점은 하드웨어가 이러한 규칙을 시행 할 책임이 있다는 것입니다.
우리가 검사 한 시스템 통화 인터페이스는 시스템 리소스에 대한 응용 프로그램의 게이트웨이입니다. 커널에 시스템 호출을 통해 응용 프로그램이 리소스를 요청하도록함으로써 커널은 어떤 종류의 액세스를 제공 할 수 있는지에 대한 규칙을 시행 할 수 있습니다. 예를 들어, 응용 프로그램이 Open () 시스템 호출을 디스크에서 파일을 열면 파일 권한에 대해 사용자의 권한을 확인하고 액세스 허용 또는 거부합니다.
4 . 1 . 1 권한 수준
하드웨어 보호는 일반적으로 핵심 작업 세트 주변의 동심원 링 세트로 볼 수 있습니다.
x86의 특권 레벨
그림 4 . 1 . 1 . 1 링
내면에서 대부분의 고리는 가장 보호 된 지침입니다. 커널 만 호출 해야하는 사람들. 예를 들어, 프로세서를 중단하려는 HLT 명령어는 전체 컴퓨터가 작동하지 않기 때문에 사용자 애플리케이션에서 실행할 수 없습니다. 그러나 컴퓨터가 합법적으로 종료 될 때 커널은이 명령어를 호출 할 수 있어야합니다. 1
각 내부 링은 추가 아웃 링으로 보호되는 지침에 액세스 할 수 있지만 링의 추가로 보호되는 것은 아닙니다. 모든 아키텍처가 위와 같이 여러 수준의 고리를 가지고있는 것은 아니지만 대부분은 적어도 “커널”및 “사용자”레벨을 제공합니다.
4 . 1 . 1 . 1 386 보호 모델
386 보호 모델에는 4 개의 링이 있지만 대부분의 운영 체제 (예 : Linux 및 Windows)는 2 개의 링 만 사용하여 현재 많은 이산 보호 수준을 허용하는 다른 아키텍처와의 호환성을 유지합니다.
386은 시스템에서 실행되는 각 응용 프로그램 코드를 사용하여 권한을 유지합니다 코드 디스크립터, 무엇보다도 특권 수준을 설명합니다. 응용 프로그램 코드를 실행하면 코드 디스크립터가 설명하는 영역 밖에서 다른 코드로 점프하면 대상의 권한 수준이 확인됩니다. 현재 실행중인 코드보다 높으면 하드웨어에 의해 점프가 허용되지 않습니다 (및 응용 프로그램은 충돌합니다).
4 . 1 . 1 . 2 권한 제기
응용 프로그램은 시스템 통화를 구현하도록 지시와 같이 허용하는 특정 통화만으로 권한 수준 만 올릴 수 있습니다. 이들은 일반적으로 a라고합니다 게이트를 호출하십시오 그것들은 물리적 게이트처럼 기능하기 때문입니다. 그렇지 않으면 뚫을 수없는 벽을 통한 작은 입구. 해당 명령이 호출되면 하드웨어가 실행중인 애플리케이션을 완전히 멈추고 핸즈 제어가 커널을 어떻게 제어하는지 보았습니다. 커널은 게이트 키퍼 역할을해야합니다. 게이트를 통해 불쾌한 것이없는 것을 보장합니다. 이것은 시스템 통화 인수를주의 깊게 점검하여 아무 것도하지 않아야하는지 확인해야한다는 것을 의미합니다 (가능하다면 보안 버그입니다). 커널이 가장 안쪽 링에서 실행되면 원하는 작업을 수행 할 권한이 있습니다. 완료되면 제어가 응용 프로그램으로 다시 반환됩니다.
4 . 1 . 1 . 3 빠른 시스템 호출
위에서 설명한 트랩의 한 가지 문제는 프로세서가 구현하는 데 매우 비쌉니다. 컨텍스트가 전환되기 전에 저장해야 할 상태가 많이 있습니다. 현대 프로세서는이 오버 헤드를 깨달았고 그것을 줄이기 위해 노력했습니다.
위에서 설명한 콜 게이트 메커니즘을 이해하려면 프로세서가 사용하는 독창적이지만 복잡한 세분화 체계를 조사해야합니다. 세분화의 원래 이유는 그림 4와 같이 주소 레지스터에서 사용 가능한 16 비트 이상을 사용할 수 있었기 때문입니다 . 1 . 1 . 삼 . 1, x86 세분화 주소 지정 .
세분화 프로세서의 주소 공간을 청크로 나누어 주소 공간을 확장. 프로세서는 특수 세그먼트 레지스터를 유지하고 주소는 세그먼트 레지스터 및 오프셋 조합으로 지정됩니다. 세그먼트 레지스터의 값은 최종 주소를 찾기 위해 오프셋 부분에 추가됩니다.
그림 4 . 1 . 1 . 삼 . 1 x86 세분화 주소 지정
X86이 32 비트 레지스터로 이동했을 때, 세분화 체계는 다른 형식으로 유지되었습니다. 고정 세그먼트 크기 대신 세그먼트가 어떤 크기로든 허용됩니다. 즉, 프로세서는 이러한 모든 다른 세그먼트와 크기를 추적해야하며 사용합니다 설명자. 모든 사람이 이용할 수있는 세그먼트 디스크립터는 글로벌 디스크립터 테이블 또는 짧은 GDT. 각 프로세스에는 GDT의 항목을 가리키는 여러 레지스터가 있습니다. 이들은 프로세스가 액세스 할 수있는 세그먼트입니다 (또한 현지의 설명자 테이블, 그리고 모두 작업 상태 세그먼트와 상호 작용하지만 지금은 중요하지 않습니다). 전반적인 상황은 그림 4에 설명되어 있습니다 . 1 . 1 . 삼 . 2, x86 세그먼트 .
X86 활동의 세그먼트. “원거리”가 어떻게 하위 링 레벨에서 실행되는 코드 세그먼트로 리디렉션되는 통화 게이트를 통해 통과하는지 주목하십시오. 모든 코드 주소에 암시 적으로 사용되는 코드 세그먼트 선택기를 수정하는 유일한 방법은 통화 메커니즘을 통한 것입니다. 따라서 Call-Gate 메커니즘은 새로운 세그먼트 디스크립터를 선택할 수 있도록 보장하므로 보호 수준을 변경할 수 있으므로 알려진 진입 점을 통해 전환해야합니다.
그림 4 . 1 . 1 . 삼 . 2 x86 세그먼트
운영 체제는 세그먼트 레지스터를 프로세스 상태의 일부로 할당하므로 프로세서 하드웨어는 현재 실행중인 프로세스가 액세스하고 시행 할 수있는 메모리 세그먼트를 알고 있습니다 보호 프로세스가 아무 것도 건드리지 않도록하기 위해. 경계를 벗어나면, 당신은 세그멘테이션 오류, 대부분의 프로그래머는 익숙한 것입니다.
코드를 실행하는 경우 사진이 더 흥미로워집니다 또 다른 분절. 섹션 4에서 논의 된 바와 같이 . 1 . 1 . 1, 386 보호 모델, x86은이 작업을 수행합니다 반지, 링 0이 가장 높은 권한 인 경우, 링 3은 가장 낮고 내부 링은 외부 링에 액세스 할 수 있지만 그 반대는 아닙니다.
섹션 4에서 논의 된 바와 같이 . 1 . 1 . 2, RINGING PRICILEGE, RING 3 코드가 Ring 0 코드로 뛰어 들기를 원할 때 본질적으로 코드 세그먼트 선택기를 다른 세그먼트를 가리키기 위해 본질적으로 수정하고 있습니다. 이를 위해서는 특별한 것을 사용해야합니다 먼 통화 하드웨어가 통화 게이트를 통과하는 지시 사항. 실행 프로세스가 새 코드 세그먼트 디스크립터를 선택할 수있는 다른 방법은 없으므로 프로세서는 링 0 세그먼트 내에서 알려진 오프셋에서 코드를 실행하기 시작합니다.g. 임의적이고 악의적 인 코드를 읽지 않고 실행. 물론 사악한 공격자는 항상 코드가 의도하지 않은 일을 할 수있는 방법을 찾을 것입니다!)).
이것은 세그먼트의 전체 계층과 그들 사이의 권한을 허용합니다. 크로스 세그먼트 통화가 시스템 통화와 똑같은 소리를 보았을 수도 있습니다. Linux X86 어셈블리를 본 적이 있다면 시스템 호출을하는 표준 방법은 int 0x80이며, 이는 인터럽트 0x80입니다 . 인터럽트는 프로세서를 중지하고 인터럽트 게이트로 이동하여 통화 게이트와 동일하게 작동합니다. 권한 레벨을 변경하고 다른 코드 영역으로 튀어 나옵니다 .
이 체계의 문제는 그것이 있다는 것입니다 느린. 이 모든 점검을 수행하려면 많은 노력이 필요하며 새 코드로 들어가려면 많은 레지스터를 저장해야합니다. 그리고 돌아 오는 도중에 모든 것이 다시 복원되어야합니다.
최신 X86 시스템 세분화 및 4 레벨 링 시스템은 가상 메모리 덕분에 사용되지 않으며 6 장, 가상 메모리에서 완전히 논의됩니다 . 세분화 스위칭에서 실제로 발생하는 유일한 것은 시스템 호출입니다. 시스템 호출은 기본적으로 모드 3 (userspace)에서 모드 0으로 전환하고 커널 내부의 시스템 호출 처리기 코드로 이동하는 것입니다. 따라서 프로세서는 추가 기능을 제공합니다 빠른 시스템 호출 원거리의 일반적인 특성을 제거하여 int 0x80 호출에 대한 전체 프로세스 속도를 높이는 Sysenter (및 Sysexit)라는 지침-이는 링 레벨에서 모든 세그먼트로 전환 할 가능성이 있습니다.
일반적인 특성은 이전에 알려진 정보로 대체되었으므로 전체 프로세스는 속도가 빨라질 수 있으므로 앞서 언급 한 사람이 있습니다 빠른 시스템 호출. 주목해야 할 또 다른 것은 커널이 제어 할 때 상태가 보존되지 않는다는 것입니다. 커널은 상태를 파괴하지 않도록주의해야하지만 작업을 수행하는 데 필요한만큼 적은 상태 만 무료로 저장할 수 있음을 의미하므로 훨씬 더 효율적일 수 있습니다. 이것은 매우 RISC 철학이며 RISC와 CISC 프로세서 사이의 라인이 어떻게 흐릿 해지는지를 보여줍니다.
이것이 Linux 커널에서 구현되는 방법에 대한 자세한 내용은 섹션 8을 참조하십시오 . 1 . 1, 커널 라이브러리 .
4 . 2 커널과 통신하는 다른 방법
4 . 2 . 1 IOCTL
4 . 3 파일 시스템
Proc, Sysfs, Debugfs 등에 대해
보호 링
링 0 입니다 핵심 방법. 링 3 입니다 사용자 방법. 다른 고리는 일반적으로 사용되지 않습니다. 가상 상자 가상 기계의 커널을로드합니다 반지 1.
커널 모드 대 사용자 모드 실행
커널 모드에서 실행 코드는 기본 하드웨어에 대한 완전하고 제한되지 않은 액세스 권한이 있습니다. CPU 명령을 실행하고 메모리 주소를 참조 할 수 있습니다. 사용자 모드에서 실행 코드는 하드웨어 또는 참조 메모리에 직접 액세스 할 수있는 기능이 없습니다. 사용자 모드에서 실행되는 코드는 하드웨어 또는 메모리에 액세스하려면 System API에 위임해야합니다.
이 두 모드는 단순한 레이블이 아닙니다. 그들은 CPU 하드웨어에 의해 시행됩니다. 사용자 모드에서 실행되는 코드가 권한이있는 CPU 명령에 액세스하거나 액세스 할 수없는 메모리를 수정하는 등 Purview 외부에서 무언가를 수행하려고 시도하는 경우. 전체 시스템 충돌 대신 특정 응용 프로그램 만 충돌합니다. 이것이 사용자 모드의 값입니다.
일치하는 결과 “”
일치하는 결과 없음 “” “
핵심 Linux 아키텍처 소개 : 보호 링
이것은 Core Linux 아키텍처에 대한 다음 기사입니다. 이전 기사에서는 코드가 실행할 수있는 권한과 같은 다른 프로세서 모드에 대해 배웠습니다. 그래서 우리는 커널 모드와 사용자 모드와 다음 다이어그램에서 오늘보고있는 본질적으로 보호 링을 보았습니다. 우리는 다른 보호 링을 볼 수 있습니다.
그러니하자’계속해서 시작하십시오
x86의 보호 링 :
허락하다’s는 먼저 x86이 무엇인지 논의합니다? 그리고 왜 우리는 그것을 필요로합니까??
x86은 데스크탑 컴퓨터에 가장 인기있는 프로세서 아키텍처이며 스마트 폰을 살펴보면이 프로세서를 볼 수 있습니다.이자형. 배터리 사용에 더 효율적이므로 모바일 장치를위한 가장 인기있는 프로세서 아키텍처. 그러나 데스크탑 컴퓨터로서’그들은 정말로 약간의 차이가 있어야합니다. x86에서 x를 볼 수있는 한 가지는 본질적으로’끝에 86을 가진 숫자를 말하는 것입니다.이자형. x86 따라서 프로세서 제품군을 볼 수있을 때마다 많은 다른 프로세서를 볼 수 있지만 항상 86으로 끝납니다.
그래서 우리는 보호 링에 더 깊이 들어가고 있습니다. 우리는 보호 링을 앞에서 논의한 CPU 권한 수준의 그래픽 표현으로 볼 수 있습니다. 다음 기사에서는 CPU 아키텍처와 보호 링의 작동 방식에 깊이 들어갈 것입니다? 그것으로 낮은 수준으로가는 것과 같습니다.
우리는 이미 CPU를 알고있었습니다’에스 “커널 모드” 그것은와 같습니다 “링 0” 다이어그램과 CPU에서’에스 “사용자 모드” 다루어야합니다 “링 3”. 여기서 당신은 반지 1과 2에 대해 생각해야합니다. 본질적으로 현대 운영 체제에서’Linux를 포함하여 S는 X86 아키텍처에서 링 0 및 링 3 만 사용합니다 “페이지 테이블” 구현되었습니다.
이것은 확실히 빠르며 아무도’S 그것은. 이것이 우리가 링 0과 링 3을 사용하는 이유입니다.
페이지 테이블은 컴퓨터 시스템의 가상 메모리 시스템에서 사용하는 메모리 매핑 파일입니다. 현대 아키텍처는 x86을 가질 수 있지만이 모든 링을 가질 수 있습니다. 특정 가상화 환경에서 1은 실제로 사용됩니다. 저것’실제로 가상 상자 또는 가상 머신입니다. VM을 넣습니다’S 커널 코드는 실제로 링 1에 있으며 밑줄이있는 기계의 실제 커널 코드는 링 0입니다.
허락하다’s는 우리가 이미 알고있는 것을 확인하고 – 모든 프로세스가 우리가 이미 말한 것처럼 Ring 3에서 시작되면 링 0 권한을 어떻게 실행합니까?? 밑줄이있는 운영 체제 미세 모드 사용자 인터페이스 또는 응용 프로그램 또는 응용 프로그램을 다루는 커널이 있으므로 때때로 파일 시스템 모드 또는 입력 출력 제품을 살펴 봐야합니다. 이들은 본질적으로 0 권한 또는 커널 권한의 종류로 제한되는 링입니다.
그래서 어떻게 발생합니까?? 우리는 입력 출력 작업, 파일 시스템 조작 등. 저것’S System Call 인터페이스라고 불리는 것’링 3에서 실행중인 항목과 링 0에서 실행되는 커널 공간 사이의 사용자 공간 사이의 또 다른 중개인.
따라서 사용자 공간 프로세스를 본질적으로 활용할 수 있습니다. 이 인터페이스, It’커널 API는 커널이 일부 기능 자체를 호출하도록하는 커널 API. 그러니하자’S 시스템 호출이 무엇인지 확인하십시오.
시스템 호출 : 사용자 프로세스에 의해 커널에 대한 요청입니다.이자형. 커널 동작.
인터럽트 : CPU에 방출되는 신호입니다 ” 즉각적인주의가 필요한 이벤트가 있습니다”.
인터럽트는 무엇을합니까?? 어떻게 유용합니까?? 소프트웨어 기반 인터럽트와 같은 시스템 호출을 시작할 수 있습니다. 따라서보다 현대적인 CPU 아키텍처에 대한 코드는 인터럽트 대신 다른 시작 프로세스를 사용할 수 있습니다. 그러나 모든 것의 주요 과정은 동일합니다.
그것’작은 작은 뉘앙스이지만 때로는 이러한 인터럽트가 더 집중적이므로 확실해야합니다. 그래서 더 현대적인 시스템은 인터럽트 대신에 다른 종류의 아키텍처를 가질 수 있습니다. 따라서 밑줄 아이디어는 동일합니다.
허락하다’s 시스템 호출 예제로 이동 :
- 사용자 프로세스에는 커널 작업이 필요하므로 인터럽트가 시작됩니다.
- 인터럽트 또는 명령어는 CPU를 링 0에 넣고 컨트롤을 커널로 전달합니다.
- 커널은 사용자 프로세스에 권한에 따라 시스템 호출을 부여 해야하는지 결정합니다.
- 승인 된 경우 커널이 시스템 호출을 실행합니다.
- 완료되면 커널은 Ring 3으로 변경됩니다.
- 커널은 사용자 프로세스를 제어합니다.
방문하다- 호스트 덴
Vishwajit Kale
Vishwajit Kale은 2015 년에 디지털 마케팅 장면을 다시 시작했으며 신뢰할 수있는 웹 호스팅 솔루션을 제공하는 회사 인 Hostdens의 디지털 마케팅 전략가입니다. Vishwajit은 SEO와 함께 디지털 및 컨텐츠 마케팅에서 경험이 있습니다. 그는 기술 블로그 작성, 여행 및 독서를 좋아합니다.
Vishwajit Kale
Vishwajit Kale은 2015 년에 디지털 마케팅 장면을 다시 시작했으며 신뢰할 수있는 웹 호스팅 솔루션을 제공하는 회사 인 Hostdens의 디지털 마케팅 전략가입니다. Vishwajit은 SEO와 함께 디지털 및 컨텐츠 마케팅에서 경험이 있습니다. 그는 기술 블로그 작성, 여행 및 독서를 좋아합니다.
운영 체제의 계층
운영 체제는 각각 고유 한 특권을 가진 여러 개별 레이어로 분류 될 수 있습니다. 이 시스템은 보호 링이라고합니다. 운영 체제는 컴퓨터를 관리합니다’CPU의 처리 시간 및 메모리 액세스와 같은 S 리소스. 컴퓨터는 종종 여러 소프트웨어 프로세스를 한 번에 실행하고 있으며 이는 자원 및 하드웨어에 대한 다양한 수준의 액세스가 필요합니다.
운영 체제는 각각 고유 한 특권을 가진 여러 개별 레이어로 분류 될 수 있습니다. 이 시스템은 a로 알려져 있습니다 보호 링.
보호 링이란 무엇입니까??
운영 체제는 컴퓨터를 관리합니다’CPU의 처리 시간 및 메모리 액세스와 같은 S 리소스. 컴퓨터는 종종 여러 소프트웨어 프로세스를 한 번에 실행하고 있으며 이는 자원 및 하드웨어에 대한 다양한 수준의 액세스가 필요합니다.
프로세스는 계층으로 실행됩니다 “반지”, 각 링은 자원에 대한 접근 권한이 다릅니다. 중앙 링은 가장 높은 권한을 가지며 각 후속 층은 액세스가 감소했습니다. X86 프로세서 (일반적인 유형의 CPU)에 대한 보호 링의 일반적인 구현에는 아래에 설명 된대로 4 개의 링이 0에서 3까지 번호가 매겨집니다.
왜 레이어?
유지하고 싶다
학습?
이 내용은 가져 왔습니다
Raspberry Pi Foundation 온라인 코스,
컴퓨터 시스템 이해
코스보기
계층화 된 모델은 두 가지 주요 이점을 제공합니다. 첫째, 시스템 충돌로부터 보호합니다. 더 높은 고리의 오류 (액세스가 적음)는 일반적으로 복구 될 수 있습니다. Ring 0 만 메모리 및 CPU에 직접 액세스하기 때문에 외부 링에서 실행되는 프로세스가 충돌하는 경우 데이터를 잃거나 CPU에서 오류를 일으키지 않고 다시 시작할 수 있습니다. 둘째, 보안 증가를 제공합니다. 리소스에 더 많은 액세스가 필요한 지침을 실행하려면 프로세스가 운영 체제의 권한을 요청해야합니다. 그런 다음 OS는 요청을 부여할지 여부를 결정할 수 있습니다. 이 선택 과정은 원치 않는 또는 악의적 인 행동으로부터 시스템을 보호하는 데 도움이됩니다.
보호 링의 일부
Ring 0 (대부분의 특권) 및 3 (최소 특권)
링 0은 액세스 할 수 있습니다 핵심, 대부분의 운영 체제의 중심 부분이며 모든 것에 액세스 할 수 있습니다. 여기에서 실행되는 코드는 실행 중이라고합니다 커널 모드. 커널 모드에서 실행되는 프로세스는 전체 시스템에 영향을 줄 수 있습니다. 여기에 실패하면 시스템 종료가 발생할 수 있습니다. 이 링은 CPU 및 시스템 메모리에 직접 액세스 할 수 있으므로 중 하나를 사용해야하는 지침은 여기에서 실행됩니다.
최소한의 권한이없는 링 인 Ring 3은 실행중인 사용자 프로세스에 액세스 할 수 있습니다 사용자 모드. 컴퓨터에서 실행되는 대부분의 응용 프로그램이 상주하는 곳입니다. 이 링은 CPU 또는 메모리에 직접 액세스 할 수 없으므로 링 0에 이와 관련된 지침을 전달해야합니다.
고리 1과 2
링 1과 2는 3 (사용자 모드)이없는 특별한 권한이 있습니다. 링 1은 컴퓨터와 연결된 하드웨어와 상호 작용하고 제어하는 데 사용됩니다. 스피커 나 헤드폰을 통해 노래를 연주하거나 모니터에 비디오 표시는이 링에서 실행 해야하는 지침의 예입니다. Ring 2는 시스템 저장소와 상호 작용 해야하는 지침, 파일로드 또는 저장에 사용됩니다. 이러한 종류의 권한을 호출합니다 입력 그리고 산출, 작업 메모리 (RAM)로 데이터를 이동하는 것이 포함되므로. 예를 들어 Storage에서 Word 문서를로드하는 것은 Ring 2에 있습니다. 문서보기 및 편집은 응용 프로그램 계층 인 Ring 3에 속합니다.
논의
- 계산기 프로그램과 같이 컴퓨터에서 실행될 수있는 프로세스를 생각해 보거나 게임 플레이를 생각해보십시오. 어떤 종류의 지시가 관여하고 어떤 반지를 사용할 것인지?
- 모든 코드가 링에서 실행되면 어떻게 될 것이라고 생각하십니까??