"커널" 또는 "사용자" 모드에서 실행되는 애플리케이션에 대해 들어본 적이 있을 것입니다. 운영 체제가 작업을 수행할 때 작동하는 방식에 따라 다릅니다. 이것을 이해하면 사용자 모드와 커널 모드의 차이점을 쉽게 파악할 수 있습니다.
운영 체제의 기능 이해
컴퓨터는 하드웨어, 전자 부품 및 소프트웨어로 구성되며 해당 하드웨어에 의해 실행되는 컴퓨터 코드입니다. 그러나 덜 명확할 수 있는 것은 이들이 함께 일하는 방식입니다.
컴퓨터의 가장 필수적인 요소는 비트 또는 "2진수"입니다. 컴퓨터가 하는 모든 일은 1과 0으로 표현됩니다. 다른 컴퓨터 구성 요소는 다른 방식으로 비트를 나타냅니다. CPU에서 미세한 트랜지스터는 켜짐 또는 꺼짐으로 1과 0을 나타냅니다. 이러한 트랜지스터는 논리 게이트라고 하는 논리 구조로 배열됩니다.
전자 컴퓨터 메모리에서 비트는 특정 임계값보다 높거나 낮은 전하를 갖는 메모리 셀로 표시됩니다. 기계식 하드 드라이브에서 비트는 회전하는 플래터에서 측정된 자기 변동으로 표시됩니다. 광 디스크에서 레이저 광을 반사하거나 반사하지 않는 피트와 랜드는 동일한 역할을 합니다.
바이너리 코드의 물리적 표현이 어떻게 이루어지든 결국에는 모든 소비자 컴퓨터 구성 요소를 이 원시 기계 코드로 줄일 수 있습니다.
그렇다면 컴퓨터의 인간 친화적인 인터페이스에서 컴퓨터 자체의 원시 저수준 프로세스로 어떻게 이동합니까? 그것이 운영 체제가 들어오는 곳입니다. 컴퓨터의 하드웨어를 직접 제어합니다.
이 소프트웨어는 응용 프로그램(따라서 사용자)이 원하는 모든 것을 CPU 및 기타 구성 요소가 이해할 수 있는 기계어 코드 명령으로 변환합니다. 이 과정에서 가장 중요한 소프트웨어는 커널입니다.
커널이란 무엇입니까?
커널은 이름에서 알 수 있듯이 운영 체제의 핵심입니다. 커널은 RAM에 상주하고 컴퓨터가 하는 모든 일을 지시하는 소프트웨어입니다. 무언가가 메모리에 기록될 때 실행을 지시하는 것은 커널입니다.
커널은 GPU 및 네트워크 카드와 같은 하드웨어와 인터페이스하는 방법을 알고 있지만 컴퓨터 산업의 일반 표준에 의존하여 최대한으로 작동하는 방법을 모를 수 있습니다.
여기서 하드웨어 드라이버가 작동합니다. 드라이버는 운영 체제에 특정 구성 요소로 작업하는 방법을 알려줍니다. 따라서 예를 들어 Nvidia 및 AMD GPU에 대해 서로 다른 드라이버가 필요한 이유입니다.
적절한 드라이버가 장착된 커널은 데이터를 치명적으로 파괴할 수 있는 작업을 포함하여 컴퓨터 내에서 궁극적인 권한입니다.
응용 프로그래밍 인터페이스(API)의 역할
MS-DOS 시대에 소프트웨어 개발자는 사용자의 하드웨어를 위해 특별히 소프트웨어를 작성해야 했습니다. MS-DOS 시스템에서 이에 대한 가장 악명 높은 예는 사운드 카드 드라이버였습니다.
주어진 비디오 게임은 가장 인기 있는 카드(Sound Blaster, Ad-lib, Gravis Ultrasound 등)를 지원해야 하며 대부분의 플레이어가 지원되기를 바랍니다. 오늘날에는 API 덕분에 상황이 매우 다르게 작동합니다.
Microsoft DirectX가 좋은 예입니다. 자세한 설명이 필요하면 DirectX란 무엇이며 왜 중요한가요?를 확인하세요. 그러나 알아야 할 가장 중요한 점은 API가 소프트웨어 개발자가 GPU와 같은 구성 요소에서 하드웨어 리소스를 요청할 수 있는 표준 방법을 제공한다는 것입니다. 또한 하드웨어 제조업체는 해당 제품이 DirectX와 호환되는 모든 소프트웨어와의 완전한 호환성을 보장하기 위해서만 DirectX를 준수해야 합니다.
API는 소프트웨어 응용 프로그램과 하드웨어 드라이버가 있는 저수준 커널 간의 변환 계층을 제공합니다. 예, 약간의 성능 저하가 있습니다. 그래도 최신 컴퓨터에서는 무시할 수 있는 수준이며 다양한 이점이 있으므로 마침내 사용자 모드와 커널 모드에 도달하게 됩니다.
사용자 모드 대 커널 모드
최신 운영 체제는 수백 또는 수천 개의 "프로세스"를 동시에 실행하여 우선 순위와 계산 능력 요구 사항에 따라 CPU 시간을 동적으로 제공합니다.
응용 프로그램을 실행하면 프로세스가 생성되고 CPU는 사용자 모드 또는 커널 모드에서 실행할 수 있습니다.
사용자 모드에서 실행되는 Windows 프로세스는 자체 개인 가상 메모리 주소 공간과 핸들 테이블에만 액세스할 수 있습니다. 소프트웨어는 이러한 테이블을 사용하여 데이터를 RAM에 저장하고 리소스를 요청합니다. 메모리나 기타 하드웨어에 직접 액세스할 수 없으며 이러한 가상 공간을 컴퓨터의 실제 하드웨어에 매핑하는 것은 운영 체제에 달려 있습니다.
이는 여러 가지 이유로 유용하지만 가장 중요한 이점은 응용 프로그램이 가상 메모리 주소 공간 외부의 데이터를 덮어쓰거나 변경할 수 없다는 것입니다. 또한 특정 기능은 사용자 모드 프로세스에서 사용할 수 없습니다. 주로 시스템을 충돌시키거나 데이터를 파괴할 수 있는 기능입니다.
프로세스가 시작되거나 커널 모드로 승격되면 운영 체제용으로 예약된 경우에도 시스템 리소스에 대한 전체 액세스 권한을 갖습니다. 따라서 이론상으로는 운영 체제가 제대로 실행되는 데 필요한 중요한 데이터를 덮어쓸 수 있습니다.
트랩 및 예외
이 두 가지 모드는 CPU 자체에 의해 하드웨어 수준에서 시행된다는 것을 이해하는 것이 중요합니다. 사용자 모드에서 실행 중인 응용 프로그램이 커널 모드 액세스가 필요한 작업을 수행하려고 하면 "트랩" 또는 "예외"가 생성됩니다. 그런 다음 운영 체제는 일반적으로 애플리케이션을 종료하고 충돌 로그를 생성하여 애플리케이션을 처리하므로 개발자가 문제가 발생했을 때 메모리에서 어떤 일이 발생했는지 확인할 수 있습니다.
커널 모드의 위험:죽음의 블루 스크린
컴퓨터를 강제로 끄거나 다시 시작해야 하는 죽음의 블루 스크린을 경험한 적이 있다면 커널 모드 프로세스 때문일 가능성이 큽니다.
커널 모드의 프로세스가 해서는 안 되는 일을 하면 운영 체제가 복구할 수 없고 전체 컴퓨터가 중지됩니다. 사용자 모드 프로세스가 엉망이 되면 응용 프로그램만 충돌하고 나머지 소프트웨어와 운영 체제는 문제 없이 계속될 수 있습니다.
이것은 커널 모드 권한을 요구하는 API이기 때문에 API가 필수적인 역할을 하는 영역 중 하나입니다. 사용자 모드 응용 프로그램은 기본적으로 필요한 커널 모드 권한이 있는 요청을 API에 위임합니다.
이것이 커널 모드가 일반적으로 컴퓨터의 하드웨어에 직접 액세스해야 하는 저수준 시스템 프로세스에만 부여되는 이유입니다. 일반적으로 이 권한은 사용자 모드가 제공할 수 있는 것보다 더 많은 성능이 필요하기 때문에 프로세스로 확장됩니다. 일부 CPU 명령어는 커널 모드에서만 작동하므로 프로세스가 해당 기능을 사용해야 하는 경우 상승해야 합니다.
죽음의 블루 스크린에 문제가 있는 경우 Windows 10용 죽음의 블루 스크린 문제 해결 가이드를 읽어보세요!