Windows ETC

Windows NT 아키텍처 - Part 3

2012.11.30 08:26

호스트웨이 조회 수:415

***NT 실행부(익스큐티브)

 

 NT 커넬이 대통령과 같다면,  NT 실행부는 행정부와 비슷하다고 볼 수 있다.

NT 실행부는 전체 시스템에 생명과도 같은 중요한 태스크들을 관리한다. 그러

나 커넬은 직접적으로 그것들을 다루기엔 너무 바쁘다.

 명확하고 간결한 정의를 하자면 NT 실행부는 시스템에서 수행되는 모든 다른

애플리케이션들에게 제공될 수 있는 OS의 기반을 제공한다고 할 수 있다. 

것은 오브젝트 관리, 가상메모리관리, I/O관리, 프로세스 관리 서비스를 포함

한다.

 NT 실행부는 커넬 모드에서 배타적으로 동작하며, 프로텍티드 환경 서브시스

템에 의해 필요에 따라 호출된다. NT의 조직도에 따라, 사용자 프로그램은 NT

실행부를 직접 호출하지 않는다. 대신, 환경 서브시스템에게 서비스를 요청한

. 그리고 그 환경 서브시스템이 NT 실행부를 호출한다.

 NT실행부 안에는 실재하는  API들에 의해 공개되지 않는 펑션들이 존재한다.

이것은 NT 설계자들이  차후의 업그레이드를 위해 OS속에 후킹을 넣으려고 노

력했기 때문이다.

 커넬 자체를 제쳐두면 NT실행부의 주요 구성은 다음과 같다.

 

   오브젝트 관리자

   프로세스 관리자

   가상메모리 관리자

   Local Procedure Call Facility (지역 프로시저 호출 시설)

   Security Reference Monitor (보안 참조 감시자)

   I/O 관리자

 

***오브젝트 관리자

 

 오브젝트 관리자는 NT 실행부를 구성하는 모든 시스템에 의해 쓰이는 오브젝

트들을 생성하고 고치고 삭제하는 일에 쓰인다. 오브젝트들은 OS의 자원을 나

타내는데 쓰이는 추상적인 데이터 타잎이다. 그것은 또한 OS의 나머지 부분에

오브젝트의 상태 정보를 제공해준다.

 오브젝트는 디바이스 포트 처럼 확실한 것일수도 있고,  쓰레드처럼 더 추상

적일 수도 있다. 오브젝트가 생성되면,  그 오브젝트에 다른 프로그램이 액세

스할 수 있도록 이름이 부여된다.  다른 프로세스가 오브젝트를 액세스하려고

하면,  오브젝트는 오브젝트 매니저로부터 생성된 오브젝트 핸들이 있어야 한

.  오브젝트 핸들은 그 오브젝트가 어떻게 액세스될 수 있는지에 대한 제어

액세스 뿐만 아니라  실제 오브젝트를 지정하는 데에 쓰이는 포인터를 제공한

. 이 제어 액세스는 NT 보안 서브세스템에 의해 제공된다.

 오브젝트 관리자는 주인이 없다고 판단되는 오브젝트를 클리어해주는 역할도

한다. 이것은 가베지 코렉션이라고 알려져 있다. 윈도우 3.1은 그러한 기능이

부족해서 문제가 많이 생겼었다. 응용프로그램이 비정상적으로 종료되거나 멎

으면 그 자원을 다시 가져올 수가 없었기 때문이다. 즉 시스템 자원 부족이라

는 에러를 많이 겪어야만 했다.

 

***프로세스 관리자

 

 프로세스 관리자는 모든 프로세스와 쓰레드의 생성, 제거, 변경에 대한 관리

를 한다. 또한 쓰레드와 프로세스들의 상태 정보를 알려준다.

 프로세스 관리자는 기타 다른 NT 수행부의 요소들과 비슷하게,  전체 시스템

의 운영에 아주 중요한 역할을 담당하고 있다.  애플리케이션이 시작되면,

로세스의 형태로 생성이 되며, 그것은 프로세스 관리자 호출에 필요하다. 

든 프로세스가 최소한 1개 이상의 쓰레드를 필요로 하기 때문에, 프로세스 관

리자가 쓰레드를 생성하기 위해 다시금 호출된다.

 프로세스 관리자는 쓰레드를 관리하는데 쓰이지만, 쓰레드들이 어떻게, 언제

스케줄링 되어야 하는지에 대한 테이블은 갖고 있지 않다.

 이는 마이크로커넬 자체에 의해 결정되는 정책이다.

 

***가상메모리 관리자

 

 가상메모리 관리자(VMM)는 시스템의 가상 메모리 풀에 대한 관리를 제공한다.

가상메모리는 디스크를 페이징과 복원 작업으로 물리 메모리 대신 사용할 

있도록 해주는 기법이다. 이것은 윈도우 NT가 모든 프로세스에게 실제 메모리

가 얼마나 되는지는 상관없이 32비트 주소 영역을 제공하기 때문에  필수적인

부분이다.

 각각의 프로세스에는  4GB의 가상 메모리 공간이 할당된다.  이 공간의 상위

2기가바이트는 시스템에 의해 예약되어 있고, 나머지 2기가가  프로세서가 쓸

수 있는 부분이다. 각 프로세스들은 마치 메모리 공간상에 자신만이 있는것처

럼 주소를 할당한다.  가상메모리  관리자는 따라서 프로세스  자체의 메모리

주소를 실질적인 시스템 메모리 어드레스로 번역해주는 역할도 한다. 만약 프

로세스의 메모리 주소가 디스크로 페이지 아웃된 메모리 영역을 참고하려 

, VMM은 그 페이지된 영역을 디스크로부터 다시 찾아온다.