윈도우7

윈도우7의 커널(kernel)을 들여다 보니.. 좀 달라졌네요...

sungtg 2009. 7. 26. 14:27
윈도우7과 xp를 멀티부팅을 구성해서 사용하고 있는데...

윈도우7을 사용하다가 xp로 부팅시켜 프로그램들을 사용하다 보니 왠지 느리다는 느낌을 받았다..
프로그램을 실행하고 종료하는 부분에서 윈도우7이 훨 빨랐다..

그래서 문뜩 윈도우7의 커널 부분이 궁금해져서 dependency walker 라는 프로그램으로
시스템 dll 파일 중에 커널 과 관계있는 advapi32.dll 파일의 속을 들여다 보기로 했다..




그런데 xp에서 볼 수 없었던 MICROSOFT-WINDOWS-SYSTEM-FILE-L1-1-0.DLL 파일등
처음 보는 DLL 파일을 볼 수 있었다




그래서 찾아보니까 윈도우7에서 커널 부분이 아키텍처가 좀 틀려졌다고 한다..

기존의 XP에서는 ADVAPI32.DLL,  KERNEL32.DLL,  NT.DLL 파일이
프로그램 실행시 메모리 확보
레지스트리에 쓰기, 삭제 등
화면구성..
하드웨어의 제어..
프로세스, 핸들... 쓰레드 구성
xp를 사용할 때 일어나는 기본적인 작업을 해주는 역할을 했었는데..

윈도우7에서는 각각의 역할을 분담을 나눠서
역할을 담담하는 시스템 코어 쪽 dll 파일을 만들어서 운영한다는 것이다..

예를 들자면 프로그램을 설치하고 레지스트리에 쓰는 부분을 담당하는 역할을 하는 dll 파일은
MICROSOFT-WINDOWS-SYSTEM-registry-localregistry-L1-1-0.DLL
이 파일이 담당해서 하는 것이다..



advapi32.dll 파일에서 수행은 하지 않고 단지 api함수를 콜해서
MICROSOFT-WINDOWS-SYSTEM-registry-localregistry-L1-1-0.DLL  에 던져서
이 dll파일이 레지스트리에 삭제, 생성, 편집등의 일을 수행을 하는것이다..

그 외에도 file에 관련된 dll, 프로세스, heap메모리, 등
dll 파일 이름에도 분산을 시켜 놓았다는 것이다..

아울러 이 시스템 dll 파일들은.. 윈도우7을 부팅시키면 자동 로드 되어서 항상 대기 상태가 되며..
xp때와 마찬가지로 거의 모든 dll 파일들이 가져다 쓰는 기본 시스템 파일이기도 하다..

이 글을 읽으면서 동시에 머리 속에 들어 온것이..
xp를 쓰면서 보면 kernel(커널)에러가 많은데.. 윈도우7에서는 이런 걱정을 덜 수 있을 것 같고..
윈도우7이 빠른 이유를 알 수 있을 것 같았다..