전체 글 1383

객체구조 – 객체 메소드

객체구조 – 객체 메소드 Windows Server 2008 객체 유형이 사용되는 방법에 따라 어떤 객체 유형은 메소드를 명시하는 반면 메소드를 명시하지 않는 객체 유형도 있다. 익스큐티브 구성 요소가 새로운 객체 유형을 생성할 때 하나 이상의 메소드를 객체 관리자에 등록할 수 있다. 이후부터 객체 관리자는 메소드가 등록된 유형의 객체 수명 동안에 잘 정의된 시점(일반적으로 객체가 생성될 때나 어떤 식으로든지 변경될 때)에 메소드를 호출 한다. 다음 표는 객체 메소드와 호출 시점에 대한 내용이다. 메소드메소드가 호출되는 시점Open객체 핸들이 오픈 될 때Close객체 핸들이 닫힐 때Delete객체 관리자가 객체를 삭제하기 전Query Name스레드가 보조(secondary)객체 이름 공간에 존재하는 객체..

Windows , IIS 2015.07.16

객체구조 – 형식 객체

객체구조 – 형식 객체 Windows Server 2008 객체 헤더는 모든 객체에 공통적인 데이터를 포함하지만 객체 각 인스턴스마다 다른 값을 가질 수 있다. 예를 들어 각 객체는 고유한 이름을 가지며 고유한 보안 디스크립터를 가질 수 있다. 하지만 객체는 특정 유형의 모든 객체에 대해서는 항상 변하지 않는 값을 가지기도 한다. 어떤 유형의 객체 핸들을 오픈 할 때 접근 권한 집합에서 이 객체 유형에 고유한 권한을 선택할 수 있다. 익스큐티브는 스레드 객체의 경우 여러 접근 권한 중에 종료와 서스펜드 접근 권한을 제공하고 파일 객체의 경우에는 읽기와 쓰기, 추가, 삭제 접근 권한을 제공한다. 객체 관리자는 메모리 절약을 위해 이들 정적이며 객체 유형 특정적인 속성을 새로운 객체 유형을 생성할 때 한번만..

Windows , IIS 2015.07.16

객체구조 – 객체 헤더와 본체

객체구조 – 객체 헤더와 본체 Windows Server 2008 객체는 객체 헤더와 객체 본체를 가진다. 객체 관리자는 객체 헤더를 제어하고 객체를 소유하는 익스큐티브 구성요소는 자신들이 생성하는 객체 유형의 객체 본체를 제어한다. 각 객체 헤더는 객체의 각 인스턴스에 공통적인 정보를 포함하는 형식객체로 불리는 특별한 객체를 가리킨다. 그리고 옵션으로 4개까지의 서브헤더(이름 정보 헤더, 쿼터 정보 헤더, 핸들정보 헤더, 생성자 정보헤더)가 존재 한다. 객체 관리자는 객체의 유형에 관계 없이 객체를 관리하기 위해 객체 헤더에 저장된 데이터를 사용한다. 다음 표는 객체 헤더 필드 이다. 필드목적핸들 카운트객체에 대한 현재 오픈 되어 있는 핸들의 수를 관리한다.포인터 카운트각 핸들에 대해 하나의 참조를 포..

Windows , IIS 2015.07.16

익스큐티브 객체

익스큐티브 객체 Windows Server 2008 익스큐티브 객체는 일반적으로 사용자 애플리케이션을 위해 환경 서브시스템에 의해 생성되거나 다양한 운영체제 구성 요소의 통상적인 동작으로 인해 생성 된다. 예를 들어 파일을 생성하기 위해 윈도우 애플리케이션은 윈도우 서브시스템 DLL인 Kernel32.dll 에 구현된 윈도우 CreateFile 함수를 호출한다. CreateFile은 일부 유효성 검사와 초기화 이후에 익스큐티브 파일 객체를 생성하기 위해 네이티브 윈도우 서비스 NtCraeteFile을 호출 한다. 윈도우 서브시스템은 자신의 객체 집합(이 중의 많은 객체가 익스큐티브 객체와 직접적으로 대응된다.)을 익스포트 하기 위해 익스큐티브 객체를 사용한다. 예를 들어 윈도우 뮤텍스와 세마포어는 익스큐..

Windows , IIS 2015.07.16

커널모드 시스템 디스패칭과 서비스 디스크립터 테이블

커널모드 시스템 디스패칭과 서비스 디스크립터 테이블 Windows Server 2008 [커널모드 시스템 디스패칭] 커널은 시스템 서비스 디스패치 테이블에서 시스템 서비스 정보를 찾기 위해 시스템 호출 번호를 사용한다. 이 테이블은 각 엔트리가 인터럽트 처리 루틴이 아닌 시스템 서비스에 대한 포인터를 갖고 있다는 점만 제외하면 인터럽트 디스패치 테이블과 유사하다. 시스템 서비스 디스패처인 KiSystemService는 스레드의 유저모드 스택에 있는 호출자의 인자를 스레드의 커널 스택에 복사하고 시스템 서비스를 실행 한다. 이전 모드는 커널이 트랩 핸들러를 실행할 때마다 스레드에 저장하는 값이며 발생할 예외나 트랩 시스템 호출에 대한 특권 레벨을 식별한다. 커널모드 코드는 시스템 호출이 가능하고 CPU는 ..

Windows , IIS 2015.07.16

32비트, 64비트 시스템 서비스 디스패칭

32비트, 64비트 시스템 서비스 디스패칭 Windows Server 2008 [32비트 시스템 서비스 디스패칭] 펜티엄2 이전의 x86 프로세서에서 윈도우는 트랩을 유발하는 int 0x2e(10진수 46)명령을 사용했다. 윈도우 IDT 엔트리 46을 시스템 서비스 디스패처를 가리키게 설정한다. X86 펜티엄2 프로세서나 상위 버전의 경우 윈도우는 sysenter 명령을 사용한다. 이 명령은 빠른 시스템 서비스 디스패처를 위해 인텔이 특별히 정의한 명령이다. 이 명령을 지원하기 위해 윈도우는 부팅 시점에 커널의 시스템 서비스 디스패처 루틴 주소를 이 명령과 연관된 머신 특정적인 레스터(MSR)에 저장한다. 이 명령을 실행하면 커널모드로 변경되어 시스템 서비스 디스패처가 실행 된다. 시스템 서비스 번호는 ..

Windows , IIS 2015.07.16

윈도우 오류 보고

윈도우 오류 보고 Windows Server 2008 윈도우 오류 보고 (Windows Error Reporting)는 유저모드 프로세스 크래시와 커널모드 시스템 크래시 모두를 자동으로 전송한다. 윈도우 오류 보고는 제어판에서 [문제 보고서 및 해결 방법 – 설정 변경]에서 또는 [시작-실행]에서 Wercon.exe 명령으로 구성 할 수 있다. Windows Error Reporting Service 서비스가 실행 중이어야 한다. 디폴트로 구성된 시스템에서는 오류 보고서(미니덤프와 프로세스 내에 로드된 DLL 버전 번호 같은 여러 세부 정보를 가진 XML 파일)가 마이크로소프트 온라인 크래시 분석 서버로 전송 된다. WER 서비스는 문제에 대한 해결책을 통지 받으면 사용자에게 문제 해결을 위해 취해야 할..

Windows , IIS 2015.07.16

처리되지 않은 예외

처리되지 않은 예외 Windows Server 2008 모든 윈도우 스레드는 처리되지 않은 예외를 처리하는 예외 핸들러를 가진다. 이 예외 핸들러는 윈도우 내부에 start-of-thread 함수로 선언되어 있다. Start-of-thread 함수는 사용자가 프로세스를 생성하거나 추가적인 스레드를 생성할 때 실행한다. 이 함수는 최초의 스레드 컨텍스트 구조체에 명시된 환경 제공 스레드 시작 루틴을 호출 한다. 스레드 시작 루틴은 CreateThread 호출 시에 명시된 사용자 제공 시작 루틴을 호출 한다. 스레드 0의 시작 주소가 시스템 내의 모든 윈도우 프로세스에서 동일한지에 대해서는 윈도우의 각 스레드가 시스템 제공 함수 내에서 실행을 시작한다는 것으로 알 수 있다. (사용자 제공 함수의 주소를 살펴..

Windows , IIS 2015.07.16

예외 디스패칭

예외 디스패칭 Windows Server 2008 아무 때나 발생 할 수 있는 인터럽트와는 대조적으로 예외는 실행 중인 프로그램의 직접적인 실행 결과(runtime error)로 발생하는 상황이다. 윈도우는 예외가 발생할 때 애플리케이션이 제어를 받을 수 있는 구조적 예외 처리(structured exception handling) 기능을 사용한다. 애플리케이션은 제어를 받으면 예외 상황을 수정하여 예외가 발생했던 위치로 되돌아 갈 수 있고 스택을 언와인드(unwind) 시키거나 예외를 처리 할 예외 핸들러를 찾을 수 있도록 제어를 시스템으로 되돌아가 가게 할 수 있다. x86과 x64 프로세서의 경우 모든 예외는 특정 예외에 대한 트랩 핸들러를 가리키는 IDT 내의 엔트리에 직접적으로 대응하는 이미 정..

Windows , IIS 2015.07.16

비동기 프로시저 호출 인터럽트

비동기 프로시저 호출 인터럽트 Windows Server 2008 비동기 프로시저 호출 (Asynchronous Procedure Calls, APC)은 유저 프로그램과 시스템 코드로 하여금 특정 유저 스레드 컨텍스트에서 실행할 수 있는 방법을 제공한다. APC는 특정 스레드의 컨텍스트에서 실행되게 큐잉되어 DPC/디스패치 레벨보다 낮은 레벨의 IRQL에서 실행 된다. APC는 APC 객체로 불리는 커널 제어 객체에 의해 기술 된다. 실행되기를 기다리는 APC는 커널에 의해 관리되는 APC큐에 보관된다. 시스템 전역적인 DPC 큐와는 달리 APC 큐는 스레드 전용이다. APC에는 커널모드와 유저모드의 두 종류가 있다. 커널모드 APC는 대상 스레드로부터의 승인을 필요로 하지 않는다. 반면에 유저모드 AP..

Windows , IIS 2015.07.16