2009-07-08 4 views
2

바이트로 채워진 동적 배열이 BlockRead()를 사용하여 .raw 파일에서 읽혀지며이 작업에는 논리적으로 지옥이 필요합니다. 하드 디스크 드라이브에서 프로그램 실행 시간에 사용되는 읽기/쓰기/검색의 최대 양을 제한하는 방법이 있는지 알고 싶었습니다. *****델파이 및 하드 디스크 I/O 리소스 사전 캐싱, 읽기/쓰기/찾기 매개 변수 제한

[설명] : Windows 셸/내부 앱 리소스로 작업을 수행하는 동안 HDD에서 최대 읽기 속도를 설정하려고했습니다. 이 순간에 앱은 hdd의 성능에 매우 민감합니다. 그러나 시스템이 디스크 작업을 관리 할 수 ​​없기 때문에 여러 대의 컴퓨터에서 동결/잠김이 발생합니다 ...

나는 최악의 경우에 어떤 방법, 튜토리얼에 대해서 알고 싶었습니다. 함수 선언 및 클래스 정보를 찾을 수 있습니다.

필자가 아는 바처럼 Delphi의 기반이되는 Pascal은 TStream이나 TPipeline 사용법 (TSocket은 좋지 않을 것입니다.)과 같이 쉬운 접근법을 제공하지 않습니다 ... 스트림을 많이 사용 했으므로, TFileStream을 일부 수중 돌 있었기 때문에 나는 어쨌든

... 그것을 좋아하지 않았다 - 나에게 디스크 성능 관리에 적어도 소개를 적어주세요 ...

+0

정확히 묻는 중입니다. 디스크 읽기는 쉘 리소스와 어떻게 연관되어 있습니까? – gabr

+0

"hdd에서 프로그램 런타임에 사용되는 최대 읽기 양 제한"이란 무엇을 의미합니까? –

+0

Windows 쉘/내부 앱 리소스로 작업을 수행하는 동안 HDD에서 최대 읽기 속도를 설정하려고했습니다. 이 순간에 응용 프로그램은 HDD의 성능에 매우 민감합니다. 그러나 시스템이 디스크 작업을 관리 할 수 ​​없기 때문에 여러 컴퓨터에서 정지/잠김이 발생합니다 ... –

답변

1

Windows API 또는 일부 Delphi 함수를 사용하여 IO 작업을 제한 할 수있는 방법이 없습니다. (예를 들어 스레드와 다름)

잠자기 명령이나 코드와 비슷한 것을 추가하여 IO 액세스 속도를 늦출 수 있습니다.

WMI을 사용하여 현재 IO 활동을 읽고 IO 활동이 많은 경우 지연을 늘릴 수 있습니다.

+0

hm, nop, sleep은 프로그래밍에있어서 고토로서 (imho) 피하는 것이 좋습니다. 유일한 해결책은 꽤 플랫폼 의존적입니다. 그 나쁜. 나는 WMI SnapIn 접근을 통해 열심히 길을 가야 할 것이라고 생각합니다 ... "지연", btw - 당신은 하드 디스크 섹터를 찾고 탐색하는 것을 의미합니까? –

+0

예, 그래서 "비슷한"을 추가했습니다. –

+0

hm, 알았습니다. MSDN 리소스를 검색하고 멀티 스레딩 매뉴얼을 읽어야 할 것입니다. 너무 나쁘면 거의 모든 것이 C에 집중됩니다 (4 개 멀티 스레딩 매뉴얼은 델파이에서도 마찬가지입니다). –

1

RE를 "나는에서 최대 읽기 속도를 설정하는 의미 HDD ... "

자신을 조절하십시오. 백그라운드 스레드에서 디스크 액세스를 수행하고 필요한 처리량에 따라 작업을 조절하십시오.