Computer >> 컴퓨터 >  >> 시스템 >> Windows

Windows 64비트의 Sysnative 폴더란? 역할과 특징 완벽 정리

Windows 64비트의 Sysnative 폴더란?

Windows 7 64비트 버전이 출시되면서 Windows 디렉터리 내부의 폴더 구성에 중요한 변화가 생겼습니다. Windows 7, Windows 8, Windows 10의 64비트 에디션에는 SysnativeSysWOW64라는 두 개의 새로운 폴더가 추가되었습니다. 이 폴더들은 오직 64비트 Windows에서만 존재합니다. 64비트 PC에서 32비트 Windows를 실행하거나, 32비트 PC에서 32비트 Windows를 실행하는 경우에는 이 폴더들을 확인할 수 없습니다.

Windows 디렉터리 바깥에는 Program Files (x86)이라는 폴더도 있습니다. 평소 프로그램 실행 파일이 저장되는 Program Files 폴더에 익숙할 것입니다. 64비트 시스템에서는 64비트 프로그램이 Program Files 폴더에, 32비트 프로그램은 Program Files (x86) 폴더에 각각 저장됩니다. 한편 Windows는 64비트 환경에서 32비트 프로그램을 실행하기 위해 일종의 에뮬레이션(WOW64)을 활용합니다. 따라서 원하는 파일에 정확히 접근하려면 64비트 Windows의 시스템 폴더 구조를 미리 이해해 두는 것이 좋습니다.

32비트 시스템에서는 32비트 DLL이 System32 폴더에 저장되지만, 흥미롭게도 64비트 Windows에서는 64비트용 DLL이 System32 폴더에 저장됩니다. 이는 프로그래밍 편의성과 하위 호환성 확보를 위한 조치입니다. 즉, 64비트 프로그램이 코드에서 System32를 참조하면 호출 시 자동으로 64비트 DLL을 불러옵니다. 덕분에 개발자는 Windows 64비트를 위해 기존 프로그램 코드를 수정할 필요가 없습니다.

정리하자면, Windows는 64비트로 전환된 후에도 기존 프로그램이 API 호출 시 올바른 DLL을 찾을 수 있도록, Windows 디렉터리의 System32 폴더에 있던 모든 32비트 DLL을 별도의 폴더로 옮겼습니다. 문제는 32비트 응용 프로그램이 System32 폴더에 직접 접근하려 할 때 발생합니다. 해당 프로그램은 64비트 DLL을 처리하도록 설계되지 않았기 때문에 오류가 발생하거나 충돌할 수 있습니다.

함께 읽기: Panther 폴더란 무엇일까?

Windows 64비트의 SysWOW64 폴더

모든 32비트 DLL은 Windows 7, 8, 10의 64비트 버전에서 새로운 SysWOW64 폴더로 이동되었습니다. 따라서 32비트 프로그램이 32비트 DLL을 호출할 때는 SysWOW64 폴더를 찾아가야 합니다.

개발자가 일일이 프로그램 코드를 점검해 DLL 함수의 경로를 SysWOW64로 지정해야 한다고 생각할 수 있지만, Microsoft는 이미 이 문제를 해결해 두었습니다. 32비트 프로그램이 C:\Windows\System32를 호출하면 에뮬레이터가 자동으로 경로를 C:\Windows\SysWOW64로 리디렉션합니다. 즉, WOW64 에뮬레이션 덕분에 하위 호환성이 유지되고, DLL 파일 호출 시 오류 없이 32비트 프로그램이 정상적으로 실행됩니다.

함께 읽기: FOUND.000 폴더란 무엇일까?

Windows 64비트의 Sysnative 폴더

Windows 64비트의 Sysnative 폴더란? 역할과 특징 완벽 정리

반대로 32비트 프로그램이나 응용 프로그램이 64비트 DLL이 필요한 경우도 있습니다. 이때 사용해야 하는 것이 리디렉션 폴더인 Sysnative입니다. Sysnative는 System32 폴더를 가리키는 가상 폴더이자 별칭(alias)으로 생각할 수 있으며, 실제로 디스크에 물리적으로 존재하지는 않습니다.

따라서 32비트 프로그램이 64비트 DLL에 접근해야 한다면 C:\Windows\System32를 사용해서는 안 됩니다. 32비트 프로그램용 에뮬레이터가 이 경로를 SysWOW64라는 32비트 DLL 폴더로 연결해 버리기 때문입니다. 대신 C:\Windows\SysNative를 DLL 경로로 지정하세요. 경로에 Sysnative를 사용하면 SysWOW64가 아닌 System32 폴더로 리디렉션됩니다.

파일 탐색기를 열어도 C:\Windows에서 Sysnative 폴더를 찾을 수 없습니다. 폴더 옵션에서 숨김 파일 및 시스템 폴더 표시를 설정해도 마찬가지입니다. 그 이유는 64비트 Windows에서 파일 탐색기 자체가 64비트 프로그램으로 실행되며, Sysnative 폴더는 오직 32비트 프로세스에서만 보이고 접근할 수 있기 때문입니다.

요약하면 다음과 같습니다:

  1. System32: 64비트 DLL 파일이 저장된 폴더입니다.
  2. SysWOW64: 32비트 DLL 파일이 저장된 폴더이며, 32비트 프로그램은 이곳으로 자동 리디렉션됩니다.
  3. Sysnative: 32비트 프로그램이 64비트 DLL을 호출할 수 있도록 돕는 가상 리디렉션 폴더입니다.

추가 참고 자료: MSDN 공식 문서

System32와 SysWOW64 폴더의 차이점이 궁금하신가요?