윈도우에 대한 이해 0













윈도우의 역사 

 

 

1983년 3월 MS-DOS 2.0이 발표되고, 이때부터 하드 디스크를 여러개 장착할 수 있게 되었다. 그 후 윈도우는 계속 발전해 1985년 11월

처음으로 윈도우 1.0이 발표됐다. 다중 처리 환경을 갖추고 작업 절차가 단수해졌으나, 안정성과 성능 문제로 별다른 주목을 받지 못했다.

1987년 윈도우 2.0이 발표되자 DOS에서 설정한 기본 메모리인 640KB 이상의 프로그램이 생겨났다.

1987년에 윈도우 386 버전이 나오고, 이것이 1990년에 발표된 윈도우 3.0의 기초가 되었다.

윈도우 3.0은 안정성에 조금 문제가 있었으나 많은 인기를 끌었고, 1992년에 발표된 윈도우 3.1은 대부분 PC에 윈도우를 설치하는 등 인기를 끌었다.

1993년에는 DOS에서 시작한 PC용 운영체제인 윈도우가 서버용 운영체제의 개념인 NT(New Technology) 버전으로 출시되기 시작했다.

1995년 8월 윈도우 95가 출시되었다. 잦은 블루스크린등으로 안정성 문제가 심각했지만 TCP/IP, 전화 접속 네트워킹, 긴 파일 이름 등

새로운 기능이 많아 매우 인기를 끌었다.

1998년에는 윈도우 98이 출시되었고, OSR2 버전은 꽤 높은 안정성을 갖추었다. 1999년에는 윈도우 ME와 윈도우 서버2000. 2001년에 윈도우 XP, 2003년에는 윈도우 서버 2003, 현재는 윈도우 서버 2008과 윈도우 비스타, 윈도우7 등이 출시됬다.

 

윈도우의 구조

 

커널은 운영체제의 중심에 위차하며, 운영체제에서 어떤 작업을 시작하더라도 커널의 동작에 의해 제어된다. 즉, 커널은 인터럽트처리,

프로세스관리, 메모리관리, 파일 시스템관리, 프로그래밍 인터페이스 제공 등 운영체제의 기본 긴으을 제공하는 핵심이라 할수있다.

 

윈도우의 커널 구조

 

윈도우와 유닉스에서 커널의 기본 개념은 같으나 형태는 다르다. 둘 다 동작할 때 커널이 손상되면 안 되므로 접근 가능한 메모리에 로드하지 않는 것이 일반적이다. 코널이 손상되면 부팅할 때 에러 메시지와 함께 블루스크린이 나오며 운영체제를 새로 설치해야 한다.

윈도우 시스템은 보통 위와 같은 링 구조를 이룬다.

맨 밑의 하드웨어 -> 하드웨어를 제어하기 위한 HAL -> 마이크로 커널 -> 각종 관리자 -> 운영체제에서 동작하는 갖가지 응용프로그램 순이다.

 

링 구조의 각 계층은 각각의 보안 요소를 충족하고 개별적으로 운영될 때 시스템 보안 수준이 높은 상태로 유지될 것이라는 생각에서 기안되었다. 윈도우에서는 특히나 하드웨어 -> 하드웨어를 제어하기위한 HAL -> 마이크로 커널 -> 각종 관리가 까지를 커널모드로 구분하고,

마지막 링을 사용자 모드로 구분한다.

 

커널모드는 기본적으로 사용자가 접근할 수 없는 영역으로, 프로그램의 실행과 관련한 기본 관리 시스템이 여기에 존재한다.

윈도우는 프로그램을 만들고 실행하는 모든 과정이 사용자모드에서만 가능하도록 설계되었으나, 완벽하게 구현되진 않았다.


HAL이란  드라이버 개발자와 하드웨어 개발자는 윈도우에서 제시한 기본 표준만 따르면 되는데 그 표준이 HAL이다. HAL은 하드웨어와 개발된 소프트웨어 간 원활한 통신이 가능하도록 도와주는 번역자(자동인식) 역할을 한다.

 

본래 커널은 프로세스의 스케줄링이나 메모리 관리, 데이터 입출력, 하드웨어 제어 같은 일을 도맡아 했다. 그러나 윈도우에서는 이를 여러

관리자에게 분담시키고 커널 자신은 하드웨어와의 통신만 제어하는 최소한의 커널이 되었는데, 이 커널을 마이크로 커널이라 한다.

윈도우는 system32 폴더의 Ntoskrnl.exe 파일이 그 역할을 한다.

 

윈도우 관리자의 역할

 

입출력 관리자 : 시스템의 입출력을 제어한다.

객체 관리자 : 윈도우는 파일, 포트, 프로세스, 스레드 등 객체들에 대한 정보를 제공한다.

프로세스 관리자 : 스레드를 생성하고 요청에 따라 처리한다.

로컬 프로시저 호출 관리자 : 각 프로세스는 서로의 메모리 공간을 침범하지 못하므로 프로세스 간 통신이 필요한 경우에 이를 대신해주는 장치.

가상 메모리 관리자 : 응용 프로그램의 요청에 따라 RAM의 메모리를 할당하고, 가상 메모리의 페이징을 제어한다.

그래픽 장치 관리자 : 화면에 선이나 곡선을 그리거나 폰트 등을 관리한다.

기타 관리자 : 캐시관리자, PNP관리자, 전원 관리자 등이 있다.

 

윈도우는 여러 응용 프로그램을 실행하기 위해 몇 가지 서브 시스템을 동작하는데, 이 중 첫번째가 Win32다. Win32는 기본 서브 시스템으로 32비트 응용 프로그램이 동작할 수 있게 도와주고, 기본 윈도우 사용자 인터페이스를 제공한다. 즉 비디오 디스플레이, 키보드, 마우스 등을 지원한다. 최근에는 윈도우 7이나 2008등에서는 64비트 서브 시스템을 제공하고 있다.

이 외에 보안 서브 시스템과 유닉스 운영체제에 기반을 둔 일련의 표준 운영체제 인터페이스로 POSIX가 있다. 보안 서브 시스템은 사용자가 로그인할 때 데이터를 보호하고, 운영체제가 이를 제어할 수 있도록 만든다.

 

윈도우의 파일 시스템

 

윈도우에는 FAT,FAT32, NTFS와 같은 파일 시스템이 존재한다.

 

FAT는 기본적으로 2GB까지 한 파티션으로 설정할 수 있다. FAT 테이블의 기본 크기는 16비트인데, 이는 하드 디스크에 파일을 담는 최소 단위인 클러스터가 32KB기 때문이다. 초기에는 2GB의 용량이 충분한 듯 보였으나, 얼마 지나지 않아 너무나 작은 용량으로 여겨지고 있다

 

FAT32는 적은 용량을 해결하기 위해 개발된 것이다. FAT와는 비교할 수 없을 만큼 용량이 커져 총 32비트(2^32)개의 클러스터를 가질 수 있다. FAT32는 현재도 종종 사용되며 호환성이 좋아 리눅스나 다른 운영체제에 정보를 옮길 때 유용하다.

호환이 잘 되는 만큼 보안상에는 취약하다.

 

※ 클러스터란 메모장에 12345 라고 내용을 적고 저장을하면 5바이트의 용량을 가진 파일이 되어야 하는데, 속성을보면 4KB로 잡힌것을

    볼수있다. O/S가 최소크기를 4KB로 할당해놓아서 4KB로 잡힌것임.

 

접근 제어가 적용된 윈도우 파일 시스템에는 NT 계열에 적용되기 시작한 NTFS가 있다. NTFS는 FAT와 OS/2의 파일 시스템이었던 HPFS의 장점을 모아 만든 것이다.

 

NTFS는 파일 시스템의 결함 관리에 있어 FAT나 FAT32보다 훨씬 좋은 성능을 보인다. 그리고 보안 관점에서도 비교적 훌륭하다.

개별 폴더와 파일에 사용 권한을 설정할 수 있고, 각 파일과 폴더에 해당 계정만 접근하여 읽을 수 있게 암호화 할 수 있기 때문이다.

폴더를 암호화하면 폴더에 있는 파일도 모두 암호화되며, 암호화된 폴더나 파일은 복사나 이동을 해도 암호화 속성을 잃지 않는다.

NTFS는 특정 계정의 사람이 몇 날 몇 시 몇 분에 파일을 열거나, 열려다 실패했는지 알 수 있는 감사 기능을 제공한다.

 

윈도우의 부팅 순서

 

윈도우 XP, 윈도우 서버 2000/2003의 부팅 순서

 

1단계 . POST(Power On Self Test) 실행

 POST 실행은 하드웨어 스스로 시스템에 문제가 없는지 기본 사항을 검사하는 과정이다. BIOS에서 POST를 실행하고, 라우터나 스위치

등의 장비에서도 처음 스위치를 켤 때 POST를 실행한다.

 

2단계 . 기본 부팅 관련 설정사항 로드

BIOS는 CMOS에 설정되어 있는 시스템 설정사항 및 부팅과 관련된 여러 가지 정보를 읽어 시스템에 적용한다

 

3단계. MBR(Master Boot Record)코드

 MBR은 저장 매체의 첫 번째 섹터에 위치하는 512바이트의 영역으로, 부팅 매체에 대한 기본 파일 시스템 정보가 들어 있다.운영체제가 부팅될 때 저장 매체의 첫 번째 섹터를 호출하면 해당 부트 코드가 수행된다. 부트 코드의 주 역할은 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션의 부트 섹터를 호출하는 것이다. 만약 부팅 가능한 파티션이 없으면 미리 정의된 에러 메시지를 출력한다.

MBR과 관련한 메시지 중 Missing operating system은 운영체제가 설치되지 않았거나 CMOS에서 부팅 매체를 잘못 설정했을 때 확인 할 수 있다.

 

4단계 . NTLDR(NT Loader) 실행

 NTLDR은 하드 디스크의 부팅 파티션에 있는 프로그램으로, 윈도우 서버 2000이 부팅될 수 있도록 간단한 파일 시스템을 실행하고

boot.ini 파일의 내용을 읽어 가능한 부팅 옵션을 보여준다.

 

5단계 . NTDETECT.com 실행

 NTDETECT는 NTLDR에서 제어권을 위임받아 시스템에 설치된다. 그리고 다음과 같은 하드웨어를 검사한다.

  PC의 CPU 유형

  버스 유형

  비디오 보드 유형

  키보드와 마우스 종류

  컴퓨터에 장착되어 있는 직렬 포트와 병렬 포트

  플로피 드라이브

 

6단계 . ntoskrnl.exe(NT OS Kernel)실행

 ntoskrnl은 HAL.DLL을 로드한다. ntoskrnl의 로드 단계는 4단계로 나누어 생각할 수 있다.

 

  1 커널 로드 : 윈도우 서버 2000은 시스템 설정을 로드하고, 이것을 HKEY_LOCAL_MACHINE\ System\CurrentControlset\Services

                     에 저장. 이 정보를 확인하여 로드 할 드라이브와 그 순서를 결정한다.

  2 커널 초기화 : 드라이브에 대한 현재의 제어 설정을 검사하고 작업을 시작한다.

  3 서비스 로드 : 세션 관리자 서브시스템(smss.exe)과 Win32 서브 시스템을 로드한다.

  4 서브 시스템 시작 : 윈도우 서브 시스템이 초기화된다. Win32 서브 시스템은 로그인을 처리하고 Winlogon.exe를 시작한다. 계정과

   패스워드를 입력받아 로컬 보안 인증 서버(lsass.exe)에 보낸다. 계정과 패스워드를 전달받은 로컬 보안 인증 서버는 보안 계정 관리자

   (SAM)에 저장된 정보와 비교한다. 그리고 서로 일치하면 Userinit.exe 프로세스가HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\

   Window NT\CurrentVersion\Winlogon의 셸 값에서 참조되는 셸을 실행한다.

 

윈도우 비스타 , 2008, 7의 부팅순서

 

1단계 1~3단계 POST 실행/기본 부팅 관련 설정사항 로드/MBR 로드

 POST와 CMOS에서 기본 부팅 관련 설정사항 및 MBR의 로딩은 위와 같다.

4단계 윈도우 부트 서브 시스템 실행

 윈도우 7은 MBR에서 NTLDR이 실행되지 않고 윈도우 부트 서브 시스템이 실행된다. 윈도우 부트 서브 시스템은 bootmgr.exe가 실행되고

 부트 설정 데이터를 읽어 실행 가능한 운영체제의 목록을 보여준다.

5단계 윈도우 OS 로더 실행

 윈도우 OS 로더인 Winload는 NTDETECT와 같이 각종 장치 드라이브를 로드하고, ntosknl.exe를 실행한다.



덧글

댓글 입력 영역