[[파일:external/upload.wikimedia.org/Kernel-panic.jpg]] [목차] == 개요 == '''커널 패닉'''(Kernel panic)은 컴퓨터 [[운영체제]]의 [[커널(운영 체제)|커널]]에 치명적인 오류([[패닉]])가 발생한 상태를 뜻한다. 커널은 운영체제의 핵심이므로 오류가 발생하면 컴퓨터를 사용할 수 없다. 이 경우엔 재부팅이 답이지만, 그 다음부터 아예 쓸 수 없는 경우도 가끔 발생한다. 대표적으로 [[Windows]]의 [[블루스크린]]이 이 중 하나이며,[* NT 계열에선 100%다. 하지만 9x 계열의 Windows에서는 일부 [[블루스크린]]('''치명적인 오류 0E 어쩌구로 시작되는 경우''')만 해당한다. 그 이전의 버전(1.0, 2.xx, 3.xx)에서는 아예 커널 패닉이 아니다.] [[유닉스]]에도 [[macOS]]에도 있다. 커널 패닉의 정의상 [[iOS]], [[안드로이드(운영체제)|안드로이드]] 등을 비롯한 거의 모든 운영체제에서 발생한다. 따라서 [[CPU]]가 있는 모든 기계에서나 발생할 수 있으며, [[현금 자동 입출금기|ATM]], [[스마트폰]] 등도 예외는 아니다. 단, 심각하게 불안정한 [[Windows 9x]]를 제외하곤 잘 보이지 않을 뿐이다. == 원인 == 커널 패닉은 커널에서 예기치 못한 형식이나 정상적으로 다룰 수 없는 명령어를 수신했을 때에 발생한다.[* 소프트웨어나 하드웨어의 오동작, 전기적인 [[노이즈]]로 인한 꼬인 데이터 취급 등.] 대부분은 CPU가 이를 발생시키지만, 커널 내부에서 자체적으로 발생시키기도 하며, 어떤 방법으로도 더이상 진행할 수 없게 되면 재부팅 밖엔 답이 없다. 한편, [[Windows 98]]/[[Windows Me]] 시절의 블루스크린은 서드파티 디바이스 드라이버의 탓이 크다.[* 물론 이 탓도 있으나 원래부터 9x 계열 자체가 여러가지 보안 허점들도 있었으며 '''무엇보다도 NT 계열의 Windows와는 그 구조가 너무나도 달랐다.''' 예를 들다면, DLL과 같이 동적으로 로드해서 사용하는 라이브러리의 경우 NT 계열처럼 각각의 프로세스 주소 공간에 올라가는 게 아니라, 공유 메모리에 올라오게 된다. 이런 상황에서 만일 해당 DLL이 올라간 공간에 누군가가 조금이라도 잘못된 조작을 하면 [[버틸수가 없다|버티지 못하고]] 뻗어버린다. 게다가 덤으로 일반적으로 커널 모드에서만 사용이 가능했던 Port I/O 명령어 같은 권한이 필요한 명령어를 사용자 모드에서 실행되는 응용 프로그램까지도 제대로 사용할 수 있었다!(이러한 점을 악용한 대표적인 바이러스가 바로 [[CIH 바이러스]]) 어쨌든 OS 자체의 결함에다가 잘못된 서드파티 디바이스 드라이버에 의한 시너지 효과까지 받아서 일어났다고 볼 수 있다.] OS와의 동작 호환이 완벽하게 검증되지 않은 디바이스 드라이버가 마구 양산되었고 디바이스 드라이버의 특성상(일반적인 프로그램과 달리 커널 내부에서 동작한다) 커널을 매우 불안정하게 만들었던 것으로 추정. 당장 [[빌 게이츠]]가 주관한 시연회에서부터 [[빌 게이츠의 굴욕|스캐너를 USB로 꽂자마자]] [[https://www.youtube.com/watch?v=IW7Rqwwth84|블루스크린이 뜨면서]] 일반 사용자에게 이런 일이 일어날 것임을 예고하기도 하였다. 고질적인 메모리 누수와 오동작하는 디바이스 드라이버의 시너지는 유저들에게 인내심의 진정한 의미를 재발견하도록 만들었다. 이 때문에 윈도우즈 2000 이후의 디바이스 드라이버들은 [[마이크로소프트]]의 인증 센터에서 WHQL 서명을 받지 않는 한 설치시에 경고 메시지가 뜨게 된다.[* [[Windows 8]]까지는 서명이 없는 드라이버라면 경고 메시지는 떠도 사용자 선택에 따라 여전히 설치는 가능했지만, [[Windows 10]]부터는 WHQL 서명이 없는 드라이버의 설치를 아예 막아버려서 일반적인 방법으론 설치할 수가 없다.] 그래서 윈도우 2000이후부턴 어지간한 해서는 커널패닉 창이 뜨지 않는다.[* 뿐만 아니라 9x와는 달리 웬만한 오류들은 OS의 동작이 더 이상 불가능한 상황이 아니라면 그냥 가볍게 씹어주시는 위엄을 발휘한다. 9x시리즈는 도스 기반이었지만 2000부터는 NT계열로 커널이 바뀌었기 때문이다.] 커널 모드 드라이버에서 문제가 발생하였다면? [[장비를 정지합니다|잠시 정지했다가]] 드라이버 재시작을 시도한다.[* 보통 그래픽카드가 맛이 가기 시작할 때 자주 확인할 수 있는데, 잠시 화면이 나갔다가 오류 보고가 뜨며 창이 뜨는 식이다.] 재시작에 성공했다면 커널 패닉 메시지는 뜨지 않는다. 하지만 어디까지나 로드를 시도했을 때의 드라이버가 멀쩡한 경우의 이야기, 어차피 드라이버는 커널 모드에서 동작하므로[* 모두 그렇다는 것은 아니다! Windows 의 경우 UMDF 라는 유저 모드에서 동작하는 드라이버 개발 프레임웍을 지원하고 있다. 이는 중간에 추상화 계층을 하나 더 두어서 구현되고, 이 드라이버에서 크래시가 나도 커널 패닉은 발생하지 않는다. 물론 모든 드라이버가 이렇게 개발할 수 있는 것은 아니다.(어쩔 수 없이 커널 모드에서 동작해야 하는 드라이버도 있기 때문이다)] 로드된 드라이버가 커널 모드에서 에러를 발생시키면 그건 거의 100% 확률로 '''커널 패닉 크리'''가 발생한다. '''이건 어떠한 OS이건 간에 다 똑같으며,''' 커널 패닉이 없는 운영체제가 절대로 나타날 수 없는 좋은 이유가 된다. 어찌됐든 커널 패닉 자체는 더 이상의 장치 고장을 막기 위해 커널에서 수행하는 운영체제의 "최후통첩"이다. 그런 만큼 커널 패닉이 떴다고 좌절하지 말길 바라며, 너무 자주 뜬다 싶은 경우에는 모든 부분을 점검하는 자세도 필요하다. == 각종 [[운영체제|OS]]들의 커널 패닉 화면 == === [[Windows]] === [include(틀:상세 내용, 문서명=블루스크린)] || {{{#!wiki style="margin: -5px -10px" [[파일:attachment/wntkp.gif]]}}} || || [[블루스크린|NT 커널 윈도우 커널 패닉의 경우.]] || MULTIPLE_IRP_COMPLETE_REQUESTS이 버그 확인 문자열, 0x00000044이 버그 체크 코드, Ntfs.sys가 커널패닉을 일으킨 원인 드라이버이다. 문자열과 체크 코드를 구글등의 검색엔진에 검색해 알려진 해결책을 찾을 수 있다. 예시에서는 원인 드라이버가 Ntfs.sys이지만 그 외 다른 드라이버가 문제를 일으키는 경우도 있으며 오류가 일어난 모듈 정보가 없는 경우도 있다. 같은 드라이버가 반복적으로 문제을 일으킬 경우에는 해당 드라이버를 업데이트/롤백 하거나 제조업체에 문의하는 것 외에는 별다른 방법이 없으며 그 드라이버를 삭제하면 커널 패닉은 일어나지 않지만 장치나 프로그램은 사용할 수 없다. 간혹 오류 모듈 정보가 없는 경우도 있는데 안전모드로 부팅이 되고 오류가 발생하지 않는다면 역시 프로그램 문제인 경우가 많다. 백신이나 방화벽같은 프로그램에서 간혹 발생하며 업데이트를 기다리거나 가능한 경우 이전 버전으로 돌아가거나 프로그램을 삭제하면 해결할 수 있다. === [[macOS]] === ||