시스템이 응답하지 않는 이유는 무엇입니까?


12

방금 dot너무 큰 입력 파일로 합리적인 시간 내에 렌더링 할 수없는 (직접 그래프를 그리는 프로그램)을 실행 했습니다.

내 전체 시스템이 얼어 붙었습니다. Ctrl+ Alt+ F1를 사용하여 텍스트 콘솔로 간신히 만들 dot수는 있지만 몇 분이 걸렸습니다.

왜 시스템이 이와 같은 것을 허용합니까? 왜 dot시스템의 99 % 와 같이 중요하지 않은 프로그램을 제공하고 응답을 유지하기 위해 나머지 1 %를 사용합니까?


답변:


15

이것이 GNU / Linux 및 기타 멀티 태스킹 시스템이 작동하는 방식으로, 실행중인 프로세스간에 프로세서를 공유하며 dot99 %는 아니지만 99 % 동안 100 %를 갖습니다. 각 프로세스는 특정 기간 동안 프로세서를 지배합니다.

이것은 스케줄러에 의해 처리됩니다 (리눅스는 여러 스케줄러가 있으며 일부는 일반적인 전략을 사용하고 일부는 사용자 인터페이스에 더 많은 시간을 주려고하는 등).

이제 귀하의 경우 문제는 dot프로세서 시간이 많이 걸리지 않고 메모리가 많이 소요되었을 수 있습니다. 그리고 프로그램이 너무 많은 메모리를 사용하면 스 래싱 이 발생합니다. 이는 프로세스를 dot많이 멈추는 것이 아니라 커널이 디스크 사이에서 메모리 페이지를 앞뒤로 이동해야하기 때문에 정확히 프로세스입니다 (스왑 파티션) 그리고 시스템 메모리.

dotCPU 시간의 99 % 만 사용 하더라도 텍스트 터미널로 변경하는 것이 거의 즉각적 일 수 있습니다. 커널은 dot메모리에서 항목 을 이동 하여 키를 볼 수 X있도록 메모리 에 다시 넣을 X수 있어야합니다. 텍스트 터미널을 누르고 이동하면 커널 은 여전히 ​​실행중인 X메모리에서 벗어나고 텍스트 터미널 프로세스 (어쩌면 ?)를 메모리로 다시 이동해야합니다 . (이것이 지저분 해 보인다면, 그 예가 지저분하기 때문이 아니라 현실 지저분합니다.)dotdotlogin

예를 들어, 텍스트 터미널에 로그인하면 키를 누르거나 백 스페이스를 치면 행복하게 실시간으로 발생하지만 작은 도구를 실행하는 것처럼 간단한 작업을 수행 ps하면 "동결"됩니다. "메모리를로드해야하기 때문에 잠시 동안 ps(또한 ps파일 시스템에서 요청할 수있을 때까지 데이터를 메모리로 이동하는 데 사용되는 디스크 I / O 대기열에서 대기해야 함 ) .


흠, 그래서 더 나은 사용자 경험을하는 방법은 특정 프로그램을 " sticky " 로 지정하여 프로그램 이 스왑 아웃되는 것을 방지하는 것입니다.
Christoph Wurm

70 년대와 '스티키'비트의 원래 의미론 이후로 끈적 거림은 그렇게 작동하지 않았습니다. 당신은 할 수 가 스왑되지 않을 수 있지만, 메모리에 (의 일부) 프로그램을 잠급니다. 메인 메모리는 비싼 사치이므로 모든 것을 위해 할 수는 없습니다.
Alexios

@njsg, 좋은 설명 감사합니다. 후속 질문 : 스 래싱을 방지 할 방법이 없습니까? 스와핑은 메모리 사용을 전체적으로 더 효과적으로 만든다는 것을 이해하지만 한계가 있어야합니다. X만큼 필수적인 프로세스를 메모리에서 벗어나면 안됩니다. 필수 프로세스가 제거되지 않도록 유닉스 계열 시스템을 구성하는 방법이 있습니까? 서버에서는 다른 것이지만 데스크톱에서는 데스크톱이 나와 대화하는 것을 멈추는 것보다 메모리가 많이 걸리는 프로세스가 필요합니다.
A. Donda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.