[회보 보관 ^] [< 볼륨 1, 번호 5] [볼륨 2, 번호 2 >]
시스템 내부 뉴스레터 2권, 1호
Copyright © 2000 Mark Russinovich
2000년 1월 6일 - 이번 호에서:
SYSTEMS INTERNALS의 새로운 소식
- PSKill v1.0
- PsList v1.1
- WinObj v2.1
- Contig v1.3
- NTFSCHK v1.0
- HandleEx v2.1
- Ctrl2cap v2.0
- Filemon v4.26
- Bluescreen v2.1
- Fundelete v2.01
- Openlist v1.11
- 12월 NT Internals
INTERNALS 뉴스
- Win2K DDK 출시
- 키 입력으로 Win2K 크래시
- 쓰기 방지된 시스템 메모리 업데이트
- Win2K API 폭발
- David Solomon 세미나
향후 예정 사항
- Microsoft NT 관련 특허
스폰서: 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용 고급 부팅 디스크 기능) 및 원격 복구가 포함됩니다.
Winternals Software의 NTFSDOS Professional 및 NTFS for Win98은 DOS, Windows 95 및 Windows 98에서 NTFS 드라이브에 대한 완전한 읽기 및 쓰기 액세스를 제공합니다. NTFSDOS Pro는 단일 플로피 "부팅 디스크" 기능을 Windows NT/2K에 제공합니다. NTFSDOS Pro를 사용하면 버그가 있는 드라이버를 삭제하고 파일을 새로 고칠 수 있으며 DOS 부팅 플로피에서 NTFS 드라이브에 대한 일반 파일 시스템 유지 관리를 수행할 수 있습니다. Win98용 NTFS를 사용하면 Windows 95 및 Windows 98에서 NTFS 드라이브에 투명하게 액세스할 수 있습니다. 이중 부팅 환경에서 NTFS 드라이브의 NT와 Win9x 간에 애플리케이션과 파일을 쉽게 공유할 수 있습니다. 두 유틸리티 모두에서 NTFS Chkdsk 기능이 기본 제공됩니다. NTFSDOS Pro의 무료 읽기 전용 버전은 http://www.sysinternals.com/ntfspro.htm에서 사용할 수 있으며 Win98용 NTFS의 무료 읽기 전용 버전은 http://www.sysinternals.com/ntfs98.htm.에서 사용할 수 있습니다.
여러분, 안녕하세요.
Systems Internals 뉴스레터에 오신 것을 환영합니다. 뉴스레터는 현재 14,000명의 구독자를 보유하고 있습니다.
아시다시피 Win2K는 디스크 복제기에 설치되어 있습니다. Win2K의 RTM(Release-to-Manufacturing) 버전은 결국 빌드 2195가 되었습니다. RC3은 2128이었고 제가 이전 뉴스레터에서 설명드린 것처럼 Microsoft는 현재 소스 트리를 컴파일할 때 주말과 공휴일을 포함하여 매일 밤 빌드 번호를 증가시킵니다.
저는 지난 11월에 Microsoft에 있었고(내가 그곳에 있었던 이유는 뉴스레터의 Filemon 업데이트 참조) 커널 팀의 구성원이 저를 Microsoft 캠퍼스의 Building 26 투어에 데려갔습니다. 26번 건물은 Windows NT/2K 기본 커널 팀이 있는 곳이며 Windows NT/2K 빌드 및 테스트 랩이 있는 곳입니다. 빌드 랩과 테스트 랩의 크기는 거의 같지만(아마도 30' x 60') 테스트 랩은 컴퓨터 랙으로 가득 차 있는 반면 빌드 랩에는 빌더를 위한 책상 공간과 좌석이 있습니다. 매일 밤 빌더는 여러 쿼드 프로세서 시스템에 소스 트리를 추출하고 컴파일을 실행합니다. 누군가의 코드 체크인이 빌드를 중단시키는 일이 발생하면(금지) 문제를 해결하기 위해 시간에 관계없이 해당 사람이 호출됩니다. 11월 중순까지 Win2K는 허용된 유일한 변경 사항이 위원회의 승인을 받고 "쇼 스토퍼" 버그 수정을 지시하는 코드 동결 상태에 있었습니다.
새로운 빌드가 생성되면 테스터는 이를 가져와 연구실의 모든 시스템에 동시에 설치합니다. 테스트 랩의 시스템 랙은 작은 핸드헬드 크기의 컴퓨터에서 모든 주요 PC 공급업체의 식기세척기 크기의 멀티프로세서 서버에 이르는 모든 것으로 가득 차 있습니다. Win2K 설치가 완료되면 시스템은 광범위한 스트레스 테스트 스크립트를 실행합니다. 개발 후반부 동안 Win2K는 90% 이상의 비율로 스트레스 테스트를 통과했습니다. 개발자가 자체 테스트 중에 문제를 파악하는 데 도움이 되는 도구인 드라이버 검증 도구와 같은 몇 가지 Win2K 안정성 향상 기능이 도입되기 전에는 비율이 훨씬 낮았습니다.
빌드가 모든 테스트를 통과하는지 여부에 관계없이 Microsoft 직원이 다운로드하여 설치할 수 있는 Microsoft 내부 배포 서버에 업로드됩니다. 개발자가 심각한 문제를 도입한 경우 다음 주에 문제가 발생하게 될 수백 명의 직원이 보낸 전자 메일을 기대할 것입니다. 테스트 팀이 회사 전체에 경고하는 전자 메일을 보내는 것은 많은 수의 사용자에게 심각한 문제가 발생할 경우에만 해당됩니다(25,000명 이상의 사람들에게 전자 메일을 전파하는 것은 가볍게 여겨서는 안 됩니다).
그곳에서 Windows NT의 수석 설계자인 Dave Cutler도 만났습니다. 그는 요즘 어떻게 지낼까요? 11월에 커널 팀은 이미 Win2K(내부적으로 NT 6 또는 Neptune으로 알려짐)의 후속 제품에 대해 열심히 작업하고 있었고 Dave는 64비트 버전의 Win2K 설치를 수정하는 작업을 하고 있었습니다. Dave는 64비트 개발 노력을 이끌었고 64비트 Win2K는 완성 단계에 있습니다. Intel이 최근에야 Merced 프로세서 샘플을 생산하기 시작했고 캠퍼스에는 단 한 개만 있었기 때문에 11월 현재 커널 팀은 여전히 Alphas에서 64비트 작업을 하고 있었습니다.
여느 때처럼 관심이 있을 것 같은 친구에게 뉴스레터를 전달해 주세요.
감사합니다!
-Mark
SYSTEMS INTERNALS의 새로운 소식
PSKILL V1.0
Windows NT 및 Win2K 리소스 키트에는 명령줄 "kill" 유틸리티가 포함되어 있지만 Windows NT 및 Win2K에는 하나가 없기 때문입니다. Resource Kit "kill"을 사용하여 로컬 프로세스를 종료할 수 있지만 원격 프로세스는 종료할 수 없습니다. 따라서 저는 저의 PsList처럼 원격 기능이 있는 무료로 사용할 수 있는 "kill"을 작성하기로 결정했습니다. PsKill은 프로세스 ID 또는 이름과 선택적 컴퓨터 이름을 사용하여 지정한 로컬 시스템 또는 원격 시스템에서 일치하는 프로세스를 종료합니다. 원격 컴퓨터에 클라이언트 구성 요소를 설치할 필요조차 없습니다. 실행 중인 계정에 원격 컴퓨터에 대한 관리 권한이 없는 경우 PsKill 명령줄에 계정 이름과 암호를 추가하여 원격 시스템에 로그인하여 kill을 수행할 수 있습니다.
http://www.sysinternals.com/pskill.htm.에서 PsKill v1.0 다운로드
PSLIST V1.1
얼마 전에 UNIX ps 스타일 프로세스 및 스레드 뷰어로 PsList를 릴리스했습니다. Windows NT 및 Win2K 리소스 키트의 유사한 도구와 달리 PsList를 사용하면 로컬 시스템뿐만 아니라 원격 시스템에서도 프로세스 및 스레드 정보를 볼 수 있습니다. PsList는 Perfmon과 마찬가지로 Win NT/2K의 성능 API 정보를 읽어 작동합니다. 이 PsList 개정판에는 명령줄에서 계정 이름과 암호를 지정하여 원격 시스템에 로그인할 수 있는 기능이 추가되었습니다. 이 옵션을 사용하면 PsList를 실행하는 계정에 관리자 권한이 없는 원격 컴퓨터에 액세스할 수 있습니다.
http://www.sysinternals.com/pslist.htm.에서 PsList v1.1 다운로드
WINOBJ V2.1
WinObj는 Windows NT/2K용 Object Manager 네임스페이스 뷰어입니다. 개체 관리자 네임스페이스는 일반적으로 사용자에게 보이지 않는 네임스페이스이지만 이름이 지정된 모든 Win32(\BaseNamedObjects
및 \??
) 및 이름이 지정된 커널 개체가 있는 곳입니다. 또한 파일 시스템 네임스페이스(\??
아래의 드라이브 문자 심볼릭 링크를 통해) 및 레지스트리 네임스페이스(키 객체 \Key
를 통해)에 대한 진입점 역할을 합니다.
WinObj는 같은 이름의 Win32 소프트웨어 개발 키트(SDK)의 도구와 유사하지만 Microsoft 버전보다 훨씬 더 많은 기능을 수행합니다. 예를 들어 WinObj에서 개체의 속성을 볼 때 임의의 숫자가 아닌 참조 및 핸들 수를 볼 수 있습니다(SDK WinObj에는 몇 가지 주요 버그가 있음). WinObj는 또한 동기화 개체 및 개체 보안 정보의 상태를 보여줍니다.
이 최신 WinObj 업데이트는 Win2K의 네임스페이스에 있는 일부 긴 심볼릭 링크 값을 제대로 표시하지 못하게 하는 버그를 수정합니다. 또한 Win2K에서 실행할 때 보다 친숙한 새 Win2K 보안 편집기 대화 상자를 사용합니다(NT 4에서는 ACLEDIT.DLL에서 제공하는 문서화되지 않은 보안 편집기 인터페이스를 사용함). 사용자 인터페이스 향상에는 다음에 WinObj를 시작할 때 해당 디렉토리가 선택되도록 종료할 때 보고 있는 디렉터리를 기억하고 디렉토리 내용 목록 보기 창을 정렬할 수 있는 기능이 포함됩니다.
http://www.sysinternals.com/winobj.htm.에서 WinObj v2.1 다운로드
CONTIG V1.3
Microsoft는 NT 4를 출시할 때 기본 제공 파일 조각 모음 API를 포함했습니다. 저는 API를 문서화하고 http://www.sysinternals.com/defrag.htm.에서 API를 사용하는 샘플 코드를 제공합니다. API를 사용하여 개별 파일 또는 디렉터리 조각 모음에 사용할 수 있는 명령줄 조각 모음 도구인 Contig를 구현했습니다. Contig의 초기 릴리스 이후로 단편화 분석 옵션을 추가해 달라는 많은 요청을 받았고 마침내 구현에 성공했습니다. Contig v1.3을 사용하면 지정한 파일이 얼마나 조각화되었는지 확인할 수 있으므로 더 비싼 조각 모음 프로세스를 수행해야 하는지 여부를 결정할 수 있습니다.
파일 조각 모음과 관련하여 시만텍은 가장 진보된 조각 모음 도구인 Speedisk 5.0을 출시했습니다. 경쟁에서 우위를 차지하기 위해 조각 모음 API를 우회하고 디스크 주위의 블록을 수동으로 이동하여 시스템이 온라인 상태인 동안 디렉터리와 MFT까지 조각 모음할 수 있습니다. Executive Software가 http://www.execsoft.com/diskeeper/infosheet.asp#Q9에서 언급한 것과는 달리 Diskeeper 제품(버전 4.0 및 버전 5.0 모두)은 특히 부팅 시 디렉터리 통합을 수행할 때 조각 모음 API를 우회합니다(단, 조각 모음은 Norton만큼 발전하지 않음). 경영진의 마케팅은 홍보 자료의 내용을 모두 믿어서는 안 되는 또 다른 이유입니다.
http://www.sysinternals.com/contig.htm.에서 Contig v1.3 다운로드
http://www.sysinternals.com/pagedfrg.htm.에서 레지스트리 및 페이징 파일 조각 모음 도구인 PageDefrag를 다운로드하세요.
NTFSCHK V1.0
컴퓨터에 NT 4와 함께 Win2K를 설치하는 고급 사용자의 일반적인 불만은 Win2K가 NTFS 드라이브를 NTFS v5로 자동 업그레이드하면 NT 4 Chkdsk가 해당 드라이브를 확인할 수 없게 된다는 것입니다. NTFS v5 드라이브를 검색하고 오류를 수정하는 대신 NT 4 Chkdsk는 최신 버전의 NTFS로 만든 드라이브에서 실행할 수 없다고 알리고 종료합니다. 적어도 지금까지는 해당 드라이브를 확인하고 싶을 때마다 Win2K로 부팅해야 합니다.
NTFSCHK를 사용하면 NT 4에서 Chkdsk의 Win2K 버전을 실행할 수 있습니다. 방법은? Win98용 NTFSDOS Professional 및 NTFSDOS의 일부로 DOS 및 Windows 9x에서 NT의 기본 Chkdsk를 실행하기 위해 개발한 것과 동일한 기술을 사용하여 NTFSCHK는 Win2K처럼 보이는 환경에서 Win2K Chkdsk를 래핑합니다.
http://www.sysinternals.com/ntfschk.htm.에서 NTFSCHK v1.0 다운로드
HANDLEEX V2.1
HandleEx는 Windows NT/2K용 다각적인 진단 유틸리티로 어떤 DLL 프로세스가 로드되었는지, 어떤 개체가 열렸는지(해당 핸들) 보여줍니다. HandleEx는 DLL 버전 관리 문제를 추적하고 누수를 처리하며 특정 파일, 디렉터리 또는 레지스트리 키에 액세스하는 애플리케이션을 확인하는 데 유용합니다.
HandleEx 버전 2.1에서는 참조 횟수 및 동기화 개체의 상태를 포함하여 프로세스가 연 개체의 속성을 볼 수 있습니다. 또한 NT의 보안 편집기를 사용하여 개체 보안 속성을 보고 수정할 수 있습니다.
http://www.sysinternals.com/handleex.htm.에서 HandleEx v2.1 다운로드
CTRL2CAP V2.0
UNIX 배경에서 왔다면 PC 키보드의 컨트롤 키가 잘못된 위치에 있다는 데 동의할 것입니다. Caps-Lock 키가 있는 위치여야 합니다. 어쨌든 누가 caps-lock 키를 사용합니까? Ctrl2cap은 Caps-Lock을 왼쪽 컨트롤로 변경하여 부작용으로 Caps-Lock을 제거하는 키보드 필터 드라이버입니다(저는 Half Life를 플레이할 때 표준 왼쪽 컨트롤을 실행 키로 사용합니다).
Ctrl2cap v1.0은 Win2K에서 작동하지만 이를 사용하면 Win2K의 전원 관리 기능이 비활성화되어 노트북에서 약간 불편한 상황을 만듭니다. 따라서 저는 Ctrl2cap을 WDM(Windows Driver Model)을 준수하도록 업데이트했으며 여기에는 전원 관리 친화적인 기능이 포함됩니다. 저는 전체 소스 코드를 제공하고 동일한 소스 파일은 NT 4 및 Win2K 버전을 모두 빌드합니다.
http://www.sysinternals.com/ctrl2cap.htm.에서 소스 코드와 함께 Ctrl2cap v2.0 다운로드
FILEMON V4.26
제가 11월에 Microsoft에 있었던 이유는 Microsoft가 "File System Filter Plugfest"(내부적으로는 "Irp-olooza"라고 함)를 개최했기 때문입니다. 플러그페스트는 Windows NT/2K 파일 시스템 필터 드라이버를 기반으로 하는 모든 주요 제품을 모아서 라운드 로빈 방식으로 페어링하고 서로 다른 페어링에 대해 스트레스 테스트를 실행했습니다. 표시된 제품에는 약 9개의 서로 다른 바이러스 스캐너, 다양한 파일 암호화 도구 및 디스크 할당량 관리자가 포함되어 있습니다. 축제의 목표는 다양한 필터 조합과 관련된 상호 운용성 문제를 식별하고, 주요 필터 제품에서 버그를 찾아 식별하는 데 도움을 주고, 어쩌면 Win2K에서 버그를 찾는 것이었습니다. Filemon은 세계에서 가장 널리 사용되는 필터 중 하나이고 많은 Microsoft 그룹이 개발 및 문제 해결 작업을 위해 Filemon에 의존하기 때문에 plugfest 주최자는 저를 이벤트에 초대하여 대표하도록 했습니다.
Filemon은 하나를 제외하고 사고 없이 모든 스트레스 테스트를 통과했습니다. Filemon은 동적으로 로드되는 필터 드라이버이기 때문에 하나를 제외하고 이벤트에 있는 모든 제품 위에 계층화되었습니다. Filemon 위에 겹겹이 쌓인 제품도 동적으로 로드되는 바이러스 스캐너인데 사실 Filemon을 기반으로 한 제품입니다. 바이러스 스캐너가 동적으로 로드되기 때문에 우리는 두 계층 순열을 모두 시도했으며 Filemon이 맨 아래에 있는 경우 바이러스 스캐너가 크래시했습니다. Filemon의 GUI가 종료되면 드라이버가 필터 장치 객체를 삭제합니다. 필터 드라이버가 I/O 관리자로부터 명령을 받지 않는 한 필터 장치 개체를 삭제하는 것은 실제로 불법입니다(파일 시스템 필터의 FastIoDetach
및 WDM의 IRP_MJ_PN
P with IRP_MN_REMOVE_DEVICE
). 당연하게도 Filemon의 장치 개체가 예기치 않게 사라지면서 바이러스 스캐너가 할당 해제된 메모리에 액세스하고 크래시이 발생했습니다.
다행스럽게도 Filemon의 크래시은 플러그페스트의 마지막 세션에서 발생했기 때문에 문제가 거의 없었으며, 테스트에서 모든 제품에서 심각한 버그 또는 상호 운용성 문제가 하나 이상 발견되었기 때문에 저만의 문제가 아니었습니다. Filemon v4.26은 plugfest에서 발견된 버그를 수정한 버전입니다.
플러그페스트에 참석하기 전에도 Filemon에서 NT 디바이스 및 파일 시스템 드라이버 개발자에게 관심이 있을 수 있는 버그를 발견했습니다. 저는 최근에 제대로 문서화되지 않은 Executive Resource(E-Resource) 동기화 메커니즘을 사용하도록 Filemon을 수정했습니다. Microsoft의 파일 시스템 드라이버는 E-Resources를 광범위하게 사용하므로 Filemon의 소스 코드에 사용을 포함하는 것이 교육적이라고 생각했습니다. E-Resources는 APC(비동기 프로시저 호출)가 비활성화된 스레드에서 획득해야 합니다. DDK 문서에서 알려주지 않기 때문에 "알아야" 합니다. 불행하게도 서둘러 구현하는 과정에서 Filemon의 E-Resource 인수와 관련된 APC를 비활성화 및 재활성화하는 기능에 대한 필수 호출을 생략했습니다. 이 버그는 매우 드문 경우에만 문제를 일으키므로 Win2K의 드라이버 검증 도구가 발견할 때까지 검색하지 못했습니다. 이 문제를 해결하기 위해 E-Resource를 획득하기 전에 KeEnterCriticalSection에 대한 호출을 추가하고 E-Resource를 릴리스한 후에 KeLeaveCriticalSection에 대한 호출을 추가했습니다.
http://www.sysinternals.com/filemon.htm.에서 Filemon v4.26 다운로드
BLUESCREEN V2.1
Bluescreen Screen Saver는 무서운 Windows NT Blue Screen of Death(BSOD)를 시뮬레이트하는 제가 작성한 화면 보호기입니다. 저는 Win2K 릴리스가 출시되기 전에 원래 버전을 작성했기 때문에 NT 4 BSOD를 시뮬레이트하고 다시 시작하여 Chkdsk가 디스크 오류를 검색하는 것으로 완료했습니다. 저는 두 가지 버전을 사용할 수 있게 만들었습니다. 하나는 현실감을 더하기 위해 디스크 I/O를 수행했고 다른 하나는 수행하지 않았습니다. Win2K 베타 3이 출시된 후 Bluescreen을 업데이트하여 새로운 Win2K BSOD를 시뮬레이트하고 시스템을 다시 시작했습니다. RC3에서는 다시 시작 화면이 바뀌어서 블루스크린을 다시 업데이트해야 했습니다. 동시에 디스크 I/O 생성을 두 가지 버전 대신 블루스크린의 화면 보호기 속성으로 구성할 수 있는 옵션으로 만들었습니다.
http://www.sysinternals.com/bluescrn.htm.에서 Bluescreen v2.1 다운로드
FUNDELETE V2.01
길고 긴 기다림 끝에 Windows NT용 Undelete가 Windows NT용 Fundelete로 돌아왔습니다. Fundelete는 Windows NT/2K 휴지통을 향상시켜 프로그램 및 명령줄에서 삭제된 파일과 탐색기에서 삭제된 파일을 캡처하는 유틸리티입니다. 왜 이름이 변경되었나요? Bryce와 내가 Windows NT용 Undelete를 출시한 지 몇 달 후 Executive Software는 유사한 유틸리티인 Network Undelete를 출시했습니다. 1년 후 그들은 자신들의 이름보다 우리 유틸리티의 이름이 더 마음에 든다고 결정하고 Windows NT용 Undelete로 이름을 변경했습니다. 동시에 그들은 1987년부터 보유하고 있는 "삭제 취소"라는 단어의 등록 상표를 우리가 침해하고 있다고 경고하는 편지를 변호사에게 보내도록 했습니다. 우리는 싸우는 대신 유틸리티의 이름을 변경하기로 했습니다.
개발자는 Fundelete 장치 드라이버의 핵심에 소스 코드를 다운로드할 수 있으며 드라이버에서 사용자의 SID 얻기, 드라이버에서 디렉터리 내용 열거, 새 IRP 생성 등 몇 가지 강력한 드라이버 기술을 시연합니다.
http://www.sysinternals.com/fundelete.htm.에서 Windows NT v2.01용 Fundelete 다운로드
OPENLIST V1.11
Openlist는 시스템에서 열려 있는 모든 파일을 표시하는 Windows 9x 유틸리티입니다. 버전 1.11에는 DLL에 대한 버전 정보를 포함하여 파일에 대한 자세한 정보를 볼 수 있는 기능이 추가되었습니다.
http://www.sysinternals.com/openlist.htm.에서 Openlist v1.11 다운로드
12월 "NT INTERNALS"
Windows NT Magazine 12월호의 "NT Internals" 칼럼은 "Inside Win2K Scalability Enhancements, Part 2"입니다. 두 부분으로 구성된 이 시리즈의 두 번째 부분에서는 작업 개체, 새로운 양자 제어, 새로운 스케줄링 클래스 및 사용자 모드 스레드 풀을 포함하여 다중 프로세서 확장성을 위해 Microsoft가 Win2K에서 이뤄진 개선 사항에 대해 설명합니다.
지난 8월 Windows NT Magazine은 구독자만 액세스할 수 있도록 온라인 기사 검색 정책을 변경했습니다. 지난달 그들은 정책을 8월 이전 수준으로 완화했습니다. 이제 비구독자는 4호 이전의 기사나 더 오래된 기사를 자유롭게 볼 수 있습니다.
http://www.sysinternals.com/publ.htm.에서 전체 간행물 목록을 확인하세요.
INTERNALS 뉴스
WIN2K DDK 출시
Microsoft의 Win2K 장치 드라이버 개발 키트(DDK)의 최종 릴리스는 이제 http://www.microsoft.com/ddk.에서 사용할 수 있습니다. 키트를 무료로 다운로드하거나 온라인으로 설명서를 찾아볼 수 있습니다.
키 입력으로 WIN2K 크래시
아니요, 버그가 아닙니다. "Inside Windows NT 제2판"의 저자인 David Solomon이 이 멋진 팁을 제공했습니다. DWORD
레지스트리 값 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters\CrashOnCtrlScroll
을 추가하고 "1"로 설정하고 재부팅하면 키보드를 사용하여 Win2K를 크래시시킬 수 있습니다. 오른쪽 컨트롤 키를 누른 상태에서 스크롤 키를 두 번 연속으로 누릅니다. 스크롤 키를 두 번째로 누르면 시스템이 "최종 사용자가 수동으로 크래시 덤프를 생성했습니다"라는 메시지와 함께 블루 스크린이 표시됩니다.
시스템을 수동으로 크래시시키는 기능은 커널 또는 장치 드라이버가 교착 상태에 빠져 컴퓨터가 더 이상 응답하지 않는 경우에 유용합니다. 교착 상태가 존재하는 동안 생성된 크래시 덤프는 개발자에게 교착 상태의 원인을 나타내는 정보를 제공할 수 있습니다. 이 옵션은 매우 조용하게 도입되었기 때문에 Win2K의 핵심 커널 개발자조차도 내가 플러그페스트에 참석했을 때 전달하기 전까지는 이를 인식하지 못했습니다.
쓰기 방지 시스템 메모리 업데이트
이전 뉴스레터에서 저는 Win2K의 새로운 안정성 기능인 쓰기 방지 시스템 메모리에 대해 이야기했습니다. 결과적으로 전체 쓰기 방지는 많은 구성에서 기본적으로 제공되지 않습니다. 컴퓨터에 최소 128MB의 실제 메모리가 있는 경우 Win2K는 4MB "대형 페이지"를 사용하여 커널 메모리를 매핑합니다. 4KB 페이지 대신 4MB를 사용하면 페이지 번역 수준이 절약되므로 성능이 향상됩니다. 읽기 전용 코드와 읽기/쓰기 데이터가 모두 동일한 4MB 페이지에 상주할 수 있기 때문에 사용자가 드라이버 검증 도구를 사용하여 쓰기 방지를 요청하지 않는 한 해당 시스템에서 쓰기 방지가 비활성화됩니다. 드라이버 검증 도구가 쓰기 보호를 적용하면 Win2K는 더 느린 4KB 페이지를 사용하여 커널 메모리를 매핑하고 서로 다른 메모리 영역이 페이지 정렬됩니다. 즉, 개별 코드 페이지를 읽기 전용으로 표시해도 됩니다.
따라서 쓰기 방지는 메모리가 128MB 미만인 시스템과 드라이버 검증 도구가 활성화한 시스템에서만 활성화됩니다. 쓰기 방지가 활성화되지 않은 시스템의 경우 Microsoft는 시스템 메모리를 체크섬한 다음 주기적으로 체크섬에 대해 메모리를 확인하는 워치독 기능의 Win2K 서비스 팩에 포함하는 것을 고려하고 있습니다. 확인 작업은 하드웨어 지원 쓰기 보호만큼 정확하지는 않지만 읽기 전용이어야 하는 영역에 대한 잘못된 쓰기를 검색합니다.
WIN2K API 폭발
Win2K는 의심할 여지 없이 NT 4보다 훨씬 큽니다. 물론 Win2K의 크기(Active Directory, MMC, COM+ 등)의 일부로 간주되는 많은 새로운 서비스와 통합 기능이 있지만 핵심 OS도 성장했습니다. OS의 크기가 증가한 이유 중 하나는 애플리케이션용으로 내보내는 API의 수가 증가했기 때문입니다. Win2K 코어 OS DLL에는 KERNEL32.DLL, GDI32.DLL, USER32.DLL 및 ADVAPI32.DLL이 포함됩니다(NTDLL.DLL도 코어 OS DLL이지만 KERNEL32는 Win32 API용 NTDLL에 의존합니다). 각각의 API 폭발에 대해 간단히 살펴보겠습니다. 원시 숫자는 다음과 같습니다.
LIBRARY | NT 4 SP5 | WIN2K | GROWTH |
---|---|---|---|
KERNEL32 | 681 | 823 | 21% |
GDI32 | 401 | 553 | 38% |
USER32 | 629 | 695 | 10% |
ADVAPI32 | 401 | 557 | 39% |
어떤 경우에는 일부 API가 ANSI 및 넓은 문자열 형식으로 제공되어 위의 숫자에서 두 번 계산되기 때문에 성장이 인위적으로 30%까지 부풀려집니다.
KERNEL32는 프로세스, 메모리, 파일 I/O 및 로케일 관리 API를 포함하여 소위 "기본 OS" 기능을 내보내는 DLL입니다. Win2K의 새로운 API에는 새로운 언어 기능(예: EnumUILanguages
), 작업 개체 기능(예: AssignProcessToJobObject
), 메모리 관리 기능(예: AllocateUserPhysicalPages
), 파일 기능(예: FindFirstVolume
) 및 ToolHelp32 API(예: Process32First
)가 포함됩니다.
GDI32는 그리기 및 비트맵 관련 루틴을 제공합니다. 그 성장은 새로운 글꼴 관리 API(예: CreateFontIndirectEx
), 알파 블렌딩 및 경로 개체 기능을 포함하는 대부분 기타 새로운 기능의 출현으로 인한 것입니다.
USER32는 창 기능을 구현하며 성장의 상당 부분은 새로운 다중 모니터 API를 통해 이루어집니다. 다른 새로운 USER32 API에는 많은 정보 함수(예: GetWindowInfo
, GetTitleBarInfo
)가 포함되어 있습니다.
마지막으로 ADVAPI32는 고급 Win32 API를 제공하는 DLL입니다. EFS(예: DecryptFile
), CryptoAPI(예: CryptEnumProviders
), 보안(예: CheckTokenMembership
), 이벤트 추적(예: StartTrace
) 및 Windows 관리와 같이 성장에 기여하는 새로운 API 그룹이 많이 있습니다. 인터페이스(WMI)(예: WmiOpenBlock
)는 새로운 기능의 대부분을 구성합니다.
David Solomon 세미나
David Solomon 전문가 세미나가 2월 21-25일 샌디에고에서 개최됩니다. Microsoft에서 가르치는 담당자들의 개발자 교육.
- Jeffrey Richter의 Win32 프로그래밍
- John Robbins의 전력 디버깅
- Jamie Hanrahan의 Windows 2000 장치 드라이버
- Doug Boling의 Windows CE 디바이스 드라이버 및 애플리케이션
자세한 내용은 http://www.solsem.com 참조
향후 예정 사항
MICROSOFT NT 관련 특허
소프트웨어 특허는 지적 재산을 활용하려는 기업에게 필수 취미가 되었습니다. Microsoft는 특허 게임에 익숙하며 NT의 커널에는 미국 특허청(PTO)에서 인정한 몇 가지 메커니즘이 있습니다. Microsoft가 특허를 취득한 커널 영역에는 I/O 관리자와 개체 관리자가 포함됩니다. 다음에 NT 커널과 관련하여 상세히 알아볼 수 있었던 특허 목록을 알려드리겠습니다.
Systems Internals 뉴스레터를 읽어 주셔서 감사합니다.
발행일: 2000년 1월 6일 목요일 오후 7:09 by ottoh