윈도 NT의 아키텍처

Architecture of Windows NT
Windows NT 운영 체제 계열의 아키텍처는 두 계층(사용자 모드와 커널 모드)으로 구성되며, 두 계층 모두에 많은 다른 모듈이 있습니다.

마이크로소프트에서 생산하고 판매하는 운영 체제 계열윈도우 NT의 아키텍처사용자 모드와 커널 모드의 두 가지 주요 구성 요소로 구성된 계층화된 설계입니다. 운영 체제는 선제적이고 재진입적인 멀티태스킹 운영 체제로, 단일 프로세서 및 SMP(Symmetric Multiprocessor) 기반 컴퓨터와 함께 작동하도록 설계되었습니다.입출력(I/O) 요청을 처리하기 위해 I/O 요청 패킷(IRP)과 비동기 I/O활용하는 패킷 기반 I/O를 사용합니다.Windows XP를 시작으로 Microsoft는 64비트 버전의 Windows를 사용할 수 있게 되었습니다. 이전에는 32비트 버전의 운영 체제만 있었습니다.

사용자 모드의 프로그램과 하위 시스템은 어떤 시스템 리소스에 액세스할 수 있는지에 따라 제한되는 반면 커널 모드는 시스템 메모리와 외부 장치에 무제한으로 액세스할 수 있습니다.Windows NT의 커널 모드는 컴퓨터의 하드웨어 및 시스템 리소스에 대한 전체 액세스 권한을 가집니다.Windows NT 커널은 하이브리드 커널입니다. 아키텍처는 단순 커널, 하드웨어 추상화 계층(HAL), 드라이버 및 커널 [1]모드에 존재하는 다양한 서비스(통칭 Executive)로 구성됩니다.

Windows NT의 사용자 모드는 I/O 관리자를 사용하여 적절한 커널 모드 장치 드라이버에 I/O 요청을 전달할 수 있는 하위 시스템으로 구성됩니다.Windows NT의 사용자 모드 계층은 다양한 유형의 운영 체제용으로 작성된 응용 프로그램을 실행하는 "환경 하위 시스템"과 환경 하위 시스템을 대신하여 시스템별 기능을 작동하는 "통합 하위 시스템"으로 구성됩니다.커널 모드는 사용자 모드 서비스와 애플리케이션이 액세스해서는 안 되는 운영 체제의 중요한 영역에 액세스하지 못하도록 합니다.

모든 사용자 모드 하위 시스템이 포함된 Executive 인터페이스는 I/O, 객체 관리, 보안 및 프로세스 관리를 처리합니다.커널은 하드웨어 추상화 계층과 Executive 사이에 위치하여 멀티프로세서 동기화, 스레드 및 인터럽트 스케줄링 및 디스패치, 트랩 처리 및 예외 디스패치를 제공합니다.커널은 부팅 시 장치 드라이버를 초기화하는 역할도 합니다.커널 모드 드라이버는 최상위 드라이버, 중간 드라이버 및 하위 드라이버의 세 가지 수준으로 존재합니다.Windows 드라이버 모델(WDM)은 중간 계층에 존재하며 주로 Windows 98과 Windows 2000 에 이진 및 소스 호환성이 있도록 설계되었습니다.가장 낮은 수준의 드라이버는 장치를 직접 제어하는 기존 Windows NT 장치 드라이버이거나 PnP(플러그플레이) 하드웨어 버스일 수 있습니다.

사용자 모드

사용자 모드는 다양한 시스템 정의 프로세스와 DLL로 구성됩니다.

사용자 모드 응용 프로그램과 운영 체제 커널 기능 간의 인터페이스를 "환경 하위 시스템"이라고 합니다.Windows NT에는 각각 다른 API 집합을 구현하는 둘 이상의 API가 있을 수 있습니다.이 메커니즘은 다양한 유형의 운영 체제용으로 작성된 애플리케이션을 지원하도록 설계되었습니다.하드웨어에 직접 액세스할 수 있는 환경 하위 시스템은 없습니다. 하드웨어 기능에 액세스하려면 커널 [citation needed]모드 루틴을 호출해야 합니다.

Win32 하위 시스템, OS/2 하위 시스템 및 POSIX [2]하위 시스템의 세 가지 주요 환경 하위 시스템이 있습니다.

Win32 환경 하위 시스템

지휘.NTVDM에서 실행 인 COM

Win32 환경 하위 시스템은 32비트 윈도우즈 응용 프로그램을 실행할 수 있습니다.콘솔뿐 아니라 다른 모든 환경 하위 시스템에 대한 텍스트 창 지원, 종료 및 하드 오류 처리도 포함되어 있습니다.또한 MS-DOS16비트 윈도우즈(Win16) 응용 프로그램을 윈도우즈 NT에서 실행할 수 있는 VDM(Virtual DOS Machine)도 지원합니다.고유한 주소 공간에서 실행되는 특정 MS-DOS VDM이 있으며 MS-DOS 5.0을 실행하는 Intel 80486을 에뮬레이트합니다. 그러나 Win16 프로그램은 Win16 VDM에서 실행됩니다. 기본적으로 각 프로그램은 동일한 주소 공간을 사용하므로 Win16 VDM은 각 프로그램에 실행할 자체 스레드를 제공합니다.그러나 Windows NT는 사용자가 별도의 Win16 VDM에서 Win16 프로그램을 실행할 수 있도록 허용하므로 Windows NT는 실행 중인 응용 프로그램 하나만 포함하는 전체 VDM 프로세스를 선점하여 프로그램을 사전에 멀티태스킹할 수 있습니다.Win32 환경 하위 시스템 프로세스(css.exe)에는 "윈도우 관리자"라고도 하는 윈도우 관리 기능도 포함되어 있습니다.키보드 및 마우스 등의 입력 이벤트를 처리한 다음 이 입력을 수신해야 하는 응용 프로그램에 메시지를 전달합니다.각 응용프로그램은 이러한 메시지에 응답하여 자신의 창과 메뉴를 그리거나 새로 고칩니다.

OS/2 환경 서브시스템

OS/2 환경 하위 시스템은 16비트 문자 기반 OS/2 애플리케이션을 지원하고 OS/2 1.x를 에뮬레이트하지만 x86 시스템에서만 [3]OS/2 2.x 이상과 함께 사용되는 32비트 또는 그래픽 OS/2 애플리케이션은 지원하지 않습니다.그래픽 OS/2 1.x 프로그램을 실행하려면 Windows NT Presentation Manager 추가 기능 하위 시스템이 [3]설치되어 있어야 합니다.OS/2 하위 시스템이 설치된 마지막 Windows NT 버전은 Windows 2000이며, Windows [4][5]XP에서 중단되었습니다.

POSIX 환경 하위 시스템

POSIX 환경 하위 시스템은 POSIX.1 표준 또는 관련 ISO/IEC 표준에 엄격하게 작성된 응용 프로그램을 지원합니다.이 하위 시스템은 [4]UNIX용 윈도우즈 서비스의 일부인 Interix로 대체되었습니다.이 버전은 리눅스용 윈도우즈 서브시스템으로 대체되었습니다.

보안 하위 시스템

보안 하위 시스템은 보안 토큰을 처리하고, 리소스 사용 권한에 따라 사용자 계정에 대한 액세스를 허용 또는 거부하며, 로그인 요청을 처리하고, 로그인 인증을 시작하고, Windows [citation needed]NT에서 감사해야 하는 시스템 리소스를 결정합니다.또한 [citation needed]Active Directory를 관리합니다.워크스테이션 서비스는 Windows 파일 및 인쇄 공유의 클라이언트 측인 네트워크 리디렉션자를 구현합니다. 원격 파일 및 프린터를 네트워크의 적절한 서버로 "[6]재연결"하여 로컬 요청을 구현합니다.반대로 서버 서비스를 사용하면 네트워크의 다른 컴퓨터에서 [7]로컬 시스템에서 제공하는 파일 공유 및 공유 프린터에 액세스할 수 있습니다.

커널 모드

Windows NT 커널 모드는 컴퓨터의 하드웨어 및 시스템 리소스에 대한 전체 액세스 권한을 가지며 보호된 메모리 [8]영역에서 코드를 실행합니다.스케줄링, 스레드 우선 순위 지정, 메모리 관리 및 하드웨어와의 상호 작용에 대한 액세스를 제어합니다.커널 모드는 사용자 모드 서비스와 응용 프로그램이 액세스해서는 안 되는 운영 체제의 중요한 영역에 액세스하지 못하도록 합니다. 사용자 모드 프로세스는 커널 모드에 이러한 작업을 대신 수행하도록 요청해야 합니다.

x86 아키텍처는 4개의 서로 다른 권한 수준(0~3번)을 지원하지만 두 개의 극단적인 권한 수준만 사용됩니다.사용자 모드 프로그램은 CPL 3으로 실행되고 커널은 CPL 0으로 실행됩니다.이 두 수준을 각각 "링 3" 및 "링 0"이라고 합니다.이러한 설계 결정은 두 가지 권한 [9]수준만 지원하는 RISC 플랫폼에 대한 코드 이식성을 달성하기 위해 이루어졌지만,[3] 이는 하드웨어에 직접 액세스하려는 I/O 권한 세그먼트를 포함하는 OS/2 애플리케이션과의 호환성을 깨뜨립니다.

커널 모드에서 실행되는 코드에는 다음이 포함됩니다. 이는 특정 작업을 수행하는 많은 모듈로 구성되어 있습니다. 실행자가 사용하는 낮은 수준의 서비스를 제공하는 커널, 하드웨어 추상화 계층(HAL) 및 커널 드라이버.[8][10]

경영진

윈도우즈 Executive 서비스는 하위 수준 커널 모드 부분을 구성하며 NTOSKRNL.[8]EXE 파일에 포함되어 있습니다.I/O, 객체 관리, 보안 및 프로세스 관리를 다룹니다.이들은 Cache Manager, Configuration Manager, I/O Manager, LPC(Local Procedure Call), Memory Manager, Object Manager, Process Structure 및 Security Reference Monitor(SRM)같은 여러 하위 시스템으로 나뉩니다. 이러한 구성 요소를 함께 분류하면 Executive Services(내부 이름 Ex)라고 할 수 있습니다.시스템 서비스(내부 이름 Nt), 즉 시스템 호출도 이 수준에서 구현됩니다. 단,[citation needed] 더 나은 성능을 위해 커널 계층으로 직접 호출하는 경우는 거의 없습니다.

이 맥락에서 "서비스"라는 용어는 일반적으로 호출 가능한 루틴 또는 호출 가능한 루틴 집합을 나타냅니다.이것은 유닉스 계열 운영 체제의 데몬과 다소 유사한 사용자 모드 구성 요소인 "서비스 프로세스"의 개념과는 다릅니다.

Windows NT의 각 개체는 글로벌 네임스페이스에 있습니다.이것은 Sysinternals WinObj스크린샷입니다.
개체 관리자
Object Manager(내부 이름: Ob)는 다른 모든 실행 하위 시스템, 특히 시스템 호출이 Windows NT 리소스에 액세스하기 위해 통과해야 하는 실행 하위 시스템으로, 기본적으로 리소스 관리 인프라 [11]서비스입니다.개체 관리자는 다른 실행 하위 시스템에서 개체 리소스 관리 기능의 중복을 줄이기 위해 사용되며, 이로 인해 잠재적으로 버그가 발생하고 Windows NT의 개발이 [12]어려워질 수 있습니다.개체 관리자에게 각 리소스는 해당 리소스가 물리적 리소스(예: 파일 시스템 또는 주변 장치)인지 논리적 리소스(예: 파일)인지에 관계없이 개체입니다.각 개체에는 개체 관리자가 알아야 하는 구조 또는 개체 유형이 있습니다.
개체 생성은 생성삽입의 두 단계로 구성된 프로세스입니다.생성 시 빈 개체가 할당되고 네임스페이스의 (선택 사항) 이름과 같이 개체 관리자가 필요로 하는 모든 리소스가 예약됩니다.생성에 성공하면 생성을 담당하는 하위 시스템이 빈 [13]개체를 채웁니다.마지막으로, 초기화가 성공적이라고 판단되는 하위 시스템은 객체 관리자에게 객체를 삽입하도록 지시합니다. 그러면 객체 관리자는 (선택 [14]사항) 이름 또는 핸들이라는 쿠키를 통해 객체에 액세스할 수 있습니다.이때부터 객체의 수명은 객체 관리자에 의해 처리되며 객체 관리자가 객체를 [15]폐기하라는 신호를 받을 때까지 객체를 작동 상태로 유지하는 것은 서브시스템에 달려 있습니다.
핸들은 불투명 [16]값을 통해 커널 리소스에 대한 참조를 나타내는 식별자입니다.마찬가지로 이름을 통해 개체를 여는 경우 보안 검사를 받아야 하지만 기존의 열린 핸들을 통해 작업하는 경우 개체를 열거나 [citation needed]만들 때 요청된 액세스 수준으로만 제한됩니다.
개체 유형은 개체 프로시저 및 개체와 관련된 모든 데이터를 정의합니다.이러한 방식으로 객체 관리자는 객체 유형을 객체를 정의하는 다형성 클래스로 생각할 수 있으므로 Windows NT를 객체 지향 운영 체제로 만들 수 있습니다.그러나 I/O 관리자에서 눈에 띄는 예외를 제외하고 대부분의 하위 시스템은 모든 개체 유형 [citation needed]프로시저에 대해 기본 구현에 의존합니다.
생성되는 개체의 각 인스턴스에는 이름, 개체 생성 함수에 전달되는 매개 변수, 보안 특성 및 개체 유형에 대한 포인터가 저장됩니다.또한 개체에는 개체 닫기 절차와 참조 카운트가 포함되어 있어 시스템의 다른 개체가 해당 개체를 참조하는 수를 개체 관리자에게 알려주고,[17] 이에 따라 개체에 닫기 요청을 보낼 때 개체를 삭제할 수 있는지 여부를 결정합니다.명명된 모든 개체는 계층형 개체 네임스페이스에 있습니다.
캐시 컨트롤러
메모리 관리자, I/O 관리자 및 I/O 드라이버와 긴밀하게 협력하여 일반 파일 I/O를 위한 공통 캐시를 제공합니다.윈도우즈 Cache Manager는 로컬 파일과 원격 파일 간의 일관된 작업을 위해 장치 블록이 아닌 파일 블록에서 작동하며, 캐시 블록은 메모리 매핑 보기의 특수한 경우이고 캐시는 페이지 오류의 특수한 경우를 놓치기 때문에 파일의 메모리 매핑 보기와 일정 수준의 일관성을 보장합니다.
구성 관리자
Windows 레지스트리에 필요한 시스템 호출을 구현합니다.
I/O 관리자
장치가 사용자 모드 하위 시스템과 통신할 수 있습니다.사용자 모드 읽기 및 쓰기 명령을 읽기 또는 쓰기 IRP로 변환하여 장치 드라이버에 전달합니다.파일 시스템 I/O 요청을 수락하고 이를 장치별 호출로 변환하며 하드웨어를 직접 조작하여 입력을 읽거나 출력을 쓰는 낮은 수준의 장치 드라이버를 통합할 수 있습니다.또한 백그라운드에서 디스크에 읽기 및 쓰기 요청을 캐싱하여 디스크 성능을 향상시키는 캐시 관리자도 포함되어 있습니다.
로컬 프로시저 호출(LPC)
프로세스 간 통신 포트에 연결 의미론을 제공합니다.LPC 포트는 사용자 모드 하위 시스템이 클라이언트와 통신하기 위해 사용하고, Executive 하위 시스템이 사용자 모드 하위 시스템과 통신하기 위해 사용하며, Microsoft RPC의 로컬 전송 기반으로 사용됩니다.
메모리 관리자
가상 메모리를 관리하고, 메모리 보호를 제어하며, 물리적 메모리에서 보조 스토리지로의 메모리 입출력 페이징을 관리하며, 물리적 메모리의 범용 할당기를 구현합니다.또한 단일 원자 단계에서 실행 파일을 매핑하거나 매핑 해제할 수 있는 PE 실행 파일의 구문 분석기를 구현합니다.
Windows NT Server 4.0, 터미널 서버 에디션부터 메모리 관리자는 사용자 모드 메모리와 마찬가지로 컨텍스트 전환의 대상이 되는 커널 모드 메모리 범위인 이른바 세션 공간을 구현합니다.이를 통해 커널 모드 Win32 하위 시스템과 GDI 드라이버의 여러 인스턴스가 초기 설계의 단점에도 불구하고 나란히 실행될 수 있습니다.각 세션 공간은 여러 프로세스에 의해 공유되며, 이를 총칭하여 "세션"이라고 합니다.
새 개체 유형을 도입하지 않고 세션 간의 격리 정도를 보장하기 위해 프로세스와 세션 간의 연결은 보안 주체(토큰)의 특성으로 Security Reference Monitor에서 처리되며, 이 연결은 특수 권한이 있는 동안만 변경할 수 있습니다.
세션의 상대적으로 정교하지 않고 특별한 특성은 세션이 초기 설계의 일부가 아니었기 때문이며 WinFrame이라고 하는 Windows NT용 터미널 서버 제품의 전제 조건으로 타사(Citrix Systems)가 메인 라인의 중단을 최소화하면서 개발해야 했습니다.그러나 Windows Vista를 시작으로 세션은 마침내 Windows 아키텍처의 적절한 측면이 되었습니다.더 이상 Win32를 통해 간접적으로 사용자 모드로 전환되는 메모리 관리자 구조가 아니라 대부분의 Executive 하위 시스템에 영향을 미치는 광범위한 추상화로 확장되었습니다.실제로 Windows Vista를 정기적으로 사용하면 항상 다중 세션 [18]환경이 만들어집니다.
프로세스 구조
프로세스 및 스레드 생성 및 종료를 처리하며, 전체적으로 종료되거나 공유 제한(할당된 메모리의 총 최대값 또는 CPU 시간 등)에 놓일 수 있는 프로세스 그룹인 Job의 개념을 구현합니다.작업 개체는 윈도우즈 2000에 도입되었습니다.
PnP 관리자
플러그 앤 플레이를 처리하고 부팅 시 장치 감지 및 설치를 지원합니다.또한 필요에 따라 장치를 중지하고 시작할 책임이 있습니다. 이는 버스(: USB 또는 IEEE 1394 FireWire)가 새 장치를 얻어서 이를 지원하기 위해 장치 드라이버를 로드해야 할 때 발생할 수 있습니다.이 대량의 기능은 플러그플레이 서비스의 사용자 모드에서 실제로 구현됩니다. 이 서비스는 적절한 드라이버를 설치하고 서비스와 애플리케이션에 새 장치의 도착을 알리고 사용자에게 GUI를 표시하는 복잡한 작업을 처리합니다.
전원 관리자
전원 이벤트(전원 차단, 대기, 최대 절전 등)를 처리하고 영향을 받는 운전자에게 특수 IRP(전원 IRP)를 알려줍니다.
보안 참조 모니터(SRM)
보안 통합 [19]하위 시스템의 보안 규칙을 시행하기 위한 기본 권한입니다.액세스 제어 항목(ACE)으로 구성된 액세스 제어 목록(ACL)을 사용하여 개체 또는 리소스에 액세스할 수 있는지 여부를 결정합니다.ACE에는 보안 식별자(SID)와 ACE가 선택한 트러스트 그룹(사용자 계정, 그룹 계정 또는[20] 로그인 세션)에 해당 [21][22]리소스에 대한 사용 권한(허용, 거부 또는 감사)을 부여하는 작업 목록이 포함됩니다.
GDI
그래픽 장치 인터페이스는 선 및 곡선 그리기, 글꼴 렌더링 및 팔레트 처리와 같은 작업을 담당합니다.Windows NT 3.x 시리즈 릴리스에서는 GDI 구성 요소를 사용자 모드 클라이언트/서버 런타임 하위 시스템에 배치했지만 그래픽 [23]성능을 향상시키기 위해 Windows NT 4.0과 함께 커널 모드로 전환되었습니다.

커널

커널은 HAL과 Executive 사이에 위치하며 멀티프로세서 동기화, 스레드 및 인터럽트 스케줄링 및 디스패치, 트랩 처리 및 예외 디스패치를 제공합니다. 또한 운영 체제를 실행하는 데 필요한 장치 드라이버를 부팅할 때 초기화하는 역할을 합니다.즉, 커널은 전통적인 마이크로커널의 거의 모든 작업을 수행합니다. Executive와 Kernel의 엄격한 구분은 원래 마이크로커널 설계의 가장 두드러진 잔재이며, 역사적 설계 문서는 일관되게 커널 구성 요소를 "마이크로커널"이라고 부릅니다.

커널은 종종 프로세스 [24]관리자와 인터페이스합니다.추상화 수준은 커널이 프로세스 관리자를 호출하지 않고 그 반대의 경우만 호출하는 것입니다(일부 코너 사례에 대해 저장하지만 기능적 의존성은 없습니다).

하이브리드 커널 설계

윈도우 NT 디자인은 전형적인 마이크로커널 시스템인 마하와 동일한 많은 목표를 포함하고 있으며, 가장 중요한 것 중 하나는 잘 알려진 인터페이스를 통해 통신하는 모듈의 집합으로서 1단계 인터럽트 처리와 같은 핵심 기능에 제한된 작은 마이크로커널을 가지고 있다는 것입니다.스레드 스케줄링 및 동기화 기본 요소.이를 통해 직접 프로시저 호출 또는 프로세스 간 통신(IPC)을 사용하여 모듈 간의 통신을 수행할 수 있으며, 따라서 서로 다른 주소 공간(예: 커널 공간 또는 서버 프로세스)에 있는 모듈의 잠재적인 위치를 확인할 수 있습니다.Mach와 공유한 다른 설계 목표에는 다양한 아키텍처 지원, 여러 운영 체제 퍼스낼리티를 구현할 수 있을 정도로 일반적인 추상화를 가진 커널, 객체 지향 [25][26]조직 등이 포함되었습니다.

윈도우즈의 기본 운영 체제 속성은 항상 존재하는 윈도우즈 API입니다.윈도우즈 퍼스낼리티를 구현하는 에뮬레이션 하위 시스템을 클라이언트/서버 런타임 하위 시스템(csrs.exe)이라고 합니다.4.0 이전 버전의 NT에서는 이 하위 시스템 프로세스에 창 관리자, 그래픽 장치 인터페이스 및 그래픽 장치 드라이버도 포함되었습니다.그러나 버전 4.0 이상에서는 이러한 모듈(특히 내부 그래픽 지원 없이 설계된 모듈)이 커널 모드 하위 [25]시스템으로 실행됩니다.

NT에서 실행되는 응용 프로그램은 OS 속성(일반적으로 Windows API) 중 하나에 기록되며, 장치 드라이버 개발에 사용되는 루틴을 제외하고는 문서를 공개적으로 사용할 수 없는 네이티브 NT API에 기록되지 않습니다.OS 퍼스낼리티는 일련의 사용자 모드 DLL(Dynamic-Link 라이브러리 참조)을 통해 구현됩니다. DLL은 필요에 따라 에뮬레이션 하위 시스템 서버 프로세스와 함께 애플리케이션 프로세스의 주소 공간에 매핑됩니다(앞에서 설명한 바와 같이).응용 프로그램은 주소 공간에 매핑된 OS 개인 데이터 DLL을 호출하여 시스템 서비스에 액세스합니다. 이 DLL은 프로세스 주소 공간에도 매핑된 NT 런타임 라이브러리(ntdll.dll)로 호출됩니다.NT 런타임 라이브러리는 커널 모드에서 이러한 요청을 처리하여 커널 모드 실행 루틴을 호출하거나 적절한 사용자 모드 하위 시스템 서버 프로세스에 로컬 프로시저 호출(LPC)을 수행합니다. 서버 프로세스는 응용 프로그램 프로세스, 커널 모드 하위 시스템 및 [27]서로 통신하기 위해 NT API를 사용합니다.

커널 모드 드라이버

Windows NT는 커널 모드 장치 드라이버를 사용하여 하드웨어 장치와 상호 작용할 수 있도록 합니다.각 드라이버에는 잘 정의된 시스템 루틴과 내부 루틴이 있으며 나머지 운영 체제로 내보냅니다.모든 장치는 사용자 모드 코드에 의해 I/O 관리자에서 파일 개체로 표시되지만 I/O 관리자 자신에게는 해당 장치가 파일, 장치 또는 드라이버 개체로 정의되는 장치 개체로 표시됩니다.커널 모드 드라이버는 최상위 드라이버, 중간 드라이버 및 하위 드라이버의 세 가지 수준으로 존재합니다.FAT NTFS용 파일 시스템 드라이버와 같은 최상위 드라이버는 중간 드라이버에 의존합니다.중간 드라이버는 낮은 수준의 필터 드라이버와 높은 수준의 필터 드라이버 사이에 끼어 있는 기능 드라이버(또는 장치의 주 드라이버)로 구성됩니다.그런 다음 기능 드라이버는 버스 드라이버(또는 버스 컨트롤러, 어댑터 또는 브리지를 서비스하는 드라이버)에 의존합니다. 이 드라이버는 자신과 기능 드라이버 사이에 있는 선택적인 버스 필터 드라이버를 가질 수 있습니다.중급 운전자는 가장 낮은 수준의 운전자가 작동합니다.Windows 드라이버 모델(WDM)은 중간 계층에 존재합니다.가장 낮은 수준의 드라이버는 장치를 직접 제어하는 기존 Windows NT 장치 드라이버이거나 PnP 하드웨어 버스일 수 있습니다.이러한 하위 수준 드라이버는 하드웨어를 직접 제어하며 다른 드라이버에 의존하지 않습니다.

하드웨어 추상화 계층

윈도우즈 NT 하드웨어 추상화 계층(HAL)은 시스템의 물리적 하드웨어와 나머지 운영 체제 사이의 계층입니다.하드웨어의 차이를 숨기고 커널이 실행되는 일관된 플랫폼을 제공하도록 설계되었습니다.HAL은 I/O 인터페이스, 인터럽트 컨트롤러 및 여러 프로세서를 제어하는 하드웨어별 코드를 포함합니다.

그러나 목적과 아키텍처 내에서 지정된 위치에도 불구하고 HAL은 커널이 Executive 아래에 위치하는 방식처럼 커널 아래에 완전히 위치하는 계층이 아닙니다.알려진 모든 HAL 구현은 커널 또는 Executive에 어느 정도 의존합니다.실제로 이것은 커널과 HAL 변형이 함께 작동하도록 특별히 구성된 일치 세트로 제공된다는 것을 의미합니다.

특히 하드웨어 추상화는 일반적으로 이식성의 광범위한 개념에 속하는 명령어 집합의 추상화를 포함하지 않습니다.x86 명령어 집합에 대한 몇 가지 수정사항을 처리하거나 누락된 연산 보조 프로세서를 에뮬레이트하는 등 필요할 때 명령어 집합을 추상화하는 작업은 커널에 의해 또는 하드웨어 가상화를 통해 수행됩니다.

부팅 시퀀스

부팅 시퀀스는 Vista 이전 버전에서는 NTLDR에 의해 시작되고 Vista [28]이상에서는 Windows 부팅 관리자에 의해 시작됩니다.부트 로더는 부트 드라이브의 파일 시스템에 액세스하고 ntoskrnl.exe를 시작하며 부트 시간 장치 드라이버를 메모리에 로드하는 역할을 합니다.모든 부팅 및 시스템 드라이버가 로드되면 커널이 세션 관리자 하위 시스템을 시작합니다.세션 관리자는 클라이언트/서버 런타임 하위 시스템과 같은 Win32 하위 시스템의 중요 커널 및 사용자 모드 서비스를 시작합니다.세션은 또한 프로세스 Winlogon을 실행하여 사용자가 로그인하고 계정을 사용할 수 있도록 합니다.

참고 항목

참고 사항 및 참조 사항

메모들
  1. ^ Finnel 2000, 1장: Microsoft Windows 2000 소개, 7-18페이지
  2. ^ "Appendix D - Running Nonnative Applications in Windows 2000 Professional". Microsoft Windows 2000 Professional Resource Kit. Microsoft. 11 September 2008.
  3. ^ a b c "Windows NT Workstation Resource Kit Chapter 28 - OS/2 Compatibility". Microsoft. Archived from the original on October 24, 2012.
  4. ^ a b "POSIX and OS/2 are not supported in Windows XP or in Windows Server 2003". Microsoft. Archived from the original on May 24, 2011.
  5. ^ Reiter, Brian (August 24, 2010). "The Sad History of the Microsoft POSIX Subsystem".
  6. ^ "Basic Architecture of a Network Redirector". Microsoft. 15 December 2021. Retrieved 2023-07-30.
  7. ^ "Windows NT Networking Architecture". Microsoft. Archived from the original on November 18, 2016. Retrieved 2016-11-18.
  8. ^ a b c Roman, Steven (1999). "Windows Architecture". Win32 API Programming with Visual Basic. O'Reilly and Associates, Inc. ISBN 1-56592-631-5.
  9. ^ "MS Windows NT Kernel-mode User and GDI White Paper". Windows NT Workstation documentation. Microsoft TechNet. Archived from the original on 21 February 2008. Retrieved 2007-12-09.
  10. ^ Mark E. Russinovich; David A. Solomon; Alex Ionescu. Windows Internals, Fifth Edition. Microsoft Press. pp. 228–255.
  11. ^ Russinovich & Solomon 2005, 페이지 124–125.
  12. ^ Russinovich 1997, 소개.
  13. ^ Russinovich 1997, "객체 유형".
  14. ^ Russinovich & Solomon 2005, 135–140페이지
  15. ^ Russinovich & Solomon 2005, 페이지 141–143.
  16. ^ "Handles and Objects". Windows System Information. Microsoft. 8 February 2022. Retrieved 2023-07-30.
  17. ^ 루시노비치 1997, "오브젝트".
  18. ^ "Impact of Session 0 Isolation on Services and Drivers in Windows Vista". Microsoft. Archived from the original on June 27, 2006.
  19. ^ "Active Directory Data Storage". Microsoft.[영구 데드링크]
  20. ^ "Trustee definition". MSDN. Archived from the original on February 8, 2005.
  21. ^ Siyan 2000.
  22. ^ "1.2 Glossary". [MS-AZOD]: Authorization Protocols Overview. 14 June 2022. access control entry (ACE).
  23. ^ "MS Windows NT Kernel-mode User and GDI White Paper". Microsoft. The Windows NT 4.0 Kernel mode change. Retrieved 2009-01-19.
  24. ^ Solomon & Russinovich 2000, 543–551페이지
  25. ^ a b "MS Windows NT Kernel-mode User and GDI White Paper". Microsoft Corporation. 2007. Retrieved 2007-03-01.
  26. ^ Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2005). Operating System Concepts; 7th Edition (PDF). Hoboken, New Jersey: John Wiley & Sons Inc. ISBN 978-0-471-69466-3.
  27. ^ Probert, Dave (2005). "Overview of Windows Architecture". Using Projects Based on Internal NT APIs to Teach OS Principles. Microsoft Research/Asia - Beijing. Retrieved 2007-03-01.
  28. ^ "Boot Sequence of Windows Multi-Boot - Multibooters.com". www.multibooters.com. Retrieved 2020-11-19.
레퍼런스

진일보한 내용

  • 마르티네티, E.페이지를 만드는 이유: Windows 7(x64) 가상 메모리 관리자(ISBN 978-1479114290)
  • 루시노비치, 마크 E.;솔로몬, 데이비드 A.;Ionescu, A.; Windows Internals, Part 1: Windows Server 2008 R2Windows 7(ISBN 978-0735648739)
  • 루시노비치, 마크 E.;솔로몬, 데이비드 A.;Ionescu, A.; Windows Internals, Part 2: Windows Server 2008 R2Windows 7(ISBN 978-0735665873)

외부 링크