전체 글 1383

소프트웨어 인터럽트

소프트웨어 인터럽트 Windows Server 2008 하드웨어에서 대부분의 인터럽트가 발생하지만 윈도우 커널 또한 다양한 작업들로 인해서 소프트웨어 인터럽트를 발생 시킨다. 스레드 디스패칭 시작 시간에 민감하지 않은 인터럽트 처리 타이머 만료 처리 특정 스레드 컨텍스트에서 프로시저의 비동기 실행 비동기 I/O 수행의 지원 [디스패치나 지연된 프로시저 호출 인터럽트] 스레드가 종료되었거나 자발적으로 대기 상태로 진입해 스레드가 더 이상 실행 할 수 없을 때 커널은 즉각적인 컨텍스트 스위치를 단행하기 위해 디스패처를 호출 한다. 하지만 커널이 이런 재스케줄링 작업을 수행하기에는 현재 실행 코드의 여건이 맞지 않는 경우가 종종 있다. 이런 상황의 경우 커널은 디스패칭을 요구하지만 실제 작업은 현재 동작이 완..

Windows , IIS 2015.07.16

소프트웨어 인터럽트 요청 레벨(IRQL)

소프트웨어 인터럽트 요청 레벨(IRQL) Windows Server 2008 인터럽트 컨트롤러는 인터럽트 우선순위 레벨로 동작하긴 하지만 윈도우 역시 인터럽트 요청 레벨(Interrupt Request Level)로 불리는 자신만의 인터럽트 순위 방식을 사용한다. 커널은 내부적으로 IRQL을 x86(0 ~31의 값), x64, IA64(0~15값)를 가지고 있다. 커널이 소프트웨어 인터럽트에 대한 표준 IRQL 값을 정의하더라도 HAL은 하드웨어 인터럽트 값을 IRQL에 매핑한다. 인터럽트는 우선순위에 따라 서비스 된다. 좀더 높은 우선순위의 인터럽트가 서비스 중인 낮은 우선순위의 인터럽트를 선점한다. 높은 우선순위의 인터럽트가 발생할 때 프로세서는 인터럽트된 스레드의 상태를 저장하고 발생된 인터럽트와 ..

Windows , IIS 2015.07.16

x86 x64 IA64 인터럽트 컨트롤러

x86 x64 IA64 인터럽트 컨트롤러 Windows Server 2008 [x86 인터럽트 컨트롤러] 대부분의 x86 시스템은 i8259A Pic(Programmable Interrupt Controller)나 i82489 APIC(Advanced Programmable Interrupt Controller)의 변형 중 하나를 사용한다. 인텔과 그 밖의 여러 회사는 APIC를 주로 사용하는 x86 멀티프로세서 시스템을 위한 설계 표준인 멀티프로세서 규약을 정의 했다. 유니프로세서 운영체제와의 호환성과, 유니프로세서 모드에서 멀티프로세서 시스템을 시작하는 부트 코드와의 호환성을 지원하기 위해 APIC는 PIC 호환성 모드를 지원한다. PIC 호환성 모드는 15개의 인터럽트를 가지며 주 프로세서에만 인터..

Windows , IIS 2015.07.16

트랩 디스패칭과 인터럽트 디스패칭 그리고 하드웨어 인터럽트 처리

트랩 디스패칭과 인터럽트 디스패칭 그리고 하드웨어 인터럽트 처리 Windows Server 2008 [트랩 디스패칭] 인터럽트와 예외는 프로세서가 정상적인 제어 흐름을 벗어난 코드를 실행하게끔 하는 운영체제의 상태이다. 트랩이라는 용어는 예외나 인터럽트가 발생할 때 현재 실행 스레드를 캡처해 운영체제 내의 정해진 위치로 제어를 이행하는 프로세서 메커니즘을 말한다. 윈도우에서 프로세서는 특정 인터럽트나 예외를 처리하는 함수인 트랩 핸들러로 제어를 이행 한다. 커널에서 인터럽트는 프로세서가 실행중인 것과는 무관한 비동기 이벤트(어느 때나 발생 할 수 있는 것)이다. 주로 I/O 디바이스나 프로세서 클록이나 타이머에 의해 인터럽트가 발생되며 인터럽트는 활성화 되거나 비활성화 될 수 있다. 예외는 특정 명령의 ..

Windows , IIS 2015.07.16

시스템 프로세스

시스템 프로세스 Windows Server 2008 윈도우에는 여러 가지 시스템 프로세스들이 존재하며 다음 프로세스는 모든 윈도우 시스템에 존재 한다. 유휴 프로세스 (유휴 CPU 시간을 계산하기 위해 CPU당 하나의 스레드를 보유) 시스템 프로세스(대부분의 커널모드 시스템 스레드를 담고 있다.) 세션 관리자(Smss.exe) 로컬 세션 관리자(Lsm.exe) 윈도우 서브 시스템(Csrss.exe) 세션 0 초기화 (Wininit.exe) 로그온 프로세스(Winlogon.exe) 서비스 컨트롤 관리자(Services.exe)와 생성한 자식 서비스 프로세스(시스템이 제공하는 일반 서비스 호스트 프로세스.Svchost.exe와 같은 것.) 로컬 보안 인증(Lsass.exe) 각 프로세스들이 어떤 작업을 하는..

Windows , IIS 2015.07.16

디바이스 드라이버

디바이스 드라이버 Windows Server 2008 디바이스 드라이버는 로드 가능한 커널모드 모듈로 I/O 관리자와 관련 하드웨어 사이를 인터페이스로 연결한다. 디바이스 드라이버는 다음 컨텍스트 중 하나로 커널모드에서 동작한다. I/O 함수를 호출한 유저 스레드 컨텍스트 커널모드 시스템 스레드 컨텍스트 인터럽트의 결과 디바이스 드라이버는 하드웨어를 직접 조작하지 않고 하드웨어 인터페이스에 접속하기 위한 HAL 내의 함수를 호출 한다. 디바이스 드라이버는 다음과 같은 유형이 있다. 하드웨어 디바이스 드라이버 : 물리적 디바이스나 네트워크로부터 입력을 읽어 들이거나 출력을 쓰기 위해 하드웨어를 조작(HAL 사용)한다. 파일 시스템 드라이버 : 파일 지향 I/O 요청을 받아들이고 특정 장치로 I/O 요청을 ..

Windows , IIS 2015.07.16

하드웨어 추상화 계층(HAL)

하드웨어 추상화 계층(HAL) Windows Server 2008 윈도우 설계의 중요한 요소 중 하나는 다양한 하드웨어 플랫폼간의 이식성이다. 하드웨어 추상화 계층(HAL)은 윈도우가 실행 중인 하드웨어 플랫폼에 대한 저수준 인터페이스를 제공하는 로드 가능한 커널 모드 모듈(Hal.dll)이다. 윈도우 내부 컴포넌트는 플랫폼 의존적인 정보가 필요할 때 하드웨어를 직접 액세스하는 것보다 사용자가 작성한 드라이버와 마찬가지로 HAL 루틴을 호출함으로써 이식성을 유지한다. HAL 루틴은 WDK에 문서화 되어 있으며 자세한 내용은 WDK를 참고 한다. 윈도우 비스타, 서버2008은 부트업 타임에 어떤 HAL을 사용해야 하는지를 탐지할 수 있으며 이전에 존재하던 문제(이전 버전에서 설치된 윈도우가 다른 시스템에서..

Windows , IIS 2015.07.16

커널

커널 Windows Server 2008 커널은 프로세서 아키텍처별로 다른 저 수준 하드웨어 아키텍처 의존적 지원과 함께 익스큐티브 컴포넌트에 의해 사용되는 기본 메커니즘을 제공하는 Ntoskrnl.exe 내의 함수 집합으로 구성된다. 커널 코드는 주로 C로 작성되었다. [커널 객체] 커널은 익스큐티브의 고수준 컴포넌트가 필요로 하는 것을 수행 할 수 있게 잘 정의된 예측 가능한 운영체제 프리미티브와 메커니즘의 저수준 기반을 제공한다. 커널은 운영체제 메커니즘을 구현하고 정책을 만드는 것을 배제함으로써 익스큐티브의 나머지 부분으로부터 커널 자체를 분리한다. 커널이 구현한 스레드 스케줄링과 디스패칭을 제외한 거의 모든 정책 결정을 익스큐티브에 있다. 커널 밖에서 익스큐티브는 스레드와 다른 공유 가능한 리소..

Windows , IIS 2015.07.16

Ntdll.dll, 익스큐티브

Ntdll.dll, 익스큐티브 Windows Server 2008 Ntdll.dll은 주로 서브시스템을 위한 특별한 시스템 지원 라이브러리다. 이는 다음 두 종류의 함수를 갖고 있다. 윈도우 익스큐티브 시스템 서비스에 대한 시스템 서비스 디스패치 스텁 서브시스템, 서브시스템 DLL, 다른 네이티브 이미지에 의해 사용되는 내부 지원 함수 첫 번째 그룹 함수는 유저모드에서 호출 할 수 있는 윈도우 익스큐티브 시스템 서비스 인터페이스 이다. 이들 함수의 기능은 윈도우 API로 접근할 수 있다. 각 함수들에 대해 Ntdll은 같은 이름의 엔트리 포인트를 갖고 있다. 함수 안의 코드는 시스템 서비스 디스패처를 호출하기 위해 커널모드로의 진입을 일으키는 아키텍처의 한정적인 인스트럭션을 갖고 있다. 시스템 서비스 디..

Windows , IIS 2015.07.16

POSIX 서브시스템

POSIX 서브시스템 Windows Server 2008 POSIX는 Portable Operating System Interface based on UNIX 의 약어로 유닉스 스타일 운영체제 인터페이스용 국제 표준 모음이다. 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 구격이다. 윈도우 초기에 많은 POSIX.1 만을 구현하였으며 이것은 U.S 정부의 조달 요구 사항을 맞추기 위해 포함되었다. Windows NT 3.5와 3.41, 4 는 FIPS 151-2에 따라 공식적으로 테스트되고 인증 받았다. POSIX.1 규약은 윈도우의 필수 목표였기 때문에 운영체제는 기본 시스템 지원이 POSIX.1 서..

Windows , IIS 2015.07.16