|
INtime
Tech
INtime Top
RT어플리케이션의
로드 옵션
RT어플리케이션 로더 옵션
RT어플리케이션의 로드시에는, 주로 다음의 옵션지정이 가능합니다: ()
안의 문자는 커멘드 라인 문자열입니다.
-
최대 풀 사이즈 (-pmax)
RT어플리케이션 로드에 대해서 동적으로 주어지는 최대 메모리풀량입니다. 디폴트로 로드하는 경우, 이 사이즈는 최소 풀 사이즈, 또는
heap 사이즈의 언제나 큰 값이 됩니다. ※INtime Application Wizard를 사용해 작성한 프로젝트에서는, 디폴트치로
heap 사이즈가 1024 Mbyte로 설정되어 있기 때문에, 통상 이 값이 디폴트의 heap 사이즈가 됩니다.
최소 풀 사이즈 (-pmin)
통상 이 값은 설정하지 않습니다. RT어플리케이션 로드에 대해서 동적으로 주어지는 최소 메모리풀량입니다.이 값을 지정하지 않는 경우,
RT어플리케이션 로더는 자동적으로 이 사이즈를 산정합니다. 이 최소 풀 사이즈가 최대 풀 사이즈를 넘었을 경우, 어플리케이션을 로드할 수
없습니다.
가상 메모리 (가상
세그먼트(segment)) 사이즈 (-vseg)
어플리케이션이 실행하기 위한 전주소 스페이스입니다. 최소 사이즈 8MByte(디폴트)로, 이 값보다 작은 값으로는 RT어플리케이션은 실행할
수 없습니다. 이 값은 4 MByte로 말 수 있습니다. 예를 들면, 9 MByte를 지정했을 경우, 실제로 지정되는 가상 메모리(가상
세그먼트(segment)) 사이즈는 12 MByte가 됩니다.
오브젝트 디렉토리 사이즈 (-odir)
RT어플리케이션이 보관 유지할 수 있는 오브젝트 디렉토리 사이즈를 지정합니다. 디폴트는 64입니다. 최소 3, 최대 3840으로 로드할 수
있습니다.
RT어플리케이션의 로드 옵션이 필요한 경우
INtime 어플리케이션은 디폴트 로드 옵션 설정으로 최대 풀 사이즈 1024 KByte, 가상 메모리(가상
세그먼트(segment) ) 사이즈 8 MB, 프로세스 오브젝트 디렉토리 사이즈 64개로 로드 됩니다. RT어플리케이션의 로드시에 로드
옵션이 필요한 케이스는 다음과 같은 경우가 됩니다:
메모리에
관한 에러 (1) AllocateRtMemory()의 콜로 에러가 발생해, 에러치로서 E_MEM(0x0002)가 반환되는 경우 (2)
AllocateRtMemory()의 콜로 에러가 발생해, 에러치로서 E_VMEM(0x00F0)가 반환되는 경우 (3)
MapRtSharedMemory(), 는 MapRtPhysicalMemory()의 콜로 에러가 발생해, 에러치로서 E_VMEM(0x00F0) 가 반환되는 경우 (4) 어플리케이션
로드시에E_PARAM(0x8004)에러가 발생해,
어플리케이션을 로드할 수 없는 경우
【설정안】
용량의
큰 메모리를 확보하는 경우, 이러한 에러가 발생하는 경우가 있습니다. 최대 풀 사이즈를 확보 용량 이상으로 설정해 주세요.
더하고,
공유 메모리, 물리 메모리를 맵 하는 경우, 이러한 에러가 발생하는 경우가 있습니다. 가상 메모리(가상
세그먼트(segment)) 사이즈를 증가해 주세요. ※가상 메모리(가상
세그먼트(segment)) 사이즈는 8 MB를 최소로 해, 4 MB단위로, 통상 최대 풀 사이즈보다 크게 설정합니다.
카탈로그에
관한 에러 (1) CatalogRtHandle()의 콜로 에러가 발생해, 에러치로서E_LIMIT(0x0004)가 반환되는 경우
【설정안】
카탈로그
하는 RT핸들의 수가 디폴트수 64를 넘고 있습니다. 오브젝트 디렉토리 사이즈를
증가합니다.
로드 옵션을 붙여 RT어플리케이션을 로드하는 방법
프로세스 생성
NTX 어플리케이션, RT어플리케이션모두, 동적으로 RT어플리케이션을 로드하기 위해서 이하와 같은 API가
있는:
ntxCreateRtProcess···Windows 어플리케이션으로부터 RT어플리케이션을 로드해, RT프로세스를 생성한다.
CreateRtProcess···RT어플리케이션으로부터 RT어플리케이션을 로드해, RT프로세스를 생성한다.
각 API 모두 프로세스를 로드하기 위한 옵션용의 파라미터를 가지고 있는:
- 값의 설정
이 구조체에의 값의 설정은 BYTE 단위로 실시합니다.【예】ntxCreateRtProcess()에 의해, 최대 풀 사이즈를 20 MB, 오브젝트 디렉토리를 128으로 설정해 RT어플리케이션을
로드하는 경우:
char cRtPath[256];
NTXHANDLE hProcess;
NTXPROCATTRIBS attrib;
attrib.dwPoolMin = 0;
attrib.dwPoolMax = 20971520; //BYTE 단위로 지정합니다.
attrib.dwVsegSize = 0;
attrib.dwObjDirSize= 128;
hProcess = ntxCreateRtProcess( NTX_LOCAL
, cRtPath // RT어플리케이션 패스
, NULL
, &attrib // 어플리케이션 로드 옵션 구조체
, 0 );
|
ldrta.exe에 의한 실행
INtime 어플리케이션 로더(ldrta.exe)에 의해. RTA 파일을 프로세스로서 RT커널 실행 환경에
로드합니다. 이 때 RT어플리케이션 로더에게의 인수로서 커멘드 라인 옵션을 주는 것이 가능합니다. ~커멘드 라인 옵션도, 옵션 구조체와 같은 항목을
갖고 있습니다:

값의 설정 이러한 옵션으로 지정하는 수치를 설정:
예】ldrta에 최대 풀 사이즈를 20 MB, 오브젝트 디렉토리를 128으로 설정한 RT어플리케이션을 로드하는 경우:
ldrta C:\memalloc\debug\memalloc.rta -pmax 20971520 -odir 128
쇼트 컷을 이용하는 방법 (1) 생성한 RT어플리케이션으로부터 쇼트 컷을 작성합니다 (RTA
아이콘상에서 오른쪽 클릭->[쇼트 컷의 작성])
(2) 쇼트 컷의 프롭퍼티를 열어, 링크처를 다음과 같이 하는:
[ldrta에의 패스] [로드하는 RT어플리케이션의 패스] [옵션 커멘드] [수치]
※각[]의 사이는 반각 공백을 들어갈 수 있습니다.~
설정예
ldrta.exe가 배치되어 있는 패스····"C:\Program Files\INtime\bin\ldrta.exe"
로드하는 어플리케이션·····"C:\memalloc\debug\memalloc.rta"
최대 풀 사이즈···········2MB(20971520) BYTE 지정
오브젝트 디렉토리 사이즈····128
"C:\Program Files\INtime\bin\ldrta.exe" C:\memalloc\debug\memalloc.rta -pmax 20971520 -odir 128
샘플
샘플 MemAlloc.lzh에는 여기서 소개한
어플리케이션예가 포함됩니다 :
MemAlloc···더블 클릭(디폴트의 설정)에서는 메모리를 확보 가능한 있어 RT어플리케이션예 : Visual C++ 6.0 프로젝트
ntxAppLoader···memalloc.rta를 로드하기 위해서 옵션 설정을 실시하는 NTX 어플리케이션예 :Visual C++
6.0 프로젝트
PoolMax_Odir···쇼트 컷 파일.커멘드 라인으로서 옵션을 주는 예
|