IT Japan

단원 1 Windows 2000 Architecture의 이해 본문

IT/Windows

단원 1 Windows 2000 Architecture의 이해

swhwang 2016. 3. 23. 00:32
반응형

단원 1 : Windows 2000 Architecture 이해

Windows 2000 모듈 단위로 되어 있는  Software 컴포넌트로 구성되어 있으며, 이들은 서로 상호 보완 동작함으로써 시스템으로서의 기능을 발휘하게 된다. 그리고 Windows 2000 구조는 크게 나누어 2 개의 층으로 있는 , 이는 User Mode Kernel Mode 이다.

다음은 Windows 2000 구조를 크게 2개의 층으로 나누고, 층에서 어떠한 컴포넌트들이 있는 지와 기능에 대한 설명이다.

Windows 2000 Architecture 컴포넌트들


Windows 2000 구조는 크게 보면 그림과 같이 2 층으로 나누어 있다.

User Mode

User Mode Windows 2000 환경을 제공하는 일종의 subsystem 동작하는 구역이다. subsystem들은 종의 application 프로그램으로서 상위 프로그램이나 동등 레벨의 다른 application 프로그램에게 API(Application Program Interface) 제공한다. 이는 Kernel 모드에 비해 상대적으로 낮은 우선 순위를 가지고 있기 때문에 CPU 사용하고 있다.


이는 다음과 같은 특징을 가지고 있다.

l  하드웨어를 직접 액세스하거나 제어하지 않는다.

l  디바이스 드라이버를 직접 액세스하거나 제어하지 않는다.

l  정해진 메모리나 입출력 주소 영역에만 액세스하게 된다.

l  하드 디스크의 영역을 가상 메모리 방식으로 사용하게 되는 경우도 있다.

l  상대적으로 우선 순위가 커널 모드에 비해 낮다.


Kernel Mode

시스템 데이터나 하드웨어에 직접 액세스하고 제어한다. 독립된 메모리 영역에 직접 액세스하고 실행되며 다음과 같은 5 개의 컴포넌트로 이루어져 있다.

l  Windows 2000 Executive: 비디오와 키보드 입출력을 제외한 대부분의 입출력 제어(I/O Control) 보안과 같은 object 관리한다. 비디오와 키보드의 입출력은 User Mode Win32 Subsystem 담당한다.

l  Managers: I/O, objects, security, IPC(interprocess communication), 가상 메모리와 프로그램 프로세스를 관리한다.

l  Device Drivers: 드라이브의 요구(call) 따라 하드웨어를 구동한다.

l  Kernel: I/O 기능과 Executive 서비스사이의 동작을 동기화 하여 CPU 관리한다.

l  Hardware abstraction layer(HAL): 하드웨어와의 인터페이스를 가상적으로 만듬으로서 Windows 2000 이기종의 하드웨어라도 쉽게 포팅되게 한다.

 

User Mode에는 타입에 따라서 Environment subsystems Integral subsystems 나뉘어 진다.

Environment Subsystems

독자들도 이미 알고 있겠지만 Windows 2000에서는 Unix OS/2 등과 같은 다른 OS에서 만들어진 프로그램들도 구동이 된다. 이는 바로 Environment Subsystems 이기종 프로그램이 넘겨주는 API Windows 2000 해석할 있도록 에뮬레이션(emulation)해서 Executive service에게 넘겨 주기 때문에 가능한 것이다. 다시 말하면, Environment Subsystems에서는 이기종의 프로그램이 주는 API 변환하는 역할을 하는 것이다.

Windows 2000에는 다음과 같은 Environments subsystem 있다.

l  Win 32 Subsystem: Win 32, Win 16, MS-DOS 응용 프로그램을 담당한다.

l  OS/2 Subsystem: 16 bit character 모드의 OS/2프로그램을 지원한다.

l  POSIX Subsystem: Unix POSIX표준을 따르는 응용 프로그램 구동을 지원한다.

Integral Subsystems

Integral Subsystem Windows 2000 운영체제에서 시스템 부문의 핵심을 담당하는 , 다음과 같은 기능을 담당한다.

n  Security: 이는 OS 관련 subsystem 으로서;

l  사용자 계정과 관련하여 퍼미션과 권한관계를 확인한다.

l  어떤 시스템 자원이 감사 대상인지를 확인한다.

l  사용자 로그온 요청을 처리한다.

l  사용자 인증을 담당한다.

n  Workstation Service: 이는 networking integral subsystem으로서 사용자가 네트워크 자원을 액세스할 있도록 network redirector에게 API 제공한다.

n  Server Service: 이것도 networking integral subsystem 으로서 서버에 액세스하려는 사용자에게 API 제공한다.

 

Windows 2000 커널의 컴포넌트들은 Windows 2000 Executive 구성하는데, 이는 인터페이스 되는 영역에 따라 같은 Executive components 아니라 User Mode subsystems 까지 지원하는 System services, 다른 Executive components에만 인터페이스가 되는 Internal routines 나눌 있다.

다음은 커널 모드 내에서 수행되는 Executive components 대한 설명이다.

l  Object Manager: 시스템 자원들, , 쓰레드나 프로세스(processes), 데이터 구조 등을 나타내는 object 생성, 관리, 삭제하는 일을 담당한다.

l  Security Reference Monitor: 로컬 컴퓨터의 보안 정책을 관리한다.

l  IPC Manager: 클라이언트와 서버간의 교신을 관리한다. 클라이언트의 environment subsystem 서버의 Executive service간의 교신을 관장하는 , 이는 다음과 같은 2 가지 콜로 이루어진다.

LPC(Local Procedure call): 동일 컴퓨터 내에서의 클라이언트와 서버간의 교신을 담당.

RPC(Remote Procedure call): 서로 다른 컴퓨터간의 클라이언트와 서버 서비스간의 교신을 담당.

l  Process Manager: 프로세스나 쓰레드를 생성하고 종료한다. 이를 resume하거나 이들에 관한 정보를 저장했다가 다시 읽어 오는 일을 담당한다.

l  Power Manager: 절전 관련 API 만들고 이를 관리한다.

l  Plug and Play Manager: PNP기능을 위해 디바이스 드라이버와 교신하고 디바이스를 구동하면서 모든 작업을 중앙에서 유지 관리한다.

l  VMM(Virtual Memory Manager): 가상 메모리를 구축하고 관리한다. 프로세스마다 서로 다른 메모리 영역을 주어서 서로 보호모드로 구동한다. 페이징도 제어함으로써 디스크를 실제 메모리에 데이터나 코드를 주고 받을 때에 대신 사용할 있도록 한다.

l  Kernel: 여러 개의 CPU구동을 동기화 하고 쓰레드를 실행하며 인터럽트 요청에 대응한다.

l  I/O Manager: 서로 다른 디바이스간의 I/O 관리한다. 이는 다음 3 개로 이루어 진다.

l  File systems: 파일에 관련된 I/O 요청 건을 디바이스가 읽을 있는 콜로 변환한다. Network redirector network server file system 드라이버 이다.

l  Device driver: 입력을 받아 들이고 출력을 직접 하드웨어에 지시하는 로우레벨 드라이버이다.

l  Cache Manager: 디스크에서 읽은 내용을 시스템 메모리에 일시 저장해서 디스크 읽는 속도를 향상시킨다. 쓰기 동작에서도 이를 Background 방식으로 처리하기 때문에 성능을 향상시킨다.

l  Window Manager and GDI(Graphic Device Interface): 가지는 Win32k.sys라는 동일 디바이스 드라이버를 사용하는 , 화면 출력 시스템을 담당한다.

l  Window Manager: 화상 출력 아니라 키보드와 마우스의 입력을 담당한다.

l  GDI: 그래픽 기능을 담당한다.

l  Hardware Abstraction Layer(HAL): I/O 인터페이스나, 인터럽 제어, 멀티 CPU간의 교신 등을 제어하는 하드웨어 제어 명령어 코드로 이루어져 있다. 이것이 있기 때문에 Windows 2000 서로다는  하드웨어(CPU)에서도 같이 구동 되는 것이다.

 주: 쓰레드(thread): Windows 2000실행 명령 중의 가장 작은 단위의 실행 명령어

 


Windows 2000 Processing 이해

Windows 2000 이상의 CPU 있는 시스템에서 멀티 쓰레드로 멀티 태스킹이 지원되는 운영체제이다.

l  멀티 쓰레드란 하나의 프로세스에서 이상의 쓰레드가 동시에 실행되는 것을 말하는데 Excel에서 하나의 쓰레드는 키보드에서 입력을 받아 들이는 동시에 이것을 계산하는 쓰레드가 같이 동작하는 것을 말하는 것이다.

l  멀티 태스킹이란 운영체제가 CPU 구동 싸이클을 쓰레드 별로 나누어서 처리하는 것을 말하는 이렇게 동작하게 되면 사용자 입장에서 보면 멀티 태스킹 쓰레드가 수행되는 처럼 보이게 된다.

l  멀티 프로세싱이란 여러 개의 CPU 하나의 하드웨어 시스템에서 구동 되도록 지원하는 기능을 말한다.


쓰레드란 Windows 2000에서 가장 작은 단위의 수행 프로그램을 말하는 , Windows 2000 프로세스에서 여러 개의 쓰레드를 동시에 수행한다.

프로세스는 여러 개의 수행 프로그램으로 이루어져 있는 , 프로그램들은 다음과 같은 작업을 한다.

l  최초의 명령어와 데이터를 명시하고,

l  독립적인 메모리 주소 영역을 확보하며,

l  파일이나 통신 포트 등과 같은 시스템 자원을 명시하며

l  최소한 하나 이상의 쓰레드가 수행하는 것이다.

여기서 쓰레드는 해당 프로세스에 명시된 시스템 자원을 이용해서 할당된 메모리 영역에서 작업을 수행하는 것이다.

쓰레드는 다음과 같은 컴포넌트로 이루어져 있다.

l  시스템에서 부여하는 client ID라는 고유 식별자.

l  CPU 상태를 나타내는 레지스터 내용.

l  User mode에서 동작할 사용하는 스택(stack) Kernel mode에서 동작할 사용하는 스택(stack) 각기 하나씩.

l  Subsystems이나 DLL혹은 run-time libraries 사용하는 저장 공간.

: 스택(stack)이란 프로그램이 동작 중의 어떤 상태나 상황을 저장해 놓는 일시 저장 장소(memory area) 말함.

 


멀티 태스킹

개발자에 따라 프로그램을 단일 쓰레드나 멀티 쓰레드 방식으로 프로그래밍을 있는 , 단일 쓰레드 방식에서는 프로세스의 동작을 마치려면 해당 단일 쓰레드의 동작이 마무리 되어야 한다. 이와는 달리 멀티 쓰레드 프로세스는 여러 개의 쓰레드가 동시에 수행되기 때문에 여러 개의 태스크를 동시에 처리할 수가 있는 것이다. 이를 멀티 쓰레드라고 한다. 쓰레드의 실행은 Windows 2000 kernel 제어한다.

물론 CPU 번에 하나의 쓰레드만 처리하지만 멀티 쓰레드가 지원되는 운영체제는 여러 개의 프로그램을 동시에 수행해 있는 것이다.

Windows 2000에서는 멀티 태스킹 프로세스를 context switching 이라는 방법으로 다음과 같이 처리한다.

  1. 쓰레드는 운영체제가 인터럽을 하거나 자원의 느린 응답을 기다려야 때는 일단 멈춘다.
  2. 시스템은 해당 쓰레드의 context 저장한다.
  3. 시스템은 다른 쓰레드의 context 읽어 들이게 되고 쓰레드가 실행을 시작한다.

과정이 실행대기 하는 쓰레드가 있는 동안에 계속 반복 수행된다.

선점적 멀티 태스킹(Preemptive Multitasking)

선점적 멀티 태스킹 시스템에서는 OS CPU 액세스를 제어한다. 그리고 OS 다음 2 가지 하나가 발생할 경우엔 쓰레드를 인터럽 하거나 선점한다.

l  쓰레드에는 퀀텀(quantum)이라고 불리는 미리 정해진 동작시간이 있는 이를 초과할 경우.

l  높은 우선 순위를 가진 쓰레드가 대기하고 있을 .

프로세스와 쓰레드 우선 순위

Windows 2000 Kernel 쓰레드가 CPU 액세스하는 것을 우선 순위를 주어서 제어한다. 우선 순위는 0 부터 31까지 32개로 나누어 지는 .

l  0 부터 15 까지는 User mode 컴포넌트의 실행에 부여되며,

l  16 부터 31 까지는 Kernel mode에서 사용하도록 예약되어 있다.

 

멀티 프로세싱이란 운영체제가 2 이상의 CPU에서 동작되는 시스템을 말하는 , 여기에는 비대칭형과 대칭형 멀티 프로세싱 방식이 있다.

비대칭형 멀티 프로세싱(Asymmetric Multiprocessing)

비대칭형 멀티 프로세싱 운영체제는 프로세스를 특정 CPU 지정하여 수행한다. 일단 프로세스가 수행되기 시작하면 다른 CPU 대기 모드에 있는지에 상관없이 해당 CPU에서만 동작하게 된다. (로드 분산이 된다.)

대칭형 멀티 프로세싱(Symmetric Multiprocessing)

대칭형 멀티 프로세싱 시스템(SMP)에서는 시스템 프로세스와 응용 프로그램 프로세스가 가용 CPU 모두 이용하여 실행되는 운영체제이다. Windows 2000 SMP 지원되는 , CPU 다른 CPU 비해 많은 쓰레드가 대기하고 있을 경우엔 시스템 Kernel 쓰레드를 새로 스케줄하여 편성하게 된다. 그러나 커널 모드가 처리하는 대부분의 프로세스는 항시 0 CPU에서만 실행되기도 한다.

 


Windows 2000 메모리 관리

Windows 2000 32bit 주소 공간을 기반으로 하는 메모리 방식인데 이를 관리 하기위해 Virtual Memory Management(VMM)시스템을 사용한다.

이는 실제 메모리에서 처리 있는 보다 많은 프로그램을 동시에 처리할 있으며, 프로세스 별로 독립된 보호모드의 메모리 공간을 할당하기 때문에 프로세스에서 일어나는 에러나 문제가 다른 프로세스에 영향을 없도록 설계되어 있다.


물리적 메모리 주소는 설치된 메모리의 양에 따라서 한계가 있지만 가상 메모리 주소는 32 bit 이기에 4 GB 가상 메모리 공간을 이용할 있다.

VMM 다음 가지 역할을 한다.

l  프로세스별로 사용하는 가상 주소와 가상 주소가 나타내는 데이터가 실제로 위치한 주소를 연결하는 메모리 매핑 테이블을 관리한다. 쓰레드는 메모리에 대한 액세스를 요청하게 되면 가상 메모리 주소로 요청을 하는 , 때에 VMM 해당 가상 주소를 가지고 실제로 이에 해당하는 물리적 주소를 메모리 매핑 테이블에서 조회하여 이를 쓰레드에게 넘겨 주는 것이다.

l  이렇게 디스크와 물리 메모리 사이에 메모리의 내용을 주고 받는 것을 페이징(Paging)이라고 한다.

 

가상 주소란 Windows 2000 응용 프로그램이 메모리 참조 사용하는 32bit주소 공간으로서, VMM 4 GB 주소 공간을 2 GB 나누어 상위 2GB 하위 2GB 나눈다.

l  상위 2 GB Kernel mode 쓰레드만 사용할 있는 , 상위 2 GB 아래 부분은 실제 메모리 번지와 하드웨어적으로 직접 매핑되어 있기 때문에 굉장히 빠른 액세스 속도를 가진다.

l  하위 2 GB User mode Kernel mode 쓰레드 사용할 있는 , VMM 이를 4 KB단위로 필요한 상황에 따라 디스크로 스와핑(swapping) 하기도 한다.

 

페이징이란 실제 메모리가 한계에 도달한 상황에서 쓰레드가 현재 실제 메모리에 없는 코드와 데이터를 액세스하려고 때에, VMM 페이지 개를 실제 메모리에서 디스크에 있는 pagefile이라고 불리는 저장장소에 옮겨 놓아서 실제 메모리의 여유를 가진 다음, 여기에 쓰레드가 요구한 코드와 데이터를 옮겨 놓는 작업을 말하는 것이다.

가상 주소 공간은 valid page invalid page 나누는데, Valid page 해당 영역이 실제 메모리에 있을 경우이며, Invalid page 해당 페이지가 실제 메모리에 없는 경우를 말한다. 쓰레드가 Invalid page 읽으려 하면 CPU page fault라는 시스템 메시지를 내놓게 되며, 이를 받은 VMM 당장 해당 Invalid page 내용이 들어 있는 디스크로 가서 이를 읽어서 비어 있는 실제 메모리로 가져오는 것이다.

VMM 페이징을 다음의 3 과정을 수행한다.

l  디스크에서 실제 메모리로 페이지를 가져 온다. 이를 페칭(fetching)이라고 한다. VMM 페칭 때에 Invalid page 뿐만 아니라 아래위의 다른 페이지도 같이 가져 오는 , 이렇게 함으로서 여러 가져 와야 되는 수고를 번으로 줄일 있기 때문이다. 이런 방법을 demand paging with clustering이라고 한다.

l  디스크에서 가져온 페이지를 어디에 것인가를 결정한다. 실제 메모리에 여유가 있을 경우에는 VMM 제일 페이지에 두게 된다. 실제 메모리에 여유가 없을 경우엔 어떤 페이지를 디스크로 옮겨 놓을 것인 가를 결정한다.

l  어떤 페이지를 디스크로 옮겨 놓을 지를 결정한다. VMM 프로세스가 이용하는 페이지에 대한 기록을 가지고 있는 이를 프로세서의 working set이라고 부른다. 여기에서는 선입선출의 원칙대로 먼저 들어 왔던 메모리 페이지가 디스크로 옮겨 대상이 된다. Page fault 발생하면 VMM 요청한 쓰레드가 속한 프로세스의 working set 조사하여 실제 메모리에 가장 오래 있었던(가장 먼저 들어 왔던) 페이지를 디스크로 옮겨 가는 것이다.

 

 

반응형

'IT > Windows' 카테고리의 다른 글

Office365  (0) 2016.04.11
공유폴더 관리 하기  (0) 2016.04.10
차세대 프로토콜 WebDAV 가능성  (0) 2016.04.06
Active Directory  (0) 2016.03.08
용어정리  (0) 2016.03.08
Comments