dll

hal.dll

sungtg 2007. 11. 27. 13:26

질문


한번 더 도움부탁해요

(Windows root)system32hal.dll.
이 파일이 없거나 손상되서 윈도우 실행을 못한데요 위 파일의 복사본을 다시

설치하라는데 컴터 키면 검은색바탕에 위의 말만 뜨네요 ㅋㅋ 부탁할께요

답변


% 부팅 윈도우원본 CD 가 있으면..
CD넣고 CD로 부팅시킨 후
복구"R" 을 눌러서
윈도우를 복구를 시키거나

% CD로 부팅 콘솔모드(도스창)을 선택해서
cd WINNT(WINDOWS)system32 엔터

del hal.dll 엔터 [기존의 HAL.DLL파일 삭제]
expand cdrom_drive:i386hal.dl_ c:windowssystem32엔터
[CD의 HAL.DLL파일이 압축되어 있으므로 압축을 풀어서 SYSTEM32 폴더에 복사]
하시고 다시 부팅.

% 다시 포맷후에 메인보드 드라이버설치 후에
윈도우를 설치를 해보는 방법이 있습니다.

HAL이란

부팅시 커널영역 중에서 드라이버를 불러오는 커널의 영역입니다.

독자적으로 메모리 공간이 따로 할당되어서
어플리케이션이 PC의 시스템 메모리, CPU, 또는 기타 하드웨어 장치에 직접 접근 하는 것을 막아줍니다
따라서 여러 장치들의 충돌이나 문제 발생을 막아줍니다.

사용자 삽입 이미지

추가


윈도우 에서 사용되는 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 옵션을 끄고 윈도우를 설치를 하는 것이 좋겠지요

어려운 내용이지만 윈도우의 내부는 이렇게 돌아갑니다.