항목
커널 패닉
kernel panic
커널 패닉(영어: kernel panic), 줄여서 KP는 운영체제의 커널이 내부적인 치명적 오류를 감지했을 때 취하는 안전 조치로, 여기서 커널은 안전하게 복구할 수 없거나 시스템을 계속 실행할 경우 주요 데이터 손실의 위험이 더 커지는 상태를 의미한다. 이 용어는 주로 유닉스 및 유닉스 계열 시스템에서 사용된다. 마…
항목
kernel panic
커널 패닉(영어: kernel panic), 줄여서 KP는 운영체제의 커널이 내부적인 치명적 오류를 감지했을 때 취하는 안전 조치로, 여기서 커널은 안전하게 복구할 수 없거나 시스템을 계속 실행할 경우 주요 데이터 손실의 위험이 더 커지는 상태를 의미한다. 이 용어는 주로 유닉스 및 유닉스 계열 시스템에서 사용된다. 마…
이 항목이 포함된 사건 파일에서 정보와 관계를 함께 살펴보세요.
이 항목이 포함된 사건 파일이 아직 없습니다.
이 항목으로 조사 시작하기커널 패닉(영어: kernel panic), 줄여서 KP는 운영체제의 커널이 내부적인 치명적 오류를 감지했을 때 취하는 안전 조치로, 여기서 커널은 안전하게 복구할 수 없거나 시스템을 계속 실행할 경우 주요 데이터 손실의 위험이 더 커지는 상태를 의미한다. 이 용어는 주로 유닉스 및 유닉스 계열 시스템에서 사용된다.
커널 패닉(영어: kernel panic), 줄여서 KP는 운영체제의 커널이 내부적인 치명적 오류를 감지했을 때 취하는 안전 조치로, 여기서 커널은 안전하게 복구할 수 없거나 시스템을 계속 실행할 경우 주요 데이터 손실의 위험이 더 커지는 상태를 의미한다. 이 용어는 주로 유닉스 및 유닉스 계열 시스템에서 사용된다. 마이크로소프트 윈도우 운영체제에서의 동등한 개념은 블루스크린이라 불리는 '중지 오류(stop error)'이다.
AT&T 계열 및 BSD 유닉스 소스 코드에서 panic()이라 불리는 패닉을 처리하는 커널 루틴은 일반적으로 콘솔에 오류 메시지를 출력하고, 사후 디버깅을 위해 커널 메모리 이미지를 디스크에 덤프한 뒤, 시스템이 수동으로 재기동되기를 기다리거나 자동으로 재기동을 시작하도록 설계되어 있다. 제공되는 정보는 고도의 기술적 성격을 띠며 시스템 관리자나 소프트웨어 개발자가 문제를 진단하는 것을 돕기 위한 목적을 가진다. 커널 패닉은 사용자 공간 외부에서 발생하는 오류로 인해서도 발생할 수 있다. 예를 들어, 많은 유닉스 운영체제는 사용자 공간에서 실행되는 Init 프로세스가 종료되면 패닉을 일으킨다.
유닉스 커널은 오류 감지 메커니즘으로 표명(assertions)을 사용하여 내부 일관성과 런타임 무결성을 유지한다. 하드웨어와 소프트웨어가 올바르게 작동해야 한다는 것이 기본 가정이며, 표명에 실패하면 패닉, 즉 모든 시스템 활동을 자발적으로 중단하는 결과로 이어진다. 커널 패닉은 유닉스의 초기 버전에서 도입되었으며 유닉스와 그 전신인 멀틱스의 설계 철학 간의 큰 차이를 보여주었다. 멀틱스 개발자 톰 밴 블렉은 유닉스 개발자 데니스 리치와 이 변화에 대해 나눴던 대화를 회상한다.
나는 데니스에게 내가 멀틱스에서 작성하고 있던 코드의 절반 이상이 오류 복구 코드라고 말했다. 그는 "우리는 그런 것들을 모두 뺐네. 오류가 발생하면 panic이라는 루틴을 호출하는데, 호출되면 기계가 멈추고, 복도에서 '야, 재기동해!'라고 소리치면 되지"라고 말했다.
원래의 panic() 함수는 제5판 유닉스부터 VAX 기반의 UNIX 32V까지 본질적으로 변하지 않았으며, 다른 정보 없이 오류 메시지만 출력하고 시스템을 무한 유휴 루프(idle loop) 상태로 빠뜨렸다. 유닉스 코드베이스가 개선됨에 따라 panic() 함수 또한 콘솔에 다양한 형태의 디버깅 정보를 덤프하도록 개선되었다.
패닉은 하드웨어 고장이나 운영체제의 소프트웨어 버그로 인해 발생할 수 있다. 많은 경우, 운영체제는 오류 발생 후에도 지속적인 운영이 가능하다. 시스템이 불안정한 상태라면, 보안 침해나 데이터 손상을 위험을 무릅쓰는 대신 운영체제가 추가 피해를 방지하기 위해 중단되며, 이는 오류 진단을 용이하게 하고 자동으로 재시작될 수 있게 돕는다.
소스 코드에서 커널 바이너리 이미지를 다시 컴파일한 후, 부팅 중에 발생하는 커널 패닉은 커널이 올바르게 구성, 컴파일 또는 설치되지 않았을 때 흔히 발생하는 문제이다. 추가 하드웨어나 오작동하는 RAM도 운영체제와의 비호환성 또는 누락된 장치 드라이버로 인해 시작 시 치명적인 커널 오류의 원인이 될 수 있다. 커널은 루트 파일 시스템을 찾을 수 없는 경우에도 panic() 상태로 들어갈 수 있다. 커널 사용자 공간 초기화의 마지막 단계에서 Init 생성(spawning)에 실패하면 보통 패닉이 발생한다. 시스템을 사용할 수 없게 되므로 init 프로세스가 종료되어도 패닉이 유발될 수 있다.
다음은 kernel_init()에서 리눅스 커널의 최종 초기화 구현 예시이다:
리눅스 커널은 초기부터 기초적인 panic() 함수를 구현했으며, 버전 0.01의 원래 구현은 단순히 다음과 같았다:
그러나 그 이후로 커널 자체가 진화함에 따라 패닉 루틴은 점점 더 정교해졌다.
리눅스 6.10부터는 drm_panic이라는 새로운 기능이 병합되어, DRM 드라이버가 블루스크린 스타일의 패닉 화면을 그려 사용자에게 패닉 발생을 알릴 수 있게 되었다. 이를 통해 패닉이 발생했을 때 디스플레이 서버가 실행 중이었더라도 패닉 화면을 표시할 수 있다.
리눅스 6.12부터는 drm_panic이 확장되어 스택 트레이스를 QR 코드로 인코딩할 수 있게 되었다.
현재 세 가지 대안은 user(기본값), kmesg(구형 방식), QR 코드이다.
리눅스의 커널 패닉은 다른 유닉스 계열 시스템과 유사하게 나타나지만, 심각하지만 치명적이지 않은 오류는 리눅스 커널 웁스라고 알려진 또 다른 오류 상태를 생성할 수 있다. 이 경우 커널은 보통 문제를 일으킨 프로세스를 종료(kill)한 후에도 계속 실행된다. 웁스가 일부 하위 시스템이나 리소스를 사용할 수 없게 만들 수 있으므로, 나중에 전체 커널 패닉으로 이어질 수 있다.
리눅스에서 커널 패닉이 발생하면 키보드의 LED가 깜빡이며 치명적인 상태임을 시각적으로 알려준다.
Mac OS X 10.2부터 10.7까지 커널 패닉이 발생하면 컴퓨터는 사용자에게 시스템 재기동이 필요함을 알리는 다국어 메시지를 표시한다. 10.2 이전에는 더 전통적인 유닉스 스타일의 패닉 메시지가 표시되었으며, 10.8 이후부터는 컴퓨터가 자동으로 재기동되고 메시지는 그 이후 건너뛸 수 있는 경고로만 표시된다. 메시지 형식은 버전에 따라 다르다:
10.0–10.1: 시스템이 화면에 텍스트를 표시하여 오류에 대한 세부 정보를 제공하고 응답하지 않게 된다.
10.2: 검은색 투명 커튼이 내려오고 흰색 배경에 컴퓨터를 재시작해야 한다는 메시지가 표시된다. 메시지는 영어, 프랑스어, 독일어, 일본어로 표시된다.
10.3–10.5: 10.2와 유사하지만 오류 메시지의 배경이 어두운 회색이다.
10.6–10.7: 텍스트가 수정되었으며 이제 스페인어 번역이 포함된다.
10.8 이후: 컴퓨터가 응답하지 않다가 즉시 재기동된다. 재시작 후 부팅을 계속하기 전에 컴퓨터가 재시작된 원인을 알리는 메시지가 몇 초간 표시된다. 메시지에는 이제 중국어 번역이 포함된다.
MacOS 10.8에서 첫 번째 패닉 발생 후 3분 이내에 5번의 새로운 커널 패닉이 발생하면 Mac은 30초 동안 금지 기호를 표시하고 종료된다. 이를 "반복되는 커널 패닉(recurring kernel panic)"이라 한다.
10.2 이상의 모든 버전에서 텍스트는 전원 기호 위에 겹쳐서 표시되며 전체 화면은 아니다. 디버깅 정보는 NVRAM에 저장되고 재기동 시 로그 파일에 기록된다. 10.7에는 커널 패닉 후 자동으로 재시작하는 기능이 있다. 10.2 이상의 경우, 일부 상황에서는 전원 기호 외에도 오류를 상세히 설명하는 흰색 텍스트가 나타날 수 있다.
출처: 커널 패닉 (CC BY-SA)
확인된 구조화 정보, 사용자 의견, AI가 찾은 관계를 구분해 표시해요.
아직 댓글이 없어요. 먼저 한마디 남겨 보세요.