[회보 보관 ^] [< 볼륨 2, 번호 2] [볼륨 2, 번호 4 >]
Systems Internals 뉴스레터 2권, 3호
http://www.sysinternals.com
Copyright © 2000 Mark Russinovich
2000년 6월 14일 - 이번 호에서는:
사설
SYSINTERNALS의 새 소식
- Regmon v4.25
- ListDlls v2.22
- TDImon v1.0
- AutoRuns v1.1
- LDMDump v1.0
- 4월/6월 내부 칼럼
INTERNALS INFORMATION
- Windows NT 빌드 기록
- Windows NT/2000 타이머 해상도
- 키보드 다시 매핑
- 안전한 시스템 메모리 매핑
- 숨겨진 Windows 98 파일 시스템 로깅
- WinDev '00 West
향후 예정 사항
- "보안" Windows 98 레지스트리 키
스폰서: WINTERNALS 소프트웨어
Systems Internals 뉴스레터는 Winternals Software가 후원하며 웹(http://www.winternals.com.)에서 제공됩니다. Winternals Software는 Windows NT/2K용 고급 시스템 도구의 선도적인 개발업체이자 제공업체입니다. Winternals 소프트웨어 제품에는 Windows NT 4.0용 FAT32, ERD Commander Professional Edition(Windows NT용 고급 부팅 디스크 기능) 및 원격 복구가 포함됩니다.
새로 릴리스된 TCPView Pro를 사용하면 Windows NT 4.0, Windows 2000 및 Windows 95/98 시스템에서 TCP/IP 작업을 모니터링할 수 있습니다. Windows와 함께 제공되는 기본 제공 TCP/IP 모니터링 도구(예: netstat)와 달리 TCPView Pro는 각 TCP/IP 주소와 연결된 프로세스를 보여 주므로 특정 연결 및 작업을 담당하는 애플리케이션을 쉽게 확인할 수 있습니다. TCPView Pro는 동적 보기와 정적 보기를 제공합니다. 정적 보기에는 현재 열려 있는 로컬 IP 주소, 각 엔드포인트와 연결된 프로세스 및 엔드포인트가 연결된 원격 IP 주소가 표시됩니다. 다른 유틸리티에서 사용할 수 없는 동적 보기를 사용하면 프로세스별로 TCP/IP 작업을 실시간으로 볼 수 있습니다.
http://www.winternals.com/products/tcpview.shtml.에서 가격 책정 정보를 얻고 14일 평가판 버전을 다운로드
여러분, 안녕하세요.
Systems Internals 뉴스레터에 오신 것을 환영합니다. 뉴스레터는 현재 22,000명의 구독자를 보유하고 있습니다.
데이브 솔로몬과 저는 "Inside Windows 2000, 3판"을 마무리하는 마지막 단계에 있으며, 이는 이 책이 7월 말이 아닌 8월 중순에 출시될 것임을 의미합니다(출시일이 늦어지지 않으면 Microsoft 제품이라고 할 수 없겠죠). 이제 책은 완성되었으므로 책에 포함된 내용을 간략히 소개해드릴 수 있습니다. 첫째, 이전 버전보다 약 50% 더 많은 콘텐츠를 보유하고 있으며, 4개의 새로운 챕터가 포함되어 있습니다. 목차는 다음과 같습니다.
- 소개
- Architecture
- 시스템 메커니즘
- 시작 및 종료
- 관리 메커니즘
- 프로세스 및 스레드
- 메모리 관리
- 보안
- I/O System
- Storage
- 캐시 관리자
- 파일 시스템
- 네트워킹
2판과 마찬가지로 이 책은 우리가 설명하는 개념을 보여주는 실험으로 가득합니다. 또한 이 책에는 전체 SysInternals 웹 사이트의 복사본이 있는 CD와 실험에 사용하는 몇 가지 도구가 포함되어 있습니다.
제가 이 책을 위해 특별히 쓴 두 가지 도구는 책 리뷰어들로부터 매우 호평을 받았습니다. 첫 번째 도구의 이름은 LiveKD이며 라이브 시스템에서 Windows 2000 커널 디버거(i386kd, kd, WinDbg)를 실행할 수 있습니다. 즉, LiveKd를 시작하여 호스팅할 디버거를 지정한 다음 디버거에 들어가면 크래시 덤프를 디버깅할 때와 마찬가지로 모든 디버거 명령을 사용할 수 있다는 뜻입니다. 이 책에 수록된 거의 모든 디버거 기반 실험은 LiveKD를 사용하여 실행할 수 있으므로 두 번째 시스템이나 직렬 케이블이 없어도 실험을 수행할 수 있습니다.
두 번째 도구는 모든 커널 변수의 실시간 값을 볼 수 있는 성능 모니터 확장입니다. PerfMon에서 사용 중인 비페이징 풀의 양을 모니터링하려는 경우 MmAllocatedNonPagedPool 변수를 선택합니다.
책이 나오면 뉴스레터로 알려드리겠지만, 지금 Amazon.com 링크 www.sysinternals.com/links.htm를 통해 선주문할 수 있습니다. 여느 때처럼 관심이 있을 것 같은 친구에게 뉴스레터를 전달해 주세요.
감사합니다!
-Mark
SYSTEMS INTERNALS의 새로운 소식
REGMON V4.25
Regmon 레지스트리 모니터링 도구에 대한 이 최신 업데이트에는 Windows 2000의 새로운 KeyNameInformation
쿼리 유형 및 시스템 서비스 ZwEnumerateKey
및 ZwQuerykey
에 대한 지원이 포함되어 있습니다. 이 기능은 Win32 애플리케이션에서 사용하기 위해 내보내지는 않지만 시스템에서 사용자별 클래스 등록 레지스트리 하이브 사용의 일부로 ADVAPI32의 레지스트리 함수에 의해 사용됩니다.
Windows 2000의 Win32 애플리케이션에서 레지스트리의 클래스 등록 부분을 열 수 있는 두 가지 방법이 있습니다. HKEY_CLASS_ROOT
또는 HKLM\Software\Classes
부분을 지정할 수 있습니다. 첫 번째는 글로벌 클래스 키와 결합된 사용자별 클래스 키에 대한 핸들을 반환하고, 두 번째는 글로벌 정보에 대한 핸들만 반환합니다. ADVAPI32 레지스트리 함수는 사용자가 전달한 레지스트리 키 핸들의 기본 이름을 검사하여 사용자가 지정한 것만 확인할 수 있으므로 새 쿼리 형식의 요구 사항입니다. 자세한 내용은 에 대한 RegOpenKeyEx
의 SDK 설명서를 참조하세요.
http:www.sysinternals.com/regmon.htm Regmon v4.25를 다운로드합니다.
LISTDLLS V2.22
개발자가 DLL(동적 링크 라이브러리)을 만들 때 링커가 DLL의 이미지 파일에 상대 주소 정보를 만드는 주소인 DLL의 "기본 주소"를 링커에 알립니다. DLL이 기본 주소와 다른 주소로 로드되는 경우 로더는 로드된 DLL 이미지의 모든 상대 주소를 수정하여 차이를 고려해야 합니다.
이러한 수정 또는 재배치는 애플리케이션의 시작 시간을 늘릴 수 있으므로 개발자는 분명히 재배치가 발생하지 않도록 방지하려고 합니다. 그러나 ListDLL과 같은 프로그램의 출력을 살펴보고 부하 주소를 기본 주소와 비교하는 것은 지루합니다. 따라서 ListDLL 버전 2.22는 출력에서 재배치된 DLL을 적어 두는 새 옵션 -r
을(를) 사용합니다.
http://www.sysinternals.com/listdlls.htm.에서 ListDLLs v2.22 다운로드
TDIMON V1.0
TDImon은 강력한 SysInternals 모니터링 도구 제품군의 최신 기능으로, 시스템에서 발생하는 TCP 및 UDP 활동을 보여 줍니다. 이 도구는 인터페이스의 TCP 및 UDP 작업을 TCP/IP 스택으로 모니터링하고 해당 인터페이스를 TDI(전송 드라이버 인터페이스)라고 합니다. 모든 애플리케이션 및 드라이버 TCP 및 UDP 활동은 이 인터페이스를 통과해야 하므로 TDImon이 감지하지 못하고 지나치는 TCP 또는 UDP 활동은 없습니다.
TDIMon은 사촌 격의 도구인 Filemon, Regmon, Portmon, DebugView와 동일한 GUI를 공유하며, 다른 모니터링 도구와 마찬가지로 활동을 수행하는 프로세스의 이름과 타임스탬프를 표시하고 필터링 및 강조 표시 기능을 갖추고 있습니다. 따라서 TDIMon은 관리자에게 이상적인 네트워크 문제 해결 도구이며 애플리케이션 개발자를 위한 TCP/IP 디버깅 도구입니다. TDImon은 Windows 95, 98, NT 4 및 Windows 2000에서 작동합니다.
http://www.sysinternals.com/tdimon.htm.에서 TDImon v1.0 다운로드
LDMDUMP V1.0
Windows 2000에는 소프트 파티셔닝이라는 새로운 파티셔닝 형식이 포함되어 있어 지금까지 모든 Windows 운영 체제에서 사용하던 MS-DOS 스타일 파티셔닝의 단점을 극복할 수 있습니다. LDM(논리 디스크 관리자)이라는 구성 요소는 동적 디스크(MS-DOS 스타일 분할이 있는 디스크를 기본 디스크라고 함)라고 하는 소프트 파티션으로 포맷된 디스크의 볼륨을 관리합니다. 동적 디스크는 구현하는 파티션 미러링으로 인해 더 강력할 뿐만 아니라 파일 시스템 드라이버에서 시스템을 인식하고 탑재할 수 있도록 시스템을 다시 부팅하지 않고도 다중 파티션 볼륨을 만들 수 있다는 장점이 있습니다.
Microsoft는 LDM 분할 데이터베이스의 형식을 문서화하지 않았습니다. 실제로 UNIX 볼륨 관리 소프트웨어에서 동일한 데이터베이스를 사용한 Veritas의 기술을 허가했기 때문에 라이선스 계약으로 인해 Microsoft가 문서화하지 못할 수 있습니다. 결국 LDM에 대한 Win32 IOCTL 인터페이스가 있을 수 있지만, 그 동안 형식을 파악하고 동적 디스크의 데이터베이스 내에서 피어링하는 데 사용할 수 있는 LDMDump라는 도구를 작성했습니다. LDMDump는 Windows 2000 리소스 키트의 DmDiag 도구와 거의 동일한 정보를 제공하지만 LDMDump는 훨씬 더 깨끗한 방식(제 의견입니다)으로 정보를 제공합니다. 지금은 이 도구의 소스 코드를 제공하지 않지만 사용자 고유한 애플리케이션의 라이선스에 관심이 있는 경우 문의하세요.
http://www.sysinternals.com/publ.htm.에서 Windows 2000 Magazine "Inside Storage, 2부" 칼럼의 LDM 데이터베이스에 대해 읽어보기
http://www.sysinternals.com/ldmdump.htm.에서 LDMDump v1.0 다운로드
AUTORUNS V1.1
지난 2개월 이내에 릴리스된 AutoRuns에 이미 익숙할 수 있습니다. 자동 실행은 레지스트리의 모든 위치에 자동 실행 설정을 표시하고 이러한 정보가 지정된 .INI 파일을 표시합니다(또는 우리는 이렇게 생각했습니다). 사용자 피드백은 자동 실행이 누락된 몇 가지 위치에 대한 단서를 제공했으며, 이제 이 최신 버전에서 이를 보여 줍니다.
http://www.sysinternals.com/misc.htm.에서 자동 실행 v1.1 다운로드
6월/7월 내부 칼럼
Win32 서비스가 표준 Win32 애플리케이션과 정확히 어떻게 다른지 궁금한 적이 있나요? 또는 NT 부팅 또는 종료 시퀀스가 너무 오래 걸리는 것에 대해 궁금했을 수도 있습니다. Windows 2000 Magazine의 Win32 서비스에서 2부로 구성된 6월/7월 시리즈에서 이러한 질문에 답변합니다.
1부에서는 Win32 서비스의 구조 내에서 클라이언트 애플리케이션의 명령을 수락하는 방법을 설명합니다. 그런 다음 시작 및 종료를 포함하여 Win32 서비스 관리를 담당하는 SCM(서비스 제어 관리자)에 대해 설명하기 시작합니다. 2부에서는 시스템 부팅 중에 발생하는 서비스 시작 프로세스에 대한 설명을 완료한 다음 SCM이 서비스를 종료하는 방법을 알려줍니다. 또한 Microsoft가 Windows 2000에서 SCM에 적용한 개선 사항을 살펴보고 SrvAny 리소스 키트 도구로 안내합니다.
Windows 2000 Magazine 구독자는 http://www.sysinternals.com/publ.htm.에서 온라인 칼럼을 읽을 수 있음
INTERNALS INFORMATION
WINDOWS NT 빌드 기록
지난 뉴스레터에서 배웠듯이, 빌드 팀이 그날의 코드 체크인을 통해 새 빌드를 생성할 때 Windows NT(현재 Windows 2000)의 빌드 번호는 매일 증가합니다. 제가 가지고 있는 이전 베타 및 릴리스 후보 CD와 저보다 더 오랫동안 Windows NT를 사용해 온 다른 사람들의 도움을 받아 공개 릴리스(베타, 릴리스 후보 및 정식 릴리스)에 해당하는 빌드 번호 목록을 정리했습니다. 날짜는 빌드의 릴리스 날짜가 아니라 빌드 날짜입니다. 예를 들어 Win2K의 최종 빌드인 2195는 12월에 만들어졌지만 2월에 일반 공개되었습니다.
빌드 | 해제 | Date |
---|---|---|
297 | PDC | 1992 |
340 | NT 3.1 Beta 1 | 1992년 10월 |
397 | NT 3.1 Beta 2 | 1993년 3월 |
511 | NT 3.1 | 1993년 7월 |
611 | NT 3.5 Beta 1 | 1994년 4월 |
683 | NT 3.5 Beta 2 | 1994년 6월 |
756 | NT 3.5 RC 1 | 1994년 8월 |
807 | NT 3.5 | 1994년 9월 |
944 | NT 3.51 Beta 1 | 1995년 2월 |
1057 | NT 3.51 | 1995년 5월 |
1234 | NT 4.0 Beta 1 | 1996년 1월 |
1314 | NT 4.0 Beta 2 | 1996년 5월 |
1381 | NT 4.0 | 1996년 7월 |
1671 | NT 5.0 Beta 1 | 1997년 9월 |
1877 | NT 5.0 Beta 2 | 1998년 9월 |
1946 | Beta 3의 Win2K RC0 | 1998년 12월 |
2000.3 | 베타 3의 Win2K RC1 | 1999년 3월 |
2031 | Win2K Beta 3 | 1999년 4월 |
2072 | Win2K RC1 | 1999년 7월 |
2128 | Win2K RC2 | 1999년 9월 |
2183 | Win2K RC3 | 1999년 11월 |
2195 | Win2K | 1999년 12월 |
WINDOWS NT/2000 타이머 해상도
Windows NT/2000은 펜티엄 주기 카운터의 해상도까지 시간을 측정할 수 있는 QueryPerformanceCounter
을(를) 비롯한 서비스를 제공하지만 간격 타이밍 서비스는 해상도가 다소 낮습니다. 실제로 기본 타이머 해상도는 유니프로세서 x86 시스템(일반적으로 SMP 시스템의 경우 7.5ms 또는 15ms)에서 10ms인 시스템 클록 간격과 동일합니다. 애플리케이션은 사용자 공간에서 멀티미디어 타이머 기능을 사용하여 해상도를 1ms로 높일 수 있지만, 더 높은 해상도를 원하는 경우 드라이버는 Windows 2000까지만 사용할 수 있습니다.
Windows 2000에는 드라이버가 시스템 타이머 간격을 1ms로 줄이는 데 사용할 수 있는 새로운 DDK 함수 ExSetTimerResolution
이(가) 도입되었습니다. 멀티미디어 타이머 및 ExSetTimerResolution
안에서 어떤 일이 일어나는지 알고 싶으신가요? http://www.sysinternals.com/timer.htm.에서 "Windows NT 고해상도 타이머 내부"를 참조
안전한 시스템 메모리 매핑
드라이버 개발자를 위한 새로운 Windows 2000 커널 기능에 대해 이야기하는 동안 MmGetSystemAddressForMdlSafe
을(를) 언급할 필요가 있습니다. 이전 버전의 Windows NT에서는 사용자의 버퍼 또는 실제 메모리 조각에 대한 시스템 주소 공간 포인터를 가져오려는 드라이버 개발자가 물리적 버퍼를 설명하는 MDL(메모리 설명자 목록)을 전달해야 MmGetSystemAddressForMdl
했습니다.
시스템의 주소 공간에서 가상 매핑을 만들면 시스템 PTE(시스템 페이지 테이블 항목)라는 리소스가 사용되며, 매핑된 모든 물리적 페이지에는 하나의 시스템 PTE가 필요합니다. 아쉽게도 시스템 PTE는 제한된 리소스이며 드라이버가 대량의 메모리를 매핑하는 경우 부족할 수 있습니다. MmGetSystemAddressForMdl
이(가) 필요한 시스템 PTE를 가져올 수 없으면 어떻게 됩니까? 매핑된 가상 주소로 NULL
을(를 )반환하는 것과 같은 유용한 작업을 수행할 수 있을 것입니다. 하지만 아니오, 포기하고 시스템 블루스크린이 뜹니다. 이러한 동작은 요청을 하는 드라이버에게 좋지 않은 영향을 미칩니다.
Windows 2000 MmGetSystemAddressForMdlSafe
은(는) MmGetSystemAddressForMdl
이(가) 수행했어야 하는 작업을 수행합니다. 버퍼에 대한 매핑을 만들기에 충분한 시스템 PTE가 없는 경우 NULL
을(를) 반환합니다. 드라이버를 가리키는 당황스러운 덤프를 방지하려면 이 함수를 사용하세요. NT 4 및 Windows 2000에서 실행되는 드라이버가 있는 경우 각 플랫폼에 대해 하나씩 두 가지 버전을 릴리스하여 Windows 2000에서 이 새로운 API를 활용할 수 있도록 하는 것이 좋습니다.
키보드 다시 매핑
저와 같은 경우, PC 키보드의 캡 잠금 키가 있는 위치에 키보드에 Ctrl 키가 있는 UNIX 키보드를 사용했습니다. 입력 속도를 개선하고 Windows 9x 및 Windows NT의 디바이스 드라이버 개발에 대해 알아보기 위해 두 운영 체제 모두에서 첫 번째 드라이버 프로젝트 중 하나는 키보드 다시 매핑 드라이버를 구현하는 것이었습니다. http://www.sysinternals.com/c2cap95.htm에서 Windows 9x 버전 그리고 http://www.sysinternals.com/ctrl2cap.htm.에서 Windows NT/2K 버전을 찾을 수 있음
Windows NT/2K에서는 키보드 필터 드라이버를 사용하는 대신 다른 방법을 사용할 수 있습니다. 레지스트리에서 스캔 코드 다시 매핑 항목을 정의하면 키보드의 동작을 완전히 다시 프로그래밍할 수 있습니다. 실제로 Windows 2000 리소스 키트에는 키보드의 그래픽 표현을 사용하여 키를 교환할 수 있는 RemapKey라는 도구가 포함되어 있습니다. Microsoft 웹 사이트의 다음 문서에서는 키보드 다시 매핑 및 작동 방식에 대해 설명합니다. http://www.microsoft.com/HWDEV/input/W2kscan-map.htm. 이 도구는 NT 4에서도 작동합니다.
따라서 Windows 2000 리소스 키트가 없고 돈을 쓰고 싶지 않다고 가정해 보겠습니다(모든 종류의 멋진 도구와 문서로 가득 차 있으니 꼭 구입하시길 권장합니다). 이 경우 키보드를 수동으로 다시 매핑할 수 있습니다. 방금 참조한 Microsoft 문서에서는 키보드 드라이버가 다시 매핑 코드(HKLM\ SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map
)를 찾는 레지스트리 키의 형식을 알려주며 Microsoft에서도 사용할 수 있는 이 문서에서는 다음 키에 해당하는 스캔 코드를 알려줍니다. http://www.microsoft.com/hwdev/download/desinit/scancode.zip.
caps-lock과 control만 바꾸고 싶다면(제 키보드 필터는 caps-lock 키를 거의 사용하지 않기 때문에 caps-lock 키를 완전히 없애버렸습니다) 다음 텍스트("----" 구분 기호 제외)를 파일에 복사하고(이름을 swapcaps.reg 등으로 지정) 파일을 더블클릭하면 됩니다. 설정은 레지스트리로 가져오면 재부팅 후 적용됩니다.
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,1d,00,1d,00,3a,00,\
00,00,00,00
매핑을 실행 취소하려면 레지스트리에서 스캔 코드 맵 값을 삭제하고 다시 부팅하기만 하면 됩니다.
숨겨진 WINDOWS 98 파일 시스템 로깅
Windows 98 시스템 디렉터리에서 \Windows\Applog
(이)라는 하위 디렉터리를 발견한 적이 있나요? 이 디렉토리 안에는 최근에 실행한 애플리케이션과 이름이 같고 확장자가 .LGC, .LGD인 파일이 있을 가능성이 높습니다. 메모장에서 파일 중 하나를 열면 파일 이름, 오프셋 및 열기 및 닫기 호출이 완료된 파일 시스템 활동 추적이 명확하게 표시됩니다. 바이러스가 이러한 로그를 생성하는 건가요, 아니면 Windows 98에 포함된 비밀 유틸리티가 사용자의 애플리케이션 사용 패턴을 Microsoft에 보고하는 건가요? 둘 다 아닙니다(만약 둘 중 하나라면 SysInternals 뉴스레터가 아닌 무역 언론에서 이 내용을 읽으셨을 것입니다). Windows 98의 "가장 자주 사용하는 애플리케이션을 최대 36% 더 빠르게 로드" 기능의 일부입니다.
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
의 태스크몬 항목으로 인해 Windows 98은 부팅 중에 Taskmon이라는 서비스 프로그램을 시작합니다. Taskmon은 애플리케이션 실행 중에 파일 사용량을 확인할 수 있도록 파일 시스템 활동 후크를 설치하기 위해 FioLog(\Windows\System\FioLog.Vxd
)라는 이름의 VxD를 로드합니다. Taskmon은 HKLM\Software\Microsoft\Windows\CurrentVersion\Taskmon\ExcludeApps
에 나열된 애플리케이션을 제외한 모든 애플리케이션이 시작되는 동안 수행하는 파일 시스템 활동을 모니터링합니다. FioLog는 Applog 디렉터리에 애플리케이션 시작 파일 시스템 작업을 기록합니다. 생성되는 로그 파일은 확장자가 .LGA로 시작됩니다. 마지막 문자가 증분된 새 확장자를 가진 애플리케이션에 대해 로그를 삭제할 때와 새 로그를 만들 때를 결정하는 방법이 명확하지 않습니다. 샘플 로그 파일의 일부는 다음과 같습니다.
{
o da3034d0 d000 "C:\WINDOWS\NOTEPAD.EXE"
R da3034d0 0 40
R da3034d0 80 f8
R da3034d0 80 1c0
R da3034d0 7000 1000
R da3034d0 6000 e00
o da2b2610 156000 "C:\WINDOWS\SYSTEM\SHELL32.DLL"
R da2b2610 83000 1000
o da2b2f40 45110 "C:\WINDOWS\SYSTEM\SHLWAPI.DLL"
R da2b2f40 3c000 1000
R da2b2f40 3c000 1000
...
선은 네 개의 필드로 나뉩니다. 첫 번째는 연산 코드입니다. 여기서 o
은(는) 열기, R
은(는) 읽기, C
은(는) 닫기입니다. FioLog는 애플리케이션 시작 중에 읽기 작업만 기록하므로 애플리케이션 시작이 최적화될 수 있도록 W
(쓰기용)(이)가 표시되지 않습니다. 두 번째 필드는 내부 파일 포인터입니다. 세 번째 및 네 번째 필드는 줄의 작업 코드에 따라 해석되어야 합니다. 작업 코드가 R
이면 세 번째 필드는 파일 오프셋이고 네 번째 필드는 읽기 길이입니다. 그러나 작업 코드가 o
이면 세 번째 필드는 열린 플래그이고 네 번째는 열린 파일의 이름입니다. 예제에서 notepad.exe 열기는 파일 포인터 da3034d0을 반환합니다. 이 포인터는 후속 읽기 작업에서 사용되는 것을 볼 수 있습니다.
조각 모음 작업을 시작하면 Defrag.Exe 프로그램은 CvtApLog(\Windows\System\Cvtaplog.exe
)라는 프로그램을 실행하여 로그 파일을 처리합니다. CvtApLog는 ClusAlgo.Dll(\Windows\System\Clusalgo.dll
)라는 DLL을 사용하여 읽은 로그 파일을 고려하여 최적의 클러스터 배치를 파악하고 조각 모음 프로세스를 안내하는 \Windows\Applog\Applog.d*
라는 파일에 이 정보를 기록합니다. 또한 CvtApLog는 로그 파일이 지시하는 애플리케이션 시작 최적화를 요약하는 \Windows\Applog\Optlog.txt
라는 파일을 생성합니다. 다음은 Optlog.txt 파일 내용의 한 부분입니다.
Program Launch Optimization Log - Created Tue Jun 13 11:42:52 2000
Programs Eligible for Optimization:
Ord Flag ProgName Uses LastExecDate Program Path
1 RUNDLL32 65 2000.06.13 C:\WINDOWS\RUNDLL32.EXE
2 ATIPTAAB 31 2000.06.13 C:\WINDOWS\SYSTEM\ATIPTAAB.EXE
3 NOTEPAD 22 2000.06.13 C:\WINDOWS\NOTEPAD.EXE
4 PING 9 2000.06.10 C:\WINDOWS\PING.EXE
…
17 IEXPLORE 2 2000.06.01 C:\PROGRAM FILES\INTERNET EXPLORER\IEXPLORE.EXE
Programs Ineligible for Optimization:
Ord Flag ProgName Uses LastExecDate Program Path
18 S GREP 5 2000.06.13 C:\BIN\GREP.EXE
19 S STRINGS 12 2000.06.13 C:\BIN\STRINGS.EXE
20 S ATI2CWXX 31 2000.06.13 C:\WINDOWS\SYSTEM\ATI2CWXX.EXE
Control Parameters:
Use app profile = Yes
Minimum log size = 1000
Maximum no use days = 90
Maximum apps = 50
Flags for Ineligible Programs:
S = Log size smaller than <Minimum log size>
U = Program not used for more than <Maximum no use days>
P = No profile for program
E = Associated program no longer exists
D = Log deleted (may be combined with one of the above)
애플리케이션을 실행하는 동안 사용된 파일 일부를 디스크의 인접한 영역으로 이동하는 Windows 98의 기능은 Microsoft가 인텔로부터 라이선스를 받은 기술입니다(이를 확인하려면 Defrag.exe를 수동으로 실행하면 "인텔 애플리케이션 시작 가속기"라는 텍스트가 표시됩니다).
WINDEV '00 WEST
지난 주에 열린 WinDev '00 East에는 호텔이 수용할 수 있는 최대 인원인 660명이 참석하여 기록을 세웠습니다. 이번 컨퍼런스에 참석하는 연사들은 COM의 신 돈 박스부터 드라이버 전문가인 제이미 한라한과 브라이언 캐틀린까지 Windows 개발의 모든 영역에서 유명 인사였습니다. 제 세션에는 "Windows 2000 내부", "고급 드라이버", "Windows NT/2000 파일 시스템 드라이버" 및 "클러스터 서버"가 포함되었습니다.
놓쳐서 아쉽다면 운이 좋게도 두 번째 기회가 있습니다. WinDev '00 West는 9월 11일부터 15일까지 캘리포니아 주 산타클라라에서 열리며, 동일한 연사가 모두 발표할 예정입니다. 저는 동일한 세션을 진행할 예정이며, WinDev East에서와 마찬가지로 제 질문에 답하거나 특히 통찰력 있는 질문을 하는 참석자에게는 무료 SysInternals 티셔츠를 증정할 예정입니다. 자세한 내용은 http://www.butrain.com/windev/west/default.htm.에서 찾을 수 있습니다.
향후 예정 사항
"보안" WINDOWS 98 레지스트리 키
Windows 98 레지스트리는 보안을 지원하지 않지만 Microsoft는 숨겨진 레지스트리 키를 정의하는 메커니즘을 구현했습니다. 이 스텔스 기술을 사용하는 애플리케이션은 무엇인가요? 물론 인터넷 Explorer입니다. 다음에는 IE가 숨기는 키와 Windows 98에서 이를 구현하는 방법을 알려드리겠습니다.
Systems Internals 뉴스레터를 읽어 주셔서 감사합니다.
발행일: 2000년 6월 14일 수요일 오후 7:08 by ottoh