"커널" 또는 "사용자" 모드에서 실행되는 애플리케이션에 대해 들어본 적이 있을 것입니다. 운영 체제가 작업을 수행할 때 작동하는 방식에 따라 다릅니다. 이것을 이해하면 사용자 모드와 커널 모드의 차이점을 쉽게 파악할 수 있습니다.
운영 체제의 기능 이해(Does)
컴퓨터는 하드웨어, 전자 부품 및 소프트웨어로 구성되며 해당 하드웨어에 의해 실행되는 컴퓨터 코드입니다. 그러나 덜 명확할 수 있는 것은 이들이 함께 일하는 방식입니다.
컴퓨터의 가장 필수적인 요소는 비트 또는 "2진수"입니다. "(” Everything) 컴퓨터가 하는 모든 일은 1과 0으로 표현됩니다. 다른(Different) 컴퓨터 구성 요소는 다른 방식으로 비트를 나타냅니다. CPU 에서 미세한 트랜지스터는 켜짐 또는 꺼짐으로 1과 0을 나타냅니다. 이러한 트랜지스터는 논리 게이트라고 하는 논리 구조로 배열됩니다.
전자 컴퓨터 메모리에서 비트는 특정 임계값보다 높거나 낮은 전하를 갖는 메모리 셀로 표시됩니다. 기계식 하드 드라이브에서 비트는 회전하는 플래터에서 측정된 자기 변동으로 표시됩니다. 광 디스크에서 레이저 광을 반사하거나 반사하지 않는 피트와 랜드는 동일한 역할을 합니다.
이진 코드의 물리적 표현 방법에 관계없이 결국 모든 소비자 컴퓨터 구성 요소를 이 원시 기계 코드로 줄일 수 있습니다.
그렇다면 컴퓨터의 인간 친화적인 인터페이스에서 컴퓨터 자체의 원시 저수준 프로세스로 어떻게 이동합니까? 그것이 운영 체제가 들어오는 곳입니다. 컴퓨터의 하드웨어를 직접 제어합니다.
이 소프트웨어는 응용 프로그램(따라서 사용자)이 원하는 모든 것을 CPU 및 기타 구성 요소가 이해할 수 있는 기계어 코드 명령으로 변환합니다. 이 과정에서 가장 중요한 소프트웨어는 커널입니다.
커널이란 무엇입니까?
커널은 이름에서 알 수 있듯이 운영 체제의 핵심입니다. 커널은 RAM 에 상주 하고 컴퓨터가 하는 모든 일을 지시하는 소프트웨어입니다. 무언가가 메모리에 기록될 때 실행을 지시하는 것은 커널입니다.
커널은 GPU(GPUs) 및 네트워크 카드 와 같은 하드웨어와 인터페이스하는 방법을 알고 있지만 컴퓨터 산업의 일반 표준에 의존하여 최대한으로 작동하는 방법을 모를 수 있습니다.
여기서 하드웨어 드라이버가 작동합니다. 드라이버는 운영 체제에 특정 구성 요소로 작업하는 방법을 알려주므로 예를 들어 Nvidia 및 AMD GPU(AMD GPUs) 에 대해 다른 드라이버가 필요합니다.
올바른 드라이버가 장착된 커널은 데이터를 치명적으로 파괴할 수 있는 작업을 포함하여 컴퓨터 내에서 궁극적인 권한입니다.
API(APIs) ( 응용 프로그래밍 인터페이스(Application Programming Interfaces) ) 의 역할(Role)
MS-DOS 시대에 소프트웨어 개발자는 사용자의 하드웨어를 위해 특별히 소프트웨어를 작성해야 했습니다. MS-DOS 시스템 에서 이것의 가장 악명 높은 예 는 사운드 카드 드라이버였습니다.
주어진 비디오 게임은 가장 인기 있는 카드( Sound Blaster , Ad-lib , Gravis Ultrasound 등)를 지원해야 하며 대부분의 플레이어가 지원되기를 바랍니다. 오늘날 API(APIs) 덕분에 상황이 매우 다르게 작동합니다 .
Microsoft DirectX 가 좋은 예입니다. 자세한 설명이 필요하면 DirectX란 무엇이며 왜 중요한가요? 를 확인하세요. (What Is DirectX and Why Is It Important?)그러나 알아야 할 가장 중요한 점은 API 가 소프트웨어 개발자가 (API)GPU 와 같은 구성 요소에서 하드웨어 리소스를 요청할 수 있는 표준 방법을 제공 한다는 것 입니다. 또한 하드웨어 제조업체는 해당 제품이 DirectX 를 준수하여 유사하게 호환되는 소프트웨어와의 완전한 호환성을 보장해야 합니다.
API(APIs) 는 소프트웨어 응용 프로그램과 하드웨어 드라이버가 있는 저수준 커널 간의 변환 계층을 제공합니다. 예, 약간의 성능 저하가 있습니다. 그래도 최신 컴퓨터에서는 무시할 수 있는 수준이며 다양한 이점이 있어 결국 사용자 모드와 커널 모드에 도달하게 됩니다.
사용자 모드 대 커널 모드
최신 운영 체제는 수백 또는 수천 개의 "프로세스"를 동시에 실행 하여 우선 순위 및 계산 능력 요구 사항에 따라 필요에 따라 CPU 시간을 동적으로 제공합니다.(CPU)
애플리케이션을 시작하면 프로세스가 생성되고 CPU 는 사용자 모드나 커널 모드에서 프로세스를 실행할 수 있습니다.
사용자 모드에서 실행 되는 Windows 프로세스는 자체 개인 가상 메모리 주소 공간과 핸들 테이블에만 액세스할 수 있습니다. 소프트웨어는 이러한 테이블을 사용하여 데이터를 RAM 에 저장 하고 리소스를 요청합니다. 메모리 또는 기타 하드웨어에 직접 액세스할 수 없으며 이러한 가상 공간을 컴퓨터의 실제 하드웨어에 매핑하는 것은 운영 체제에 달려 있습니다.
이는 여러 가지 이유로 유용하지만 가장 중요한 이점은 응용 프로그램이 가상 메모리 주소 공간 외부의 데이터를 덮어쓰거나 변경할 수 없다는 것입니다. 또한 특정 기능은 사용자 모드 프로세스에서 사용할 수 없습니다. 주로 시스템을 충돌시키거나 데이터를 파괴할 수 있는 기능입니다.
프로세스가 시작되거나 커널 모드로 승격되면 운영 체제용으로 예약된 경우에도 시스템 리소스에 대한 전체 액세스 권한을 갖습니다. 따라서 이론적으로 운영 체제가 제대로 실행되는 데 필요한 중요한 데이터를 덮어쓸 수 있습니다.
트랩 및 예외
이 두 가지 모드는 CPU(CPU) 자체 에 의해 하드웨어 수준에서 시행된다는 것을 이해하는 것이 중요 합니다. 사용자 모드에서 실행 중인 응용 프로그램이 커널 모드 액세스가 필요한 작업을 수행하려고 하면 "트랩" 또는 "예외"가 생성됩니다. 그런 다음 운영 체제는 일반적으로 애플리케이션을 종료하고 충돌 로그를 생성하여 애플리케이션을 처리하므로 개발자가 문제가 잘못되었을 때 메모리에서 어떤 일이 발생했는지 확인할 수 있습니다.
커널 모드(Kernel Mode) 의 위험(Dangers) : 죽음 의 블루 (Blue Screen)스크린(Death)
컴퓨터를 강제로 끄거나 다시 시작해야 하는 죽음 의 (Death)블루 스크린(Blue Screen) 을 경험한 적이 있다면 커널 모드 프로세스가 원인일 가능성이 높습니다.
커널 모드의 프로세스가 해서는 안 되는 일을 하면 운영 체제가 복구할 수 없고 전체 컴퓨터가 중지됩니다. 사용자 모드 프로세스가 엉망이 되면 응용 프로그램만 충돌하고 나머지 소프트웨어와 운영 체제는 문제 없이 계속될 수 있습니다.
이것은 커널 모드 권한을 요청 하는 API 이기 때문에 (API)API(APIs) 가 필수적인 역할을 하는 영역 중 하나입니다. 사용자 모드 응용 프로그램은 기본적으로 필요한 커널 모드 권한이 있는 요청을 API 에 위임합니다 .
이것이 커널 모드가 일반적으로 컴퓨터의 하드웨어에 직접 액세스해야 하는 저수준 시스템 프로세스에만 부여되는 이유입니다. 일반적으로 이 권한은 사용자 모드가 제공할 수 있는 것보다 더 많은 성능이 필요하기 때문에 프로세스로 확장됩니다. 일부 CPU 명령어는 커널 모드에서만 작동하므로 프로세스가 해당 기능을 사용해야 하는 경우 상승해야 합니다.
죽음 의 (Death)블루 스크린(Blue Screen) 에 문제가 있는 경우 Windows 10용 죽음의 블루 스크린 문제 해결 가이드(Blue Screen of Death Troubleshooting Guide for Windows 10) 를 읽으십시오 !
What Is User Mode vs Kernel Mode in Windows
You may have heard about applications running in “kernel” or “υser” mode. It’s all down to how operating systems wоrk when they dо their jobs. Once you understand thаt, it’s easy to grasp the dіfference betwеen user mode and kernel mode.
Understanding What an Operating System Does
A computer consists of hardware, the electronic components, and software, the computer code executed by that hardware. But what may be less clear is how they work together.
A computer’s most essential element is the bit or “binary digit.” Everything a computer does is represented as ones and zeroes. Different computer components represent bits in different ways. In a CPU, microscopic transistors represent ones and zeroes by either being on or off. Those transistors are arranged into logical structures, called logic gates.
In electronic computer memory, bits are represented by memory cells either having a charge above or below a certain threshold. On a mechanical hard drive, bits are represented as magnetic fluctuations measured on a spinning platter. On optical discs, pits and lands that do or do not reflect laser light do the same job.
No matter how the physical representation of binary code is achieved, you can eventually reduce down all consumer computer components to this raw machine code.
So how do you go from the human-friendly interface of a computer to the raw, low-level processes in the computer itself? That’s where the operating system comes in. It directly controls the hardware of the computer.
This software translates everything applications (and therefore the user) want into the machine code instructions that the CPU and other components understand. The most critical piece of software in this process is the kernel.
What Is the Kernel?
The kernel is, as the name suggests, the core of the operating system. The kernel is software that resides in RAM and directs everything the computer does. When something is written into memory, it’s the kernel that directs the execution.
The kernel knows how to interface with hardware such as GPUs and network cards, but it may not know how to operate them to their full potential, relying on generic standards in the computer industry.
The hardware drivers come into play here. Drivers tell your operating system how to work with specific components, which is why you need different drivers for Nvidia and AMD GPUs, for example.
Equipped with the right drivers, the kernel is the ultimate authority within the computer, including doing things that can catastrophically destroy data.
The Role of Application Programming Interfaces (APIs)
In the days of MS-DOS, software developers had to write their software specifically for the user’s hardware. The most notorious example of this on MS-DOS systems were sound card drivers.
A given video game would have to support the most popular cards (Sound Blaster, Ad-lib, Gravis Ultrasound, etc.) and hope that most players were covered. Today, things work very differently, thanks to APIs.
Microsoft DirectX is a great example. If you want an in-depth explanation, check out What Is DirectX and Why Is It Important? However, the most important thing to know is that the API offers a standard way for software developers to ask for hardware resources from components like the GPU. Additionally, hardware makers must only ensure that their products comply with DirectX to ensure full compatibility with any likewise compliant software.
APIs offer a layer of translation between software applications and the low-level kernel with its hardware drivers. Yes, this comes with a slight performance penalty. Still, on modern computers, this is negligible, and it comes with a variety of advantages, which is where we finally come to user mode and kernel mode.
User Mode vs. Kernel Mode
Modern operating systems run hundreds or thousands of “processes” simultaneously, dynamically giving them CPU time as needed based on their priorities and computation power requirements.
When you launch an application, it generates processes, and the CPU can execute them in either user mode or kernel mode.
A Windows process running in user mode only has access to its own private virtual memory address space and handle table. The software uses these tables to store data in RAM and request resources. There’s no direct access to memory or other hardware, and it’s up to the operating system to map those virtual spaces to the actual hardware of the computer.
This is good for many reasons, but the most crucial benefit is that the application can’t overwrite or alter data outside its virtual memory address space. In addition, certain functions are off-limits to user-mode processes, mainly ones that could crash the system or destroy data.
When a process launches or is elevated to kernel mode, it has full access to system resources, even those reserved for the operating system. So, in theory, it could overwrite crucial data that the operating system needs to run properly.
Traps and Exceptions
It’s important to understand that these two modes are enforced at the hardware level by the CPU itself. If an application running in user mode tries to do something that requires kernel-mode access, it generates a “trap” or “exception.” The operating system will then deal with the application, usually by shutting it down and generating a crash log so that the developers can see what happened in memory when things went off the rails.
The Dangers of Kernel Mode: The Blue Screen of Death
If you’ve ever experienced a Blue Screen of Death (who hasn’t?) that forced your computer to switch off or restart, there’s a good chance it was a kernel-mode process to blame.
When a process in kernel mode does something it’s not supposed to, the operating system can’t recover from it, and the entire computer halts. When a user-mode process goes haywire, only the application crashes, and the rest of the software and the operating system can go on without any issues.
This is one area where APIs play an essential role since it’s the API asking for kernel-mode privileges. User-mode applications essentially delegate requests that would have required kernel-mode privileges to the API.
This is why kernel-mode is usually only granted to low-level system processes that need to access the computer’s hardware directly. Usually, this privilege is extended to a process because it needs more performance than user mode can provide. Some CPU instructions only work in kernel mode, so if a process needs to use those functions, it has to be elevated.
If you’re having trouble with the Blue Screen of Death, be sure to read our Blue Screen of Death Troubleshooting Guide for Windows 10!