개별 프로그램의 PC 클럭 속도를 변경하는 방법은 무엇입니까?


2

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

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

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

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

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

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

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


2
터보 버튼을 찾고 계십니까?
코디 그레이

@Code Grey-와우, 그거 진짜 진짜 !!!!!!
Preet Sangha

실제로 "Turbo Off"버튼을

그게 바로 터보 버튼이었습니다 ....
Preet Sangha

답변:


1

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

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

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


타이머 관련 API 호출이 없습니다. 그래서 나는 그들이 롤 타이머를 사용하고 있다고 생각합니다. 오래된 방법은 x = 0과 같은 for / next 루프를 작성하는 것이 었습니다. x + = 1입니다. 그런 다음 원하는 지연을 얻는 데 필요한 루프 반복 횟수를 알아냅니다. 이 방법은 특정 클럭 속도에서만 작동합니다.

참고 : 게이머가 느려진 제품을 사용한다고 언급했지만 우리의 문제는 여전히 우리가 묶고있는 오래된 엔터프라이즈 앱입니다. 우리의 다른 문제는 원저자가 통과했다는 것입니다. 따라서 제대로 작동하려면이 앱을 다시 작성해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.