다음을 통해 공유


[회보 보관 ^] [< 볼륨 3, 번호 2] [볼륨 4, 번호 2 >]

Systems Internals 뉴스레터 4권, 1호

http://www.sysinternals.com
Copyright (C) 2002 Mark Russinovich


2002년 1월 7일 - 이번 호에서:

  1. 사설

  2. SYSINTERNALS의 새 소식

    • Sync v2.1
    • DiskExt v1.0
    • NTFSDOS v3.02
    • PsSuspend v1.2
    • PsLogList v2.2
    • PsInfo v1.2
    • PsExec v1.3
    • BgInfo v2.0
    • Process Explorer v5.2
    • Win64/Itanium용 Filemon v4.34
    • Linux용 Filemon v1.1
    • Microsoft의 Sysinternals
  3. 내부 정보

    • Windows 2000 내부, 대화형 DVD
    • Inside Windows 2000/XP: 세미나
    • Windows XP 매니페스트 파일
    • X-Box에 무엇이 있습니까?
    • 임의 Windows XP 통계
    • 새로 향상된 Windbg
  4. 향후 예정 사항

    • BootVis를 사용하여 Windows XP 부팅 프로세스 프로파일링

스폰서: WINTERNALS 소프트웨어

Sysinternals Newsletter는 Winternals Software(Web, http://www.winternals.com.)에서 후원합니다 Winternals Software는 Windows NT/2K/XP용 고급 시스템 도구를 개발하고 제공하는 선도적인 업체입니다. 그들의 제품에는 수상 경력에 빛나는 Administrator's Pak, ERD Commander 2000 및 NTFSDOS Professional Edition이 포함됩니다.

Winternals는 사용 가능한 가장 빠르고 완벽한 엔터프라이즈 조각 모음인 Defrag Commander 버전 1.32를 발표하게 된 것을 자랑스럽게 생각합니다. 이제 NT 또는 Windows 2000 시스템에 클라이언트 소프트웨어를 설치하지 않고도 간단한 MMC 스냅인에서 전체 Windows 기업의 조각 모음 일정을 관리할 수 있습니다. 10개 시스템 라이선스는 단 $169에 온라인 구매가 가능하며 수량에 따라 대폭 할인이 가능합니다. 자세한 내용을 보거나 다운로드하여 30일 동안 무료로 사용하려면 http://www.winternals.com/39을(를) 방문하세요.

여러분, 안녕하세요.

Sysinternals 뉴스레터에 오신 것을 환영합니다. 뉴스레터는 현재 34,000명의 구독자를 보유하고 있습니다. 뉴스레터의 내용에 관심이 있을 것으로 생각되는 친구들에게 전달해 주세요.

마이크로소프트의 주력 운영 체제인 Windows XP는 8월 말에 "큰 성공"을 거뒀습니다. Windows XP는 1993년에 Windows NT 3.1로 시작된 Windows NT 제품군의 최신 릴리스이며 지난 8년간의 기술 발전과 혁신을 기반으로 합니다. 운영 체제는 기능과 기능 면에서 단연 최첨단을 보여주는데, David Solomon과 저는 12월 MSDN Magazine 기사 "Windows XP: Kernel Improvements Create a Robust, Powerable, Scalable OS"(http://www.msdn.microsoft.com/msdnmag/issues/01/12/XPKernel/XPKernel.asp)에서 많은 부분을 연구하고 작성했습니다.

그리고 수백만 대의 Windows NT 및 Windows 2000 시스템이 설치되어 있고 수십만 또는 수백만 명의 베타 테스터가 있는 상황에서 Microsoft는 Windows XP가 사실상 완벽하게 실행되도록 수정, 조정 및 수정했을 것입니다. 결국, 그들의 광고는 XP가 "사실상 크래시 방지"라고 선전합니다. 확실히 문제가 발생할 것이라고는 예상하지 못했습니다. 하지만 제가 틀렸습니다.

XP 베타 및 릴리스 후보 주기 동안 Windows 2000 Professional을 기본 시스템의 운영 체제로 유지했습니다. 저는 Windows 2000 개발 주기에서 릴리스 후보조차도 최종 비트로 업그레이드한 후에 디버그 크러프트를 남긴다는 사실을 배웠습니다. 베타 프로그램에서 최종 릴리스인 빌드 2600을 받았을 때 저는 이전해야 할 때라고 결정했습니다. XP 호환성 마법사에서 Windows 2000 시스템에서 사소한 문제(예: 설치한 파티션 매직 버전이 XP NTFS를 이해하지 못하는 문제)만 발견하여 업그레이드 경로를 진행했습니다.

텍스트 모드에서 실행하고 내 하드 디스크에 설치 파일을 설치한 후 XP Setup은 부분적으로 업그레이드된 Windows XP 설치로 재부팅하여 그래픽 모드에서 업그레이드를 완료했습니다. 이 모드에서는 로캘 및 표준 시간대 설정을 지정하고 설정에서 장치 검색을 수행하며 네트워크를 구성합니다. "장치 설치" 단계까지는 순조롭게 진행되었습니다. 진행률 표시줄이 약 2/3 지점에 도달하고 설치 프로그램에서 남은 시간이 34분이라고 보고했을 때 이 프로그램의 생산성이 중단되었습니다. "XP는 당신에게 있어 가장 행복한 것입니다" 배너가 계속 번갈아 가며 오른쪽 하단에 있는 작은 깜박이는 버튼이 계속 회전했지만 2시간이 지난 후에도 여전히 34분이 남았습니다.

그때부터 걱정이 되기 시작했습니다. 설치 프로그램을 다시 시도하도록 재부팅하고, BIOS를 업데이트하고, MS 기술 자료를 확인하고(아무것도 없음) 문제를 해결하기 위해 미친 듯이 몇 시간 동안 시도해 보았지만 아무런 결과가 없었습니다. 저는 마침내 포기하고 Windows 2000 설치 절반과 Windows XP 설치 절반을 긁고 XP를 새로 설치하여 내가 사용하는 수십 개의 애플리케이션을 다시 설치하는 데 하루 중 더 많은 시간을 보냈습니다.

새로운 XP 설치한 결과는 만족스러웠습니다. 설명할 수 없는 크래시, GUI 취약성 및 기타 이상한 시스템 동작에 실망하지 않았다는 것은 말할 것도 없고 적어도 생산적일 수는 있습니다. 베타 프로그램 CD가 평가판 CD라는 것을 알고 있었고 MSDN을 통해 정식 버전을 받았을 때 정식 버전으로 업그레이드해야 한다는 것을 알고 있었지만 문제가 없을 것이라고 예상했습니다.

중단된 업그레이드 후 정확히 120일(우연히 평가판 버전의 시간 초과)에 놀라운 데자뷰를 경험했습니다. 평가판에서 전체 업그레이드는 실제로 전체 업그레이드처럼 작동하며 (예상하셨겠지만) 34분이 남았고 "장치 설치" 설치의 2/3에서 진행이 중지되었습니다. 다시 한 번, 내 시스템은 완전히 사용할 수 없는 설치 중간의 지하 세계에 있었습니다. 120일 전에 시도한 모든 것을 시도한 후 또 다른 전체 재설치를 위해 많은 것을 포기했습니다.

그런 다음 또 다른 문제가 발생했습니다. MSDN XP CD에는 Home 및 Professional 하위 디렉터리가 모두 있으므로 부팅할 수 없습니다. 운영 체제 설치가 하나만 있기 때문에(설치로 인해 손상된 것) MSDN CD에서 Win32 버전의 설치를 실행할 수 없었고 시스템이 NTFS 전용이므로 DOS 설치를 실행할 수 없었습니다. CD로는 설치 부팅 플로피를 만들 수도 없었습니다. MSDN Subscriber Downloads에 Windows XP Professional의 ISO 이미지가 있다는 사실이 기억나서 (다른 시스템을 사용하여) 부팅 가능한 CD를 구우려고 했지만 "파일 전송 관리자를 시작하는 중 오류가 발생했습니다. 나중에 다시 시도하세요." MSDN 사이트의 오류 메시로 인해 이 시도도 좌절되었습니다.

제가 이 혼란에서 어떻게 벗어났을까요? 저는 중단된 업그레이드의 레지스트리 하이브를 몇 주 전에 만든 백업의 하이브로 교체했습니다. Windows 정품 인증에서 라이선스를 확인할 수 없다고 해서 재부팅 후 시스템에 로그인할 수 없었지만 안전 모드로 부팅하고 거기에서 MSDN CD 설치를 실행할 수 있었습니다. 저는 애플리케이션 재설치를 막 마쳤고 다시 생산적으로 작업할 수 있습니다.

저에게 일어난 일(두 번)에 대해 제가 완전히 놀란 것은 Windows XP 설치 프로그램에는 Windows 95 이후 Windows 9x 설치 프로그램에 있었던 기본 안전 메커니즘이 없다는 것입니다. Windows 95, 98 또는 Me 설치 프로그램이 실행되면 진행률 지점을 디스크에 기록합니다. 설치 프로그램이 예기치 않게 중단되면 중단된 위치에서 다시 시작하고 "장치 설치" 단계에 있었다면 중단되기 전에 실행했던 마지막 드라이버를 건너뜁니다. 이렇게 하면 설치가 중단된 경우 시스템을 다시 부팅할 수 있으며 설치가 중단된 지점을 넘어 진행됩니다.

Windows 2000 및 XP는 안전 모드 및 시스템 복원과 같은 Windows 9x 라인에서 여러 멋진 기능을 차용했습니다. Windows 2000 및 XP가 Windows 9x Setup에서 몇 가지를 기능을 차용했으면 좋겠습니다.

XP로의 업그레이드에 대해 말하면서, 유머 칼럼니스트 Dave Barry는 도약을 생각하고 있습니다: http://www.miami.com/herald/special/features/barry/2002/docs/jan06.htm .

감사합니다!

-Mark

SYSINTERNALS의 새 소식

SYNC V2.1

캐시된 데이터를 다시 디스크로 플러시하는 애플릿인 "Sync"는 Unix 시스템의 핵심 시스템 유틸리티이며 몇 년 전에 Windows NT/2000/XP용 Sync를 작성했습니다. 미디어를 꺼내기 전에 수정 사항이 읽기/쓰기 이동식 미디어에 반영되도록 하는 것은 동기화를 통해 수행할 수 있는 작업입니다. 또한 시스템을 크래시시킬 수 있는 개발 중인 드라이버를 실행하기 전에 실행할 때 디스크 손상을 최소화하는 데 유용합니다. 누군가 최근에 동기화에 플러시 후 미디어를 꺼내는 옵션이 있으면 좋을 것이라고 제안하여 v2.1에 도입되었습니다.

다음 위치에서 Sync v2.1 다운로드
http://www.sysinternals.com/ntw2k/source/misc.shtml

DISKEXT V1.0

이 뉴스레터에서 다루는 또 다른 디스크 관련 도구는 DiskExt로, 볼륨의 드라이브 문자가 주어지면 볼륨을 구성하는 파티션의 위치를 알려주는 명령줄 애플릿입니다. 다중 파티션 볼륨에는 스팬된 볼륨, 미러링 볼륨 및 스트라이프 볼륨이 포함됩니다. DiskExt는 또한 그들이 차지하는 섹터 측면에서 나열되는 파티션의 위치를 보고합니다.

다음에서 전체 소스 코드가 포함된 DiskExt v1.0을 다운로드하세요.
http://www.sysinternals.com/ntw2k/source/misc.shtml#diskext

NTFSDOS V3.02

수십만 사용자의 컴퓨터에서 Sysinternals(NTFSDOS 출시 당시 "Ntinternals")를 실행한 유틸리티인 NTFSDOS를 사용하면 DOS에서 NTFS 드라이브를 읽을 수 있습니다. Windows XP NTFS 온디스크 구조를 약간 변경하려면 XP 호환성을 위해 NTFSDOS를 조정해야 합니다.

NTFSDOS v3.02 다운로드
http://www.sysinternals.com/ntw2k/freeware/NTFSDOS.shtml

PSSUSPEND V1.2

다른 것을 실행하기 위해 네트워크 다운로드, 디스크 검색 또는 기타 리소스 집약적인 애플리케이션을 일시적으로 중단하고 싶었던 적이 있습니까? Suspend는 Windows NT/2000/XP의 관리 도구에는 없는 프로세스 관리 기능 중 하나입니다. PsTools 도구 세트에 가장 최근에 추가된 PsSuspend는 프로세스를 일시 중단하고 다시 시작하는 유틸리티입니다. PsTools 제품군의 다른 모든 도구와 마찬가지로 PsSuspend는 로컬 시스템이나 원격 시스템에서 지시할 수 있는 명령줄 도구입니다.

Windows NT/2000/XP에는 일시 중단 프로세스 기능이 없기 때문에(XP에는 있지만 Win32 API를 통해 노출되지 않음) PsSuspend는 Win32 SuspendThread 및 ResumeThread API를 사용하여 대상 프로세스에서 실행 중인 스레드를 일시 중단하고 다시 시작합니다.

PsSuspend v1.2 다운로드
http://www.sysinternals.com/ntw2k/freeware/pssuspend.shtml
다음에서 전체 PsTools 패키지를 다운로드하세요.
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSLOGLIST V2.2

PsTools 패키지를 구성하는 도구는 사용자 피드백을 기반으로 지속적으로 발전하고 있으며 PsLoglist는 다른 어떤 유틸리티보다 더 많은 기능 요청을 생성했습니다. 이 최신 버전에서는 저장된 이벤트 로그 파일의 레코드를 덤프하고, 한 줄 형식의 구분 기호를 쉼표에서 다른 형식으로 변경하고(이벤트 로그 텍스트에 쉼표가 포함된 경우), 지정된 날짜 범위의 레코드를 덤프하고, 이벤트 유형(오류, 경고 또는 정보)을 필터링하는 기능 등 여러 가지 기능이 향상되었습니다. 이전과 마찬가지로 PsLoglist는 로컬 또는 원격 시스템 이벤트 로그를 덤프할 수 있으며 작업을 제어하기 위한 다른 많은 옵션이 있습니다.

PsLoglist v2.2 다운로드
http://www.sysinternals.com/ntw2k/freeware/psloglist.shtml
다음에서 전체 PsTools 패키지를 다운로드하세요.
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSINFO V1.2

사용 중지된 PsTools 유틸리티는 로컬 또는 원격 시스템이 가동된 시간을 보고하는 애플릿인 PsUptime입니다. 정보가 유용하지 않다는 것이 아니라 PsTools, PsInfo를 처음 접하는 사용자가 표시하기에 더 적합합니다. 따라서 PsInfo v1.2는 이제 OS 버전, 프로세서 속도, 메모리 크기, 핫픽스 설치, OS가 평가판인지 여부, 만료 시기 및 Windows와 같은 많은 기타 정보와 함께 시스템 가동 시간을 보고합니다. XP, Windows 정품 인증 상태.

PsInfo v1.2 다운로드
http://www.sysinternals.com/ntw2k/freeware/psinfo.shtml
다음에서 전체 PsTools 패키지를 다운로드하세요.
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSEXEC V1.3

PsExec은 원격 시스템에 소프트웨어를 설치하지 않고 원격 시스템에서 프로그램을 실행할 수 있게 해주는 명령줄 유틸리티입니다. 실행하는 프로그램에 명령줄 인터페이스가 있는 경우 PsExec은 이를 프록시하여 프로그램을 로컬에서 실행하는 것처럼 대화형으로 실행할 수 있습니다. 이러한 기능 덕분에 PsExec은 편리한 경량 원격 셸 유형 유틸리티이며 ipconfig와 같은 명령줄 프로그램을 원격으로 쉽게 활성화할 수 있습니다.

PsExec 버전 1.3을 사용하면 원격 시스템에서 Windows 애플리케이션(명령줄이 아닌)을 시작하여 대화형 데스크톱에 표시할 수 있습니다. 이 기능이 어디에 유용할지 모르겠지만 이 기능에 대한 여러 요청을 받았습니다.

PsExec v1.3 다운로드
http://www.sysinternals.com/ntw2k/freeware/psexec.shtml
다음에서 전체 PsTools 패키지를 다운로드하세요.
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

BGINFO V2.0

여러 대 이상의 시스템을 관리하는 경우 "시스템 혼란", 기계(또는 KVM에서 해당 시스템으로 전환)에 대해 알고 있으며 컴퓨터 이름, OS 버전, 설치된 서비스 팩 또는 IP 주소를 잊어버립니다. 이 모든 정보는 다양한 관리 인터페이스를 통해 액세스할 수 있지만 정보를 얻는 데 시간이 많이 걸릴 수 있습니다. 여기에서 Bryce Cogswell의 BgInfo가 등장합니다. 가장 중요한 시스템 정보를 바탕 화면 배경에 바로 표시하여 필요한 모든 정보를 즉시 얻을 수 있습니다.

BgInfo에 대한 이 최신 업데이트를 통해 그 어느 때보다 더 쉽게 구성할 수 있습니다. 레지스트리 키에서 사용자 지정 텍스트를 정의하고 바탕 화면 배경색 또는 비트맵을 지정하고 배경에서 텍스트를 찾는 등의 작업을 수행할 수 있습니다. 그러나 대규모 조직에 가장 유용한 것은 BgInfo가 설정을 저장 및 로드하고 심지어 데이터베이스로 내보낼 수 있는 기능입니다. 이러한 기능 중 하나를 사용하여 설정을 한 번 정의한 다음 관리하는 모든 시스템에서 사용할 수 있습니다.

BgInfo v2.0 다운로드
http://www.sysinternals.com/ntw2k/freeware/bginfo.shtml

PROCESS EXPLORER V5.2

Process Explorer는 작업 관리자가 중단되는 위치를 선택하는 프로세스 뷰어 및 제어 유틸리티입니다. 광범위한 기능 목록 중에서 Process Explorer는 프로세스 생성 트리를 표시하고, 프로세스가 열려 있는 핸들을 표시하고, 프로세스가 로드한 DLL을 나열하고, 특정 파일이 열려 있는 프로세스를 검색할 수 있도록 합니다.

Process Explorer의 이전 버전은 Windows 9x 및 NT/2K/XP 시스템 모두에서 작동했지만 버전 5.2에서만 Process Explorer가 Windows 9x 시스템에 대한 프로세스 CPU 사용량 정보를 표시합니다. v5.2의 또 다른 향상된 기능은 프로세스 속성 대화 상자에서 프로세스가 연 GDI 및 USER 핸들(Win32 GUI 리소스에 대한 핸들)의 수를 보고하여 Windows XP 및 2000 시스템의 누수를 추적하는 데 도움이 됩니다. 일반적으로 생각하는 것과는 달리 Windows 2000 및 XP에서도 이러한 리소스의 수가 제한되어 있습니다. 시스템 전체에서 사용자 핸들이 65,536개로 제한되고 프로세스당 GDI 핸들이 16,384개로 제한됩니다.

다음 위치에서 Process Explorer v5.2를 다운로드하세요.
http://www.sysinternals.com/ntw2k/freeware/procexp.shtml

WIN64/ITANIUM용 FILEMON V4.34

Microsoft는 친절하게도 제가 가장 인기 있는 Sysinternals 애플리케이션을 Win64/Itanium으로 포팅할 수 있도록 Intel의 초기 Itanium 상자를 빌려 주었습니다. 이 상자는 인상적입니다. 2개의 733MHz 프로세서와 8GB의 메모리가 있습니다. 포팅할 첫 번째 애플리케이션으로 Filemon을 결정했습니다. Filemon은 Win32(현재 Win32/64) GUI와 장치 드라이버로 구성되어 있으므로 두 가지 포팅 작업이 필요했습니다. 크로스 컴파일러를 사용하여 Windows NT, 2000 또는 XP를 실행하는 32비트 시스템에서 Win64 애플리케이션과 64비트 드라이버를 모두 구축한다는 것은 다소 예상하지 못한 일입니다.

최신 버전의 플랫폼 SDK(Microsoft에서 무료로 다운로드 가능: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/)에는 64비트 Itanium 컴파일러 및 링커, Win64 헤더 파일 및 Win64 라이브러리가 포함된 하위 디렉터리가 포함되어 있습니다. Win64 실행 파일을 빌드하기 위한 환경을 설정하기 위해 이 간단한 배치 파일을 만들었습니다.

@echo off
set PATH=D:\Mssdk\Bin\win64;%PATH%
set INCLUDE=D:\Mssdk\include\win64;D:\Mssdk\include\win64\crt
set LIB=D:\Mssdk\lib\ia64
echo 64-bit environment set.

Visual Studio에서 Win64 애플리케이션을 빌드할 수 없으며 대신 명령줄에서 빌드해야 합니다.

몇 가지 사소한 캐스팅 문제가 컴파일 중에 발생한 유일한 문제였습니다. 다음으로 드라이버를 만들었습니다. 최신 버전의 DDK(더 이상 무료 다운로드로 제공되지 않음)에는 IA64 드라이버 빌드 환경이 구성된 명령 프롬프트에 대한 바로 가기가 포함되어 있습니다. 32비트 드라이버처럼 64비트 대상 환경에서 드라이버를 빌드하기만 하면 됩니다.

컴파일러에서 일부 캐스트에 대해 좀 더 명시적으로 설명해야 한다고 알려주었습니다. 예를 들어 Filemon이 작업에 할당하는 시퀀스 번호는 ULONG이며 컴파일러는 I/O 관리자 기능 IoSetCompletionRoutine에 컨텍스트 매개 변수로 전달하기 위해 PVOID로 변환할 수 없습니다. 대신 먼저 ULONG_PTR에 캐스팅한 다음 PVOID에 캐스팅해야 했습니다. 어쨌든 몇 분 안에 드라이버가 오류 없이 컴파일되었습니다.

다음으로 64비트 애플리케이션과 드라이버를 Itanium 시스템에 복사하고 방금 실행했습니다. Filemon GUI가 나타났다가 사라졌습니다. 즉, 무엇이 잘못되었는지 파악하기 위해 Win64 디버거를 사용해야 했습니다. Win64 디버거도 Platform SDK에 포함되어 있으며 32비트 또는 64비트 시스템에서 실행할 수 있습니다. 간소화된 Visual Studio 디버거처럼 보이며 애플리케이션을 실행하는 대상 컴퓨터에 디버깅 클라이언트 조각을 설치하는 원격 모드에서만 작동합니다.

30분 정도 Filemon의 코드를 따른 후 마침내 제 Windows 프로시저가 lparam 매개 변수를 LPARAM(으)로 선언할 필요가 있다는 것을 깨달았습니다. 1996년에 Filemon의 첫 번째 버전을 작성할 때 SDK에서 복사된 일부 코드 때문에 버전이 길었습니다. 흥미롭게도 컴파일러는 이에 대해 불평하지 않았지만 lparam으로 전달된 모든 포인터가 잘렸다는 것을 의미했습니다. 이것은 lparam 매개변수를 구조에 대한 포인터로 해석하는 Filemon의 WM_MEASUREITEM 핸들러에 나타났습니다. Filemon은 해당 코드에서 결함이 있었습니다. 놀랍게도 그 문제를 해결했을 때 Filemon은 Itanium에서 완벽하게 실행되었습니다. 포트에 대한 총 시간: 1시간.

저는 지금 Regmon을 포팅하는 작업을 하고 있으며 DebugView를 포팅할 것입니다. 둘 다 도전적이어야 합니다. 특히 꽤 특이한 드라이버가 있는 DebugView가 그렇습니다.

http://www.sysinternals.com/ntw2k/source/filemon.shtml에서 전체 원본과 함께 Filemon을 다운로드하세요.

LINUX용 FILEMON V1.1

지난 몇 달 동안 Sysinternals를 방문했다면 메뉴 표시줄에 Linux 유틸리티라는 새 항목이 표시되어 충격을 받았을 것입니다. 맞습니다. 저는 Filemon을 Linux에서 실행하는 것이 매우 깔끔할 것이라고 결정했습니다. 나는 이미 Windows에서 Borland의 Delphi RAD(Rapid Application Development) 환경을 사용했기 때문에 Kylix가 출시되었을 때(기본적으로 Linux용 Delphi) GUI가 매우 간단하다는 것을 깨달았습니다.

남은 문제는 파일 시스템 활동을 가로채는 방법이었습니다. Linux를 포함한 대부분의 Unix 버전은 프로세스가 대상 프로세스가 수행한 모든 시스템 호출을 가로챌 수 있는 ptrace()이라는 시스템 호출을 구현합니다. 나는 파일 시스템 활동을 모니터링하기 위해 ptrace()을 사용하는 것을 고려했고, 향후 Filemon을 수정하여 명확해질 이유가 있지만 이를 사용하지 않기로 결정했습니다.

ptrace() 사용의 단점은 Filemon이 실행 중인 모든 프로세스를 열거하고 각 프로세스에서 ptrace()를 실행해야 한다는 것입니다. 또한 새로 생성된 프로세스에도 연결해야 하며 ptrace() 기능은 새 프로세스에서 실행한 첫 번째 시스템 호출이 누락되지 않도록 하는 방법을 제공하지 않습니다. 추적 중인 프로세스가 시스템 호출을 실행하면 운영 체제는 이를 차단하고 추적 프로세스에 신호를 보내고 추적 프로세스가 프로세스를 계속할 때까지 기다립니다. 모든 파일 시스템 활동을 확인하려는 경우 이로 인해 심각한 성능 저하가 발생할 수 있습니다. 마지막으로 가장 큰 단점은 ptrace()이 추적된 프로세스의 동작을 변경한다는 것입니다. 추적되는 동안 추적 프로그램은 부모 프로세스입니다. 즉, 추적된 프로세스의 실제 부모는 자식 프로세스가 알림을 발생시킬 때 일반적으로 볼 수 있는 알림을 볼 수 없습니다.

Windows NT/2000/XP에서 지원하는 I/O Manager와 같은 파일 시스템 필터 드라이버(Linux 용어로 stackable 드라이버)를 작성할 수 있었더라면 좋았을 텐데 현재 Linux 파일 시스템 아키텍처는 stackable을 지원하지 않습니다. 파일 시스템 드라이버. 이를 지원하기 위해 적용할 수 있는 FiST라는 패치가 있고(http://www.cs.columbia.edu/~ezk/research/fist/)) Linux용 추적 툴킷(http://www.opersys.com/LTT/index.html)도 있지만 두 가지 모두 최종 사용자가 커널을 다시 컴파일해야 하므로 피하고 싶었습니다. 그래서 Windows에서 Regmon이 작동하는 것처럼 시스템 호출 후킹 드라이버를 사용하여 모니터링을 구현하기로 결정했습니다.

Windows에서 동일한 작업을 수행하는 것보다 프로젝트를 더 어렵게 만든 두 가지 문제가 있습니다. 첫 번째는 Linux의 아버지이자 Linux 커널 개발 책임자인 Linus Torvalds가 커널 디버거의 사용을 믿지 않는다는 것입니다. 그 이유는 매우 터무니없으며(Linus의 설명을 읽으려면 http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-36/0575.htm l 참조) Linux 커널이 Windows를 따라잡는 데 어려움을 겪는 몇 가지 이유 중 하나입니다. 몇 가지 비공식 커널 디버거가 존재하지만 커널을 패치하고 사용하려면 약간의 노력이 필요합니다. 두 번째 우려는 Linus가 새 커널이 릴리스될 때 장치 드라이버와의 하위 호환성을 보장하지 않는다는 것입니다. 그 결과 내보낸 커널 API가 갑자기 변경되어 API를 사용하는 기존 드라이버가 중단되고 새 커널에 대해 다시 컴파일해야 할 수 있습니다.

내장된 커널 디버거가 없다는 것은 디버그 인쇄 문을 통해 디버깅했음을 의미했습니다(printk의 커널 모드 인쇄를 통해 디버깅하는 데 커널 디버거를 설치하고 학습하는 것만큼 많은 시간을 할애할 것이라고 생각했습니다). , 변경되는 커널 API 및 데이터 구조는 Filemon for Linux가 커널 종속적임을 의미합니다. 축소 포장된 Red Hat 7.1 및 7.2와 SuSE Linux 7.1 및 7.2, 그리고 아마도 다른 상용 배포판에서 작동하지만 임의의 커널 변경으로부터 드라이버를 격리하는 방법을 아직 고안하지 못했습니다. 드라이버는 커널 함수의 호출 규칙을 표준에서 빠른 호출로 변경한 것입니다.

Linux용 Filemon은 Windows용 Filemon과 정확히 동일한 인터페이스를 가지고 있으며 매우 유사해 보입니다(Linux용 Filemon 페이지의 스크린샷 참조). Linux용 일반 비커널 종속 파일 시스템 필터 개발의 용이성에 대한 내 결론은 명확해야 합니다. 불가능하지는 않더라도 어렵습니다. 대조적으로, 모든 드라이버 도메인(네트워킹, 파일 시스템, 저장소, 입력 등)의 스택형(필터) 드라이버는 처음부터 Windows NT I/O 아키텍처에서 지원되었습니다.

http://www.sysinternals.com/linux/utilities/filemon.shtml에서 Linux용 Filemon 다운로드

WWW.MICROSOFT.COM의 SYSINTERNALS

마지막 뉴스레터 이후에 발표된 Microsoft 기술 자료(KB) 기사의 최신 Sysinternals 참조를 다시 한 번 소개합니다. 제목에 Filemon이 있는 항목에 유의하세요. 이로써 Sysinternals에 대한 총 KB 참조 수가 31개가 됩니다. http://www.sysinternals.com/ntw2k/info/mssysinternals.shtml에서 전체 목록을 찾을 수 있습니다.

  • 설치 중 치명적인 예외 오류 메시지 발생 http://support.microsoft.com/support/kb/articles/Q273/9/18.ASP

  • FP2000: 데이터베이스 드라이버에 대한 유형 목록의 파일이 비어 있음 http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308935

  • HOWTO: 오류 1928 "COM+ 애플리케이션 등록 오류" 문제 해결 http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308940

  • PRB: ADO와 함께 #import를 사용할 때 EOF와 크래시 http://support.microsoft.com/support/kb/articles/Q166/1/12.ASP

  • PRB: CoFreeUnusedLibraries http://support.microsoft.com/support/kb/articles/Q301/3/57.ASP 호출 후 DLL이 언로드되지 않음

  • PRB: 오류 80004005 "Microsoft Jet 데이터베이스 엔진이 '(알 수 없음)' 파일을 열 수 없습니다" http://support.microsoft.com/support/kb/articles/Q306/2/69.ASP

  • PRB: FileMon은 DAO360.dll이 MSJet49.dll, MSJet48.dll 및 기타 MSJetxx.dll 파일을 로드하지 못함을 보여줍니다 http://support.microsoft.com/support/kb/articles/Q306/3/86.ASP

  • SMS: 소프트웨어 인벤토리 에이전트가 잘못된 페이지 장애 오류 메시지 http://support.microsoft.com/support/kb/articles/Q302/6/51.ASP 생성

내부 정보

INSIDE WINDOWS 2000, 대화형 DVD

Windows 2000 internals에 대한 대화형 DVD 자습서인 INSIDE Windows 2000의 시험판 특별 가격을 놓쳤다면 좋은 소식이 있습니다! 일반 단일 사용자 가격에서 25% 이상 할인된 $950의 소개 가격은 계속 사용할 수 있습니다. 지금 주문하거나 David Solomon과 Mark Russinovich의 흥미로운 신제품에 대한 추가 정보를 보려면 http://www.solsem.com/dvd.html.(으)로 이동하세요. 인트라넷 스트리밍을 위한 네트워크 배포 형식으로도 제공됩니다!

날짜를 표시 : 루시노비치와 솔로몬은 시애틀과 보스턴에서 다시 함께 가르친다

지난 달 오스틴에서 열린 3일간의 Windows 2000/XP 내부 강의는 매진에 성공하여 4월 17-19일 시애틀 근처와 6월 12-14일 보스턴(등록이 곧 시작됨)의 두 가지 추가 강의 일정을 잡았습니다. 클래스는 "Inside Windows 2000, 3rd Edition"을 기반으로 하며 환경 하위 시스템, 시스템 호출 디스패치, 시스템 스레드, 시작 및 종료, 레지스트리 내부, 프로세스 및 스레드 예약, 메모리 관리, 보안, I/O 시스템, 스토리지, NTFS 및 캐시 관리자를 다룹니다. Windows XP & 2000의 내부 작동을 이해하면 플랫폼을 보다 효과적이고 효과적으로 디버그하고 문제를 해결할 수 있습니다. 자세한 내용은 http://www.sysinternals.com/seminar.shtml 참조

WINDOWS XP 매니페스트 파일

Windows XP에서 가장 눈에 띄는 변화 중 하나는 Luna 데스크탑이 제공하는 새로운 모양과 느낌입니다. Luna는 실제로 "테마"이며 테마를 인식하지 못하는 애플리케이션(Windows XP 테마를 활용하도록 특별히 작성되지 않은 애플리케이션)을 실행하면 애플리케이션은 이전 Windows 2000 스타일의 모양과 느낌을 갖게 됩니다. 그러나 소스 코드가 없는 경우에도 오래된 애플리케이션을 매우 쉽게 새 모양으로 만들 수 있습니다. 해당 애플리케이션이 %SystemRoot%\System32의 비테마 인식 버전 대신 Common Control 버전 6 DLL(%SystemRoot%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1 df_6.0.0.0_x-ww_1382d70a의 comctl32.dll)을 사용하기를 원한다고 Windows XP 로더에 알리는 애플리케이션용 XML 매니페스트 파일을 생성하기만 하면 됩니다. Process Explorer v5.2 테마를 인식하게 하는 매니페스트 파일은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly
xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Process Explorer"
processorArchitecture="x86"
version="5.1.0.0"
type="win32"/>
<description>Process handle and DLL viewer</description> <dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

테마 인식을 설정할 응용 프로그램의 응용 프로그램 이름, 버전 및 설명을 변경한 다음 파일을 저장합니다(예: procexp.exe.manifest에 추가된 ".manifest" 제외). 애플리케이션의 개발자인 경우 내가 Process Explorer에서 수행한 것처럼 애플리케이션의 리소스에 매니페스트 파일을 포함할 수 있습니다. 이를 수행하는 방법에 대한 예제는 Filemon의 소스 코드를 참조하세요.

X-Box에 무엇이 있나요?

최근에 콘솔 게임 세계를 지켜본 적이 있다면 Microsoft의 새로운 X-Box 콘솔이 수정된 Windows 2000 버전을 실행하고 있다는 사실을 거의 확실하게 알고 있을 것입니다. 우리 책의 4판을 위한 최근 Windows XP 연구 여행을 위해 Microsoft에서 나가는 동안 Dave Solomon과 저는 Windows 2000/XP 개발 팀으로부터 X-Box 그룹이 드라이버 지원을 위해 Windows 2000을 결정했다는 사실을 알게 되었습니다. 결정이 내려진 후, X-Box 개발자들은 Windows 2000 소스 트리의 복사본을 가지고 떠났고, Windows 2000/XP 팀은 다시는 소식을 거의 듣지 못했습니다.

X-Box에는 고작 512KB의 메모리에 들어가는 Windows 2000의 고도로 수정되고 간소화된 버전이 있습니다. 관련 없는 모든 하위 시스템이 제거되었으며(처음에는 플러그 앤 플레이 하위 시스템만 제거하고 드라이버 로딩이 의존한다는 사실을 깨달은 후 다시 추가함) 하나의 프로세스만 실행하며 Win32 하위 시스템이 없습니다(X-Box API만 있음). ). X-Box에는 64MB의 실제 메모리만 있고 가상 메모리 지원이 없으므로 Windows 2000 메모리 및 캐시 관리자는 제거된 두 하위 시스템입니다. 이러한 과감한 수정으로 Windows 2000이 아닌 새로운 운영 체제로 간주해야 합니다.

에서 X-Box, GameCube 및 PS2 내부 요소에 대해 자세히 알아볼 수 있습니다. http://www.e-insite.net/ednmag/index.asp?layout=article& articleid=CA185947&pubdate=12-20-01

무작위 WINDOWS XP 통계

다음 통계는 Microsoft에서 OEM System Builder의 웹 사이트(http://oem.microsoft.com – 무료로 등록할 수 있음)에 게시되었으며 그 중 일부는 흥미롭거나 재미있을 것이라고 생각했습니다.

덧붙여서, Windows XP 최종 릴리스의 빌드 번호는 우연히 2600으로 떨어진 것이 아닙니다. 약간 날조된 것입니다(빌드 번호는 운영 체제가 빌드 랩에서 컴파일할 때마다, 일반적으로 하루에 한 번 증가합니다). 내부 소식통에 따르면 이 숫자는 느슨하게 짜여진 해커 그룹인 2600 커뮤니티(http://www.2600.com/), XP의 보안에 대한 XP 팀의 자신감을 보여주는 메시지)를 대상으로 한 것입니다.

  • Windows XP를 개발하는 데 걸린 일수: 600(99년 12월 20일 – 2001년 8월 24일)
  • 집중 팀원 수: 5,736명
  • 개발자당 테스터 수: 1.4
  • 프로젝트 기간 동안 태어난 아기의 수: 452
  • 고용된 인턴 수: 504
  • 40회 "Windows 정보 회의" 동안 소비된 마카로니 양: 6,000파운드
  • 제공되는 Frappuccino's® 수: 86,400
  • 시애틀 로날드 맥도날드 하우스(지역 자선단체)를 위해 모금된 달러: 200만 달러
  • 시스템 복원 기능에 대한 테스트 사례 수: 160만
  • Windows XP RC1 이후 실행된 Direct3D 그래픽 테스트 사례 수: 43,114,143
  • 호환성 테스트를 거친 애플리케이션 수: 5,500개
  • 즉시 지원되는 장치 수: 12,000
  • 지난 3년 동안 배포된 가장 인기 있는 PC 애플리케이션 중 Windows XP와 호환될 비율: 90%
  • 가장 큰 디지털 미디어 라이브러리 테스트 사례의 트랙 수: 31,000
  • Windows Movie Maker에서 캡처한 가장 긴 단일 파일의 길이(시간): 114
  • 지역화 중인 언어 수: 24개 완전 및 부분적으로 9개
  • 10/25 출시에 참여하는 국가 수: 50개 이상
  • 전 세계 출시 행사 참석자 수: 580,000석 이상… 온라인 청중 전 세계 5,120명의 시스템 빌더

새롭게 개선된 WINDBG

Windbg는 Windows NT/2000/XP 커널에서 기본 제공되는 커널 디버깅 지원의 그래픽 프런트 엔드입니다. 지난 몇 년 전까지 Windbg는 엉성하고 번거롭다는 평판을 얻었지만 Microsoft가 이를 개선하는 데 집중한 이후 상황이 바뀌었습니다. http://www.microsoft.com/ddk/Debugging/에서 무료로 다운로드할 수 있는 최신 버전의 Windbg는 이전 버전보다 크게 개선되었으며 사용하기 더 쉽습니다. 숙련된 Windbg 사용자도 인식하지 못할 수 있는 몇 가지 새로운 기능과 시스템 크래시를 진단하려는 시스템 관리자에게 유용한 두 가지 명령이 있습니다.

최신 Windbg를 매우 사용하기 쉽게 만드는 기능은 Microsoft의 기호 서버에 대한 지원입니다. 크래시 덤프를 보거나 Windbg로 애플리케이션을 디버깅할 때의 문제는 설치를 위한 올바른 디버그 기호 파일을 설치해야 한다는 것입니다. 서비스 팩, 핫픽스 및 다른 운영 체제(예: Windows NT 대 Windows XP)의 크래시 가능성으로 인해 부담이 될 수 있습니다. 기호 서버 지원을 사용하면 Windbg 기호 경로 대화 상자에 Microsoft 기호 서버의 URL을 입력하기만 하면 Windbg가 필요에 따라 서버에서 기호를 다운로드하여 지정한 디렉터리에 저장합니다. 기호 서버에는 Windows .NET Server 베타 3, Windows XP 및 XP 릴리스 후보, Windows 2000 및 해당 서비스 팩과 핫픽스, Windows NT 4, MDAC 2.1-2.7, IIS 및 ISA에 대한 기호가 있습니다.

크래시 덤프 디버깅에 유용한 두 명령은 !analyze 및 .dump입니다. !analyze(-v 스위치 지정)를 실행하여 휴리스틱을 기반으로 크래시에 대한 자동 분석을 가져옵니다. 이 명령은 이미 매우 강력하며 Microsoft가 실제 크래시에서 더 많은 기록 데이터를 통합함에 따라 훨씬 더 정확해질 것입니다.

.dump 명령은 사용자 모드 디버깅과 커널 모드 크래시 덤프 분석 모두에 유용합니다. 일부 서버 환경, 특히 웹 서버에서는 메모리 누수 또는 기타 문제를 식별할 수 있지만 원인이 분리될 때까지 서버를 중지하고 다시 시작하려고 하지 않습니다. Windows XP 및 .NET Server에서 Windbg를 사용하여 서버 프로세스에 연결하고 .dump 명령을 실행하여 사용자 메모리 크래시 덤프 파일을 생성한 다음 분리(.detach 명령 사용)하여 서버를 잠시만 일시 중지할 수 있습니다. 그런 다음 개발자는 생성된 덤프 파일을 가져와서 오프라인에서 분석할 수 있습니다.

기본적으로 Windows 서버 시스템은 전체 메모리 덤프를 생성합니다. 이 덤프는 시스템에 있는 실제 메모리 양만큼 크므로 매우 클 수 있습니다. 그러나 Windbg에 덤프를 로드하고 .dump 명령을 사용하여 전체 덤프에서 더 작은 커널 메모리 또는 미니 덤프를 생성할 수 있습니다. 작은 파일은 교환하기 쉽고 종종 크래시 원인을 격리하는 데 필요한 모든 것입니다.

http://www.microsoft.com/ddk/Debugging/에서 최신 버전의 Windbg를 다운로드하고 http://www.microsoft.com/ddk/debugging/symbols.asp에서 Microsoft 기호 서버에서 기호를 가져오도록 Windbg를 구성하는 방법에 대한 지침을 찾으세요.

향후 예정 사항

BOOTVIS를 사용하여 WINDOWS XP 부팅 프로세스 프로파일링

Windows XP 부팅 프로세스를 조정하는 데 도움을 주기 위해 Windows XP 성능 팀은 운영 체제의 핵심 사항을 계측하고 BootVis라는 도구를 개발하여 부팅 추적을 표시했습니다. 놀라운 움직임으로 그들은 도구를 무료로 사용할 수 있게 만들었습니다. 사용이 매우 쉬우며 드라이버가 초기화되는 시기, 디스크 I/O가 발생하는 시기와 장소, 서비스 및 애플리케이션이 시작될 때의 정보를 포함하여 놀라운 양의 세부 정보를 표시합니다. 다음에는 어디서 구할 수 있고 어떻게 사용하는지 알려드리겠습니다.


Sysinternals 뉴스레터를 읽어주셔서 감사합니다.

발행일: 2002년 1월 7일 월요일 오후 7:01 by ottoh

[회보 보관 ^] [< 볼륨 3, 번호 2] [볼륨 4, 번호 2 >]