![프로세스 전환으로 인해 컴퓨팅 경험이 중단되지 않는 이유](https://rvso.com/image/1416705/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EC%A0%84%ED%99%98%EC%9C%BC%EB%A1%9C%20%EC%9D%B8%ED%95%B4%20%EC%BB%B4%ED%93%A8%ED%8C%85%20%EA%B2%BD%ED%97%98%EC%9D%B4%20%EC%A4%91%EB%8B%A8%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0.png)
우리 모두는 CPU가 실행 중인 프로세스 간에 전환하고 있다는 것을 알고 있지만, CPU가 전환되고 애플리케이션을 사용하는 동안 왜 중단이 발생하지 않습니까?
이는 프로세스 간 전환 속도 때문이라고 말하고 싶지만, 인간이 단일 애플리케이션에서 중단(또는 중단)을 경험하게 될 정도로 실제로 얼마나 많은 프로세스가 CPU 성능에 영향을 미치는지 궁금합니다. 최신 운영 체제에도 나타날까요?
답변1
나는 이것이 프로세스 간 전환의 속도 때문이라고 말하고 싶습니다.
당신이 올바른지. 그러나 여전히 마이크로프로세서가 수행하는 작업은 연속적인 방식이 아닌 개별 단계로 수행됩니다. 모든 클록 주기마다 CPU는 프로그램 카운터가 가리키는 메모리의 내용을 가져옵니다. 다음 클록 사이클에서는 명령어 등을 디코딩합니다. (알아차릴 만큼) 충분히 빨라질 수 있다면 연속적이라고 생각하는 음악이 실제로 얼마 동안 재생된 다음 멈추고 다시 재생되는 것을 알 수 있습니다.
빠르고 복잡한 짐승전환 과정을 엄청나게 빠르게 만드는 것을 단기 스케줄러(CPU 스케줄러)라고 합니다. 몇 밀리초마다 호출되고 사용자 관점에서 유용한 작업을 수행하지 않기 때문에 속도가 빨라야 합니다. 구현마다 약간의 차이가 있을 수 있지만 거의 모든 스케줄러는 활성, 백그라운드 등과 같은 다양한 프로세스 클래스에 대해 우선 순위 대기열을 유지합니다.
따라서 수천 개의 프로세스가 컴퓨터에서 실행되고 있더라도 그 중 소수만이 사용자와 직접 상호 작용합니다. 스케줄러는 프로세스를 전환할 때 이 정보를 고려합니다. 업데이트 확인 프로세스는 기다릴 수 있지만 실시간 음악 스트리밍은 기다릴 수 없기 때문입니다.
그런데 실제로 인간이 중단을 경험할 정도로 CPU 성능에 영향을 미치는 프로세스가 얼마나 되는지 궁금합니다.
마법의 숫자는 없으며 성능에 영향을 미치는 다른 요소(메모리 속도, 크기 등)가 너무 많습니다. 스케줄러 성능이 문제가 되기 전에 메모리가 부족해질 것이라고 생각합니다. 브레이크 아웃으로 나타날 수 있는 한 가지는 우선 순위가 높은 인터럽트 루틴이 호출되어 오랫동안 실행되는 경우입니다.
재미있는 사실: - 시스템에서 더 나은 사용자 경험을 만들기 위해 (잊었습니다) Steve Jobs는 포인터가 이동하는 동안 지연되지 않도록 마우스 인터럽트를 가장 높은 우선 순위로 할당하도록 Apple 엔지니어에게 지시했습니다.