윈도우 확장성 및 버전 정보, 체크드빌드

By 01/11/2018Windows Internal

윈도우 확장성 및 버전 정보, 체크드빌드

  • Windows Server 2008

 

[확장성]

멀티프로세서 시스템과 관련된 핵심 사항 중 하나는 확장성이다. 리소스 경쟁과 다른 성능 이슈는 단일 프로세서 시스템보다 멀티프로세싱 시스템에서 더 복잡하다. 윈도우는 멀티프로세서 운영체제로 다음 몇 가지 특징이 있다.

  • 운영체제 코드를 임의의 가능한 프로세서에서 실행할 수 있는 능력과 동시에 멀티프로세서에서 운영체제 코드를 실행할 수 있는 능력
  • 단일 프로세서 내에서 다중 스레드를 실행하고 각 스레드는 서로 다른 프로세서에 동시에 실행 될 수 있다.
  • 디바이스 드라이버, 서버 프로세스 내의 것과 마찬가지로 커널 내의 고품질 동기화(스핀락과 큐드)는 멀티프로세서에서 동시에 실행되도록 좀 더 많은 컴포넌트를 허용한다.
  • I/O 완료 포트와 같은 프로그래밍 메커니즘으로 멀티 프로세서 시스템에서 확장이 좋은 멀티스레드 서버 프로세스의 효율적인 구현을 용이하게 한다.

 

윈도우 커널은 계속 발전하여 Windows Server 2003은 멀피트로세서상에서 병렬로 스레드 스케줄링으 결정하는 CPU별 스케줄링 큐를 갖고 있다.

 

 

[클라이언트와 서버 버전의 차이]

윈도우 운영체제의 클라이언트와 서버 패키지가 여러 종류이긴 하지만 커널 이미지 Ntoskrnl.exe(PAE 버전, Ntkrnlpa.exe), HAL 라이브러리, 디바이스 드라이버, 기본 시스템 유틸리티와 DLL을 포함한 핵심 시스템 파일의 공통집합은 함께 공유한다.

 

여러 버전의 윈도우가 있지만 이들은(Vista SP1, Server 2008 이상) 모두 같은 커널 이미지를 가지고 있다. 시스템이 어떤 에디션으로 부팅되었는지는 레지스트리의 ProductType과 ProductSuite값을 질의해 봄으로써 구분한다.

 

Windows Server 2008R2

 

윈도우 에디션 ProductType 값
윈도우 비스타 WinNT
윈도우 서버 2008 (도메인 컨트롤러) LanmanNT
윈도우 서버 2008 (서버에만 해당) ServerNT

 

결과는 윈도우 드라이버 킷에 문서화돼 있는 커널 모드 함수 MmIsThisAnNtAsSystem을 사용해 디바이스 드라이버로부터 질의될 수 있는 시스템 글로벌 변수 MmProductionType에 저장된다.

 

다른 레지스트리 값 ProductPolicy는 윈도우 에디션과 가능한 기능을 구분할 수 있는 tokens.dat 파일 내부 데이터의 캐시된 사본을 갖고 있다.

 

서버 시스템은 기본적으로 고성능 애플리케이션 서버로서 시스템 작업 처리량에 최적화돼 있다. 반면에 클라이언트 버전은 서버의 능력을 갖고 있다고 하더라도 대화식 데스크톱 사용에 대한 반응 시간에 최적화돼 있다.

 

윈도우는 소프트웨어 라이선스 메커니즘을 통해 활성화 될 수 있다. 정책 설정은 적용할 소유자 모듈을 나타내는 기능에 의해 구성 된다.

 

 

[체크드 빌드 (checked build)]

체크드 빌드 라고 하는 특별한 디버그 버전의 윈도우가 있다. ‘DBG’라고 하는 정의된 컴파일 타임 플래그로 윈도우 소스 코드를 다시 컴파일한 것이다.(컴파일 타임 조건부 디버깅과 트레이싱 코드가 추가된다.) 또한 머신 코드가 이해하기 쉽게 아주 빠른 실행을 위해 코드 레이아웃을 최적화하기 위한 윈도우 바이너리의 포스트 프로세싱이 수행되지 않는다.

 

체크드 빌드는 주로 디바이스 드라이버 개발자를 돕기 위해 제공된다. 디바이스 드라이버나 다른 시스템 코드에 의해 호출되는 커널모드 함수에 대해 좀더 엄격한 오류 검증을 수행하기 때문이다.

 

체크드 빌드 바리언리 내에 추가된 많은 코드는 WDK 헤더 파일 Ntddk.h에 정의돼 있고, WDK에 문서화된 ASSERT 매크로에 의한 것이다. 이 매크로는 조건을 테스트 한다.

 

체크드 빌드는 특정 컴포넌트를 활성화할 수 있는 추가적인 상세 정보 트레이싱을 제공하기 때문에 시스템 관리자에게도 유용하다. 운영체제의 디버그 버전이 주는 장점을 얻기 위해 체크드 빌드 버전 전체를 설치할 필요는 없다. 정상 리테일 버전을 설치한 곳에 커널 이미지(Ntoskrnl.exe)의 체크드 버전과 적절한 HAL(Hal.dll)을 복하기만 해도 된다.

 

 

 

[참고자료]

Windows Internals

 

2013-08-14 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

OS, Windows, 윈도우아키텍처, Windows internals, OS아키텍처, 윈도우서버, WindowsServer, 윈도우커널, 체크드빌드, sqlmvp, SQL Angeles

Leave a Reply

%d bloggers like this: