개별 프로그램의 PC 클럭 속도를 변경하는 방법은 무엇입니까? 발견했습니다. 개별 시스템을

더 빠른 클럭 속도로 CPU에서 너무 빨리 실행되는 일부 오래된 프로그램 (더 이상 소스 코드 없음)이 있습니다. 수면 및 하드웨어 타이머 대신 소프트웨어 지연 ( ‘X’루프 당 CPU 명령 수)을 사용하여 작성된 것으로 추측됩니다. 새 PC에서는 이러한 앱이 더 이상 이벤트가 발생할 때까지 기다리지 않습니다. 더 이상 작동하지 않습니다. 우리는 응용 프로그램을 변경할 수 없으므로 응용 프로그램이 더 느린 클럭 속도로 실행되고 있다고 생각하게하는 방법을 찾으려고 노력하고 있습니다.

PC에서 프로세서 시간을 소비하는 앱을 작성했습니다. 이러한 오래된 앱이 실행되기에 충분하게 속도가 느려집니다. 그러나 “솔루션”은 PC의 모든 프로그램 (및 사용자 상호 작용 등)에 영향을줍니다.

개별 실행 파일 (Mo’Slo 및 Asoftech Speeder)을 대상으로 할 수있는 몇 가지 “프로그램 속도 저하”제품을 발견했습니다. 개별 시스템을 대상으로하는 전체 시스템에는 영향을 미치지 않습니다. 실제로 각 응용 프로그램은 다른 클럭 속도를 볼 수 있습니다. 그러나 우리가 가진 사용자 수에 따라 충분한 양의 제품을 구매하는 것은 비용이 많이 든다.

(FYI … 게이머는이 제품을 사용하여 오래된 게임의 클럭 속도를 느리게하여 새롭고 더 빠른 프로세서에서 올바르게 실행되도록합니다).

이 제품이 개별 애플리케이션의 클럭 속도에 어떻게 영향을 줄 수 있는지 설명 할 수 있는지 궁금합니다.

항상 애플리케이션에 ‘N’의 절대 클럭 속도 ( ‘N’MHz에서 App1을 실행)가 표시된다고 알려주는 것이 가장 좋습니다. 그러나 우리가 할 수있는 모든 것이 호스트 PC의 클럭 속도의 ‘N’%를 볼 수 있다고 앱에 알려주는 것만으로도 사용할 수 있습니다 (호스트 클럭 속도의 30 %에서 App2를 실행하십시오).

어떻게 수행되는지 알아낼 수 있다면 코드를 작성할 수 있습니다.



답변

게임에서 틱을 계산하는 데 사용하는 API를 확인할 수있는 경우 후크를 적용하여 해당 프로그램의 API를 전환 할 수 있습니다. 그러나 플랫폼 별 세부 정보가 없으면 추측에 불과합니다.

예를 들어 Windows에서 16 비트 프로그램을 실행할 때 api (DOS) 호출을 가로 채어 내 코드로 전환하는 어셈블러 썽크를 작성했습니다 .Windows가 제공하는 것 이외의 작업을 수행하십시오.

편집 : QEMU와 같은 가상화 기술을 사용하여 앱에 전송 된 CPU를 제어 할 수 있습니까?


답변

중단 명령을 사용하지 않는 소프트웨어 의 시대를 고려할 때 , 나는 그들이 명령을 수행한다고 가정하고 있으며, 하나의 옵션은 소프트웨어를 느리게 할 수있는 옵션있는 dosbox에서 실행하는 것입니다 . FOSS이므로 코드를 엿볼 수 있습니다.


답변