행(컴퓨팅)

Hang (computing)

컴퓨팅에서 프로세스 또는 시스템 중 하나가 입력에 응답하지 않을 때 행업 또는 프리즈가 발생합니다.일반적인 예로는, 컴퓨터의 그래픽 유저 인터페이스[a](Microsoft Windows 등)가, 키보드로 입력하는 유저나 마우스를 이동하는 유저에 응답하지 않게 되는 경우가 있습니다.이 용어는 클라이언트와 서버 모두에서 광범위한 동작을 포함하며 그래픽 사용자 인터페이스의 문제에만 국한되지 않습니다.

행업에는 무한 루프 또는 장기 무정전 계산, 자원 고갈(스래시), 하드웨어 성능 저하(스래시), 컴퓨터 네트워크 속도 저하, 설정 오류, 호환성 문제 등의 소프트웨어 또는 하드웨어 장애와 같은 다양한 원인과 증상이 있습니다.기본적인 원인은 일반적으로 자원 고갈입니다.다른 프로세스에서 사용되고 있거나 단순히 불충분하기 때문에 시스템 일부에 필요한 자원을 사용할 수 없습니다.종종 원인은 여러 요인의 상호작용으로 인해 "hang"을 기술적인 용어라기보다는 느슨한 포괄적 용어로 만듭니다.

행업(hang)은 하드웨어 속도가 느린 경우 등 스스로 해결되는 상태에 의해 일시적으로 발생할 수 있습니다.또, 하드웨어 또는 소프트웨어의 로직 에러와 같이, 영속적으로 행업 해, 수동 조작이 필요한 경우도 있습니다.많은 최신 운영체제에서는 재부팅이나 로그아웃 없이 정지된 프로그램을 강제로 종료할 수 있습니다.모바일 디바이스용으로 설계된 운영체제 등 일부 운영체제는 이를 자동으로 실행할 수도 있습니다.시스템 전체에 영향을 주는 행업 정도가 심할 경우 유일한 해결책은 전원을 껐다 켜거나 리셋 버튼을 눌러 시스템을 재부팅하는 입니다.

행은 장애가 즉시 발생하며 [citation needed]입력 응답과는 무관한 크래시와는 다릅니다.

멀티태스킹

멀티태스킹 운영체제에서는 시스템 전체에 미치는 영향은 크게 다르지만 리소스 블록이나 무한 루프 등 개별 프로세스 또는 스레드가 고착될 수 있습니다.공동 멀티태스킹시스템에서는 양보하지 않고 고착된 스레드는 실행 중인 스레드로 쐐기되어 다른 스레드의 실행을 방해하기 때문에 시스템이 중단됩니다.

이와는 대조적으로, 현대의 운영 체제는 주로 Windows 2000과 그 후속 제품, LinuxApple의 MacOS와 같은 선제적인 멀티태스킹을 사용합니다.이러한 경우, 1개의 스레드가 고착되어 있다고 해서 반드시 시스템이 정지하는 것은 아닙니다.이는 타임 슬라이스가 만료되었을 때 운영체계가 스레드를 프리엠프트하여 다른 스레드를 실행할 수 있기 때문입니다.스레드가 중단되면 스케줄러는 모든 프로세스가 [1]중단되지 않도록 다른 상호의존 태스크 그룹으로 전환할 수 있습니다.단, 스레드가 정지되어 있는 경우에도 리소스가 소비됩니다.적어도 스케줄링 엔트리가 실행되고 있는 경우(예를 들어 무한 루프 상태에 있는 경우 등), 스케줄 되어 있을 때 프로세서의 사이클과 전력이 소비되기 때문에 시스템이 정지하지 않아도 느려집니다.

그러나 프리엠프티브 멀티태스킹이 실행되어도 시스템이 행업할 수 있으며, 주로 IO나 메모리 등의 다른 자원을 독점함으로써 시스템이 행업할 수 있습니다.예를 들어 파일 시스템을 차단하는 프로세스로 인해 시스템이 중단되는 경우가 많습니다.

행업 중에 행잉 프로그램 상단의 창문 주위를 이동하면 창문의 [2]자국이 다시 그려질 수 있습니다.

원인들

하드웨어에 의해 컴퓨터가 간헐적으로 행업하거나 컴퓨터 내의[3] 다른 하드웨어와 일치하지 않는 경우가 있습니다(업그레이드 시 발생할 수 있습니다).또한 하드웨어는 먼지와 열로 인한 손상으로 인해 시간이 지남에 따라 결함이 발생할 수 있습니다.

또한 프로그래머가 루프에 대한 잘못된 종단 조건을 가지고 있거나, 공동 멀티태스킹 운영체제에서 다른 태스크에 양보하는 것을 잊어버린 경우에도 행이 발생할 수 있습니다.달리 말하면,[4] 대부분의 소프트웨어 관련 행은 발생하지 않는 이벤트가 발생하기를 기다리는 스레드에 의해 발생합니다.이것은 무한 루프라고도 불립니다.

행의 또 다른 원인은 프로세스 의 통신 레이스 상태입니다.한 프로세스는 두 번째 프로세스에 신호를 보낸 후 응답을 수신할 때까지 실행을 중지할 수 있습니다.두 번째 프로세스가 비지 상태일 경우 신호가 프로세스에 도달할 때까지 강제로 대기합니다.단, 두 번째 프로세스가 첫 번째 프로세스에 신호를 전송하고 있는 경우 두 프로세스 모두 상대 프로세스가 신호에 응답할 때까지 영원히 대기하고 상대방의 신호를 보지 못합니다(이 이벤트는 교착 상태라고 불립니다).프로세스가 중단되지 않으면 프로세스가 중단되어 종료해야 합니다.적어도 1개의 프로세스가 중요한 커널 프로세스인 경우 시스템 전체가 중단되어 재시작해야 할 수 있습니다.

컴퓨터가 실제로 매우 느리게 처리될 때 행업하는 것처럼 보일 수 있습니다.이는 한 번에 실행 중인 프로그램이 너무 많아 메모리(RAM)가 부족하거나 메모리 조각화, 하드웨어 액세스 속도가 느리거나(특히 리모트 디바이스에 대한 액세스 속도가 느림), 시스템 API 속도가 느림 등이 원인일 수 있습니다.스파이웨어와 같이 몰래 설치된 숨겨진 프로그램이 원인일 수도 있습니다.

솔루션

대부분의 경우 프로그램이 행업한 것처럼 보일 수 있지만 진행 속도가 느리기 때문에 몇 분만 기다리면 작업이 완료됩니다.

최신 운영체제를 들어 Unix kill 명령이나 Windows의 태스크 매니저의 "작업 종료" 버튼과 같은 그래픽 수단을 사용하여 정지된 프로세스를 종료하는 메커니즘을 제공합니다(목록에서 특정 프로세스를 선택하고 "작업 종료"를 누릅니다).MS-DOS를 실행하는 시스템, Windows 또는 Classic Mac OS의 초기 버전 등 오래된 시스템에서는 행업 시 완전히 재부팅해야 하는 경우가 많았습니다.

사람의 조작이 제한된 임베디드 디바이스에서는, 행업시에 워치독 타이머를 사용해 컴퓨터를 재기동할 수 있습니다.

메모들

  1. ^ 윈도 제목에 "(응답하지 않음)" 텍스트가 추가됩니다.Windows Vista 에서는, 유저의 조작을 시도했을 때에, 프로그램의 응답이 없는 것을 명확하게 하기 위해서, 투과성의 흰색 레이어가 윈도우의 내용을 커버합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ US 6052707, D'Souza, David, "협력 태스크 그룹과의 선제적 멀티태스킹", 1996-06-21, 2000-04-18 발행
  2. ^ "Nostalgia: Dragging the Windows XP error dialog". Archived from the original on 2022-01-19. Retrieved 2022-01-19.
  3. ^ "How to Troubleshoot Computer Hangs During Hardware Detection". Microsoft Support. 2007-01-27. Archived from the original on 2016-03-14. Retrieved 2018-04-13.
  4. ^ Calvin Hsia (2006-11-15). "Here's an infinite loop that will hang your machine". Microsoft Blogs. Archived from the original on 2018-04-14. Retrieved 2018-04-13.