윈도우 에서 사용되는 HAL 파일
컴퓨터가 부팅이 되면서
ntldr -> boot.ini -> NTOSKRNL.EXE(hal.dll, bootvid.dll)을 올리게 되는데 이 과정에서 에러가 나는 것입니다.
그러므로 boot.ini도 다시 만들어야 하는 경우도 있습니다. 윈도우cd의 복구 콘솔로 제대로 갱신이 될 수 있습니다. 질문에서 보면 여기 까지는 제대로 된 것 같은데 하드웨어 드라이버를 탑재시킬 메모리를 잡는 과정에서 에러가 나는 것입니다. 흔히 많이 보는 블루스크린(부팅때 파란화면)이 바로 이 증상입니다.
아래그림은 윈도우에서 메모리를 어떻게 사용하는지를 보여주는 그림입니다. 크게 user mode와 kernel mode로 나누어져 사용됩니다.
USER MODE는
winlogon.exe(로그온) service.exe(서비스) 네트워크 프린터서비스 탐색기 도스, 윈도우3.1 프로그램을 사용하는 가상영역 subsystem (윈도우와 다른 장치와 호환을 위해 만든시스템영역)으로 나누고
KERNEL MODE는
실행 : 메모리관리, 실행파일실행, DLL파일실행 커널 : 인터럽트처리, 스레드 스케쥴관리 디바이스드라이버관리 : 파일시스템, 네트워크드라이버 HAL(Hardware Abstraction layer): 독립적인 공간을 유지하면서 드라이버관리 GUI(graphic user interface) : 윈도우의 기본인 gui 인터페이스를 user mode와 연결
여기서 윈도우에서는 위에서와 같이 2가지로 메모리를 관리하는데 따라서 각 주변기기의 장치 드라이버도 2가지로 나뉘어서 관리가 됩니다.
.vxd라고 하는 파일을 보셨을 겁니다. 가상드라이버라고 하는데 과거 98이나 도스시절때 사용하는 드라이버를 nt에 맞게끔 고쳐진 파일들입니다. 이 파일과 프린터 드라이버는 user mode에서 실행이 되고
kernel mode에서 사용되는 드라이버는 .sys 파일들로 파일시스템, 그래픽드라이버, 스트리밍드라이버, 등이 사용이 됩니다.
사용자가 프로그램을 사용할 때는 user mode와 kernel mode 사이에서 유기적으로 드라이버를 주고 받기 때문에 사용자는 전혀 불편없이 윈도우를 사용하게 되는 것입니다.
지금 탐색기를 열어서 syste32에 hal.dll 이 있는지 halacpi.dll 이 있는지 확인해보세요.
hal.dll만 있다면 스탠다드 pc로 구분짓고 halacpi.dll 이 있으면 acpi pc로 구분져서 hal의 영역을 잡는데.. halacpi에서 문제가 많이 발생합니다.
cmos에서 acpi 옵션을 끄고 윈도우를 설치를 하는 것이 좋겠지요
어려운 내용이지만 윈도우의 내부는 이렇게 돌아갑니다.
|