구루 명상

1 개요[ | ]

Guru Meditation
구루 명상

Guru Meditation은 Amiga 컴퓨터가 충돌할 때 표시되는 오류 알림으로 시작되었다. 이로 인해 이러한 웹사이트가 충돌하거나 다른 문제가 발생할 때 많은 인터넷 사용자들이 "Guru Meditation" 메시지를 나온다.[2] 이는 Microsoft Windows 운영 체제의 "죽음의 블루 스크린" 또는 Unix의 커널 패닉과 유사하다.

또한 Varnish, VirtualBox 등에서 복구할 수 없는 오류 메시지로 사용되기도 한다.

2 기원[ | ]

"구루 명상 오류(Guru Meditation Error)"라는 용어는 아미가(Amiga)의 초창기 시절 사내 농담에서 유래되었다. 이 회사는 아타리 2600 홈 비디오 게임 콘솔용 조이보드(Joyboard)라는 제품을 보유하고 있었는데, 이는 발로 조작하는 조이스틱과 유사한 게임 컨트롤러로, Wii 밸런스 보드와 비슷했다. 아미가 컴퓨터 운영체제 개발 초기, 회사의 개발자들은 시스템의 빈번한 충돌에 매우 좌절하여 긴장을 풀기 위한 기술로 게임을 개발했다. 이 게임에서 사람은 조이보드 위에 인도 구루처럼 다리를 꼬고 앉아야 했다. 플레이어는 매우 고요하게 있어야 했고, 게임의 승자는 가장 오랫동안 움직이지 않는 사람이었다. 플레이어가 너무 많이 움직이면 "구루 명상" 오류가 발생했다.

3 Amiga "구루 명상" 오류[ | ]

이 경보는 시스템에 치명적인 문제가 발생했을 때 나타났다. 시스템에 복구 수단이 없으면 이 경보를 표시할 수 있으며, 심각한 결함이 많은 시스템에서도 나타날 수 있었다. 극단적인 경우, 시스템 메모리가 완전히 소진되었을 때도 이 경고가 표시될 수 있었다.

경고 메시지의 텍스트는 대부분의 사용자에게 전혀 이해되지 않았다. 매우 기술적으로 능숙한 Amiga 사용자만이 예를 들어, 예외 3이 주소 오류를 의미하며 프로그램이 정렬되지 않은 경계에서 워드에 접근하고 있다는 것을 알 수 있었다. 이러한 전문 지식이 없는 사용자는 "구루(Guru)"를 찾거나 단순히 머신를 재부팅하고 운에 맡길 수밖에 없었다.

4 기술 설명 (Amiga)[ | ]

Guru Meditation이 표시될 때, 선택 옵션은 왼쪽 마우스 버튼을 눌러 재부팅하거나, 오른쪽 마우스 버튼을 눌러 ROMWack을 호출하거나 수동으로 재부팅하는 것이다. ROMWack은 운영체제에 내장된 최소한의 디버거로, 9600 비트/초 속도의 터미널을 시리얼 포트에 연결하여 접근할 수 있다.

Guru Meditation 오류 메시지 시뮬레이션
Guru Meditation 오류 메시지 시뮬레이션
Recoverable Alert 메시지 시뮬레이션
Recoverable Alert 메시지 시뮬레이션

경보 자체는 화면 상단에 위치한 검은색 직사각형 상자로 나타난다. 정상적인 Guru Meditation의 경우 경계선과 텍스트는 빨간색으로, Recoverable Alert(또 다른 종류의 Guru Meditation)의 경우 녹색/노란색으로 표시된다. 화면이 검게 변할 수 있지만, 전원 LED는 경보가 나타나기 몇 초 전에 항상 완전 밝기와 절반 밝기 사이에서 번갈아 가며 깜박인다. AmigaOS 1.x, 즉 Kickstart 1.1, 1.2, 1.3으로 알려진 ROM에서 프로그래밍된 경우 오류는 항상 빨간색이다. AmigaOS 2.x와 3.x에서는 Recoverable Alert가 노란색으로 표시되며, 일부 초기 2.x 버전에서는 녹색으로 표시된다.

치명적 알림은 모든 OS 버전에서 항상 빨간색이며 종료된다. 드문 경우지만, 예를 들어 더 고급 Kickstart 3.x ROM Amiga가 호환 모드에서 디스크에서 부팅하는 조건부 부팅을 하는 오래된 Kickstart(예: 1.1) 프로그램이 충돌하고 빨간색 Guru Meditation이 발생하지만, 왼쪽 마우스 버튼을 눌러 복원되며, 더 새로운 Kickstart가 오래된 ROM의 저수준 칩셋 호출을 인식하고 직접 하드웨어를 조작하는 경우가 있다.

오류는 두 개의 필드로 표시되며, 점으로 구분된다. CPU 오류의 경우 형식은 #0000000x.yyyyyyyy이고, 시스템 소프트웨어 오류의 경우 #aabbcccc.dddddddd 형식이다. 첫 번째 필드는 CPU 오류가 발생한 경우 발생한 Motorola 68000 예외 번호이거나, 시스템 소프트웨어 오류인 경우 내부 오류 식별자(예: "메모리 부족" 코드)이다. 두 번째 필드는 태스크 구조체의 주소 또는 할당 또는 해제가 실패한 메모리 블록의 주소일 수 있다. 이 숫자는 결코 오류를 발생시킨 코드의 주소가 아니다. 충돌 원인이 불확실한 경우 이 숫자는 48454C50으로 표시되며, 이는 16진수 ASCII 문자로 "HELP"(48=H, 45=E, 4C=L, 50=P)를 의미한다.

4.1 구루 명상 핸들러[ | ]

AmigaOS 2.04 버전 이전에 Hypertek/Silicon Springs Development corp.에서 만든 상용 오류 핸들러인 GOMF(Get Outta My Face)가 있었다. 이 프로그램은 다양한 종류의 오류를 처리할 수 있었으며, 사용자에게 문제를 일으킨 프로세스와 관련된 화면을 제거하거나 구루 명상을 표시할 수 있도록 선택할 수 있게 했다. 많은 경우, 문제를 일으킨 프로세스를 제거함으로써 데이터를 저장하고 실행 중인 프로그램을 종료한 후 시스템을 재부팅할 수 있었다. 손상이 심하지 않은 경우, 시스템을 계속 사용할 수 있었다. 그러나 모든 오류에서 사용자를 구제하지는 못했으며, 때로는 이 오류 메시지를 여전히 보게 되었다.

4.2 복구가능 경보[ | ]

복구가능 경보는 컴퓨터 시스템에서 발생하는 비치명적인 충돌을 의미한다. 대부분의 경우, 복구가능 경보가 발생한 후에도 작업을 재개하고 파일을 저장할 수 있지만, 일반적인 빨간색 구루 명상은 즉시 재부팅을 초래한다.

4.3 시스템 소프트웨어 오류 코드[ | ]

첫 번째 바이트는 영향을 받는 시스템 영역을 지정합니다. 오류가 데드엔드 경보인 경우 최상위 비트가 세팅됩니다.

시스템 영역 시스템의 특정 부분
라이브러리 01 Exec 라이브러리
02 Graphics 라이브러리
03 Layers 라이브러리
04 Intuition 라이브러리
05 Math 라이브러리
06 CList 라이브러리
07 AmigaDOS 라이브러리
08 RAM 핸들러 라이브러리
09 Icons 라이브러리
장치 10 Audio 장치
11 Console 장치
12 Gameport 장치
13 Keyboard 장치
14 Trackdisk 장치
15 Timer 장치
리소스 20 CIA 리소스
21 Disk 리소스
22 Misc 리소스
기타 영역 30 부트스트랩
31 워크벤치
32 Diskcopy

5 레거시[ | ]

홈브류 DS 게임을 플레이하는 3DS에서의 Guru Meditation.
  • AmigaOS 버전 4.0 이후부터 "Guru Meditation" 대신 "Grim Reaper"를 사용하지만, 프롬프트 상자에서 잠시 Guru Meditation 번호를 언급합니다.
  • MorphOS는 "Application Is Meditating" 오류 메시지를 표시합니다. 애플리케이션을 종료하려고 하면 운영 체제가 복구될 수 있지만, 여전히 재시작을 권장합니다.
  • Varnish는 심각한 오류에 대해 Guru Meditation을 참조합니다.
  • ESP8266ESP32 마이크로컨트롤러는 "Guru Meditation Error: Core X panic'ed" (여기서 X는 크래시된 코어에 따라 0 또는 1)와 코어 덤프 및 스택 트레이스를 표시합니다.
  • VirtualBox는 가상 머신에서 트리플 폴트로 인해 발생하는 심각한 오류에 대해 "Guru Meditation"을 사용합니다.
  • E23은 심각한 오류가 발생하면 "Guru Meditation"을 표시하고 재시작합니다.
  • 일부 Nintendo DS 홈브류 타이틀은 문제가 발생하면 "Guru Meditation" 오류를 표시하는데, 이는 해당 타이틀이 크래시할 때 발생하는 것으로 보입니다.

6 같이 보기[ | ]

7 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}