Windows를 한동안 사용해 왔다면 System32 폴더를 적어도 한 번쯤은 본 적이 있을 것입니다. 그런데 64비트 PC를 사용 중이라면 C:\Windows 디렉터리 안에 두 개의 폴더가 존재한다는 점을 눈치챘을 겁니다. 하나는 System32이고, 다른 하나는 SysWOW64입니다. 이번 글에서는 이 두 폴더가 각각 어떤 역할을 하는지, 그리고 Windows 11/10에서 System32와 SysWOW64 폴더의 차이점이 무엇인지 자세히 알아보겠습니다.
System32 폴더란 무엇인가?
System32 폴더에는 시스템 운영에 필수적인 파일들이 들어 있습니다. 대부분 DLL(동적 연결 라이브러리) 형태이며, 응용 프로그램이 Windows의 다양한 기능에 접근할 때 사용하는 핵심 구성 요소들입니다. 또한 컴퓨터에 프로그램을 설치할 때 해당 프로그램이 필요로 하는 시스템 파일들이 이곳에 함께 저장되기도 합니다.
프로그램을 설치하면 크게 두 가지 일이 일어납니다. 먼저 메인 실행 파일(EXE)은 'Program Files' 폴더에 설치되고, 프로그램의 기능을 담고 있는 DLL 파일들은 System32 폴더에 저장됩니다. 이것이 Windows에서 오랫동안 유지되어 온 표준 방식입니다.
SysWOW64 폴더란 무엇인가?
64비트 PC에서 C:\Program Files (x86)이라는 폴더를 본 적이 있나요? 여기서 x86은 32비트를 의미합니다. 즉, 64비트 시스템에 32비트 프로그램을 설치할 때는 C:\Program Files (x86) 폴더가 사용되며, C:\Program Files 폴더에는 64비트 프로그램과 관련 파일들이 저장됩니다.
그렇다면 이름만 놓고 보면 SysWOW64 폴더에는 64비트 DLL만 들어 있어야 할 것 같습니다. 실제로 처음 의도도 그랬지만 결과는 달랐습니다. 직접 확인해 보면 System32 폴더에는 64비트 DLL이, SysWOW64 폴더에는 오히려 32비트 DLL이 대량으로 들어 있는 것을 발견하게 됩니다.
그렇다면 왜 64비트를 의미하는 이름의 폴더에 32비트 DLL이 들어 있고, 반대로 System32에는 64비트 라이브러리가 모여 있는 걸까요?
System32와 SysWOW64의 차이점
두 폴더 모두 시스템 폴더로서 시스템 전역에서 사용되는 DLL과 파일들을 포함하고 있다는 공통점이 있습니다. 하지만 이름과 실제 내용물이 일치하지 않는데, 그 이유는 개발자들이 과거부터 경로를 코드에 하드코딩해 왔기 때문입니다.
64비트 컴퓨터에서 64비트 프로그램은 다음과 같이 저장됩니다.
- EXE 등 주요 실행 파일 → C:\Program Files
- DLL 등 시스템 전역 파일 → C:\Windows\System32 (64비트 라이브러리)
반면 32비트 프로그램은 다음과 같이 저장됩니다.
- 주요 실행 파일 → C:\Program Files (x86)
- 시스템 전역 파일 → C:\Windows\SysWOW64
32비트 프로그램이 자신의 32비트 DLL 파일을 C:\Windows\System32에 설치하려고 하면, 운영체제가 이 요청을 자동으로 C:\Windows\SysWOW64로 리디렉션합니다. 덕분에 System32 폴더에는 64비트 라이브러리만 깔끔하게 유지될 수 있습니다.
그렇다면 Microsoft는 왜 이런 우회 방식을 택했을까요? 당시 대부분의 개발자들이 32비트 응용 프로그램을 만들 때 C:\Windows\System32 경로를 프로그램 안에 하드코딩해서 사용하고 있었습니다. Microsoft가 이 폴더의 구조를 임의로 변경했다면 수많은 기존 프로그램이 동작하지 않게 됩니다. 이를 막기 위해 Microsoft는 경로 리디렉션이라는 현명한 해결책을 선택한 것입니다.
이 방식 덕분에 개발자는 별도의 작업 없이도 모든 것이 백그라운드에서 자연스럽게 처리됩니다. 32비트 프로그램이 System32 폴더에 무언가를 요청하면, 운영체제가 조용히 SysWOW64 폴더로 연결해 줍니다. 64비트 프로그램은 기본 폴더 구조를 그대로 사용하기 때문에 별도의 리디렉션이 필요하지 않습니다.
정리하면 다음과 같습니다. Windows x64에서 System32 폴더는 64비트 DLL을 담고 있으며, 별도의 SysWOW64 폴더는 32비트 DLL을 담고 있습니다. 네이티브 64비트 프로세스는 자신이 기대하는 위치인 System32에서 DLL을 찾고, 32비트 프로세스의 경우 운영체제가 요청을 가로채 SysWOW64 폴더를 대신 보여주는 방식입니다.
흥미롭게도 동일한 원리가 Windows 레지스트리에도 적용되어, 32비트 프로그램과 64비트 프로그램의 레지스트리 항목이 서로 분리되어 관리됩니다.
SysWOW64의 'WOW'의 의미
Microsoft는 이 폴더를 System64라고 명명하는 대신 SysWOW64라는 이름을 붙였습니다. 여기서 WOW는 Windows (32-bit) on Windows (64-bit), 즉 '64비트 Windows 위에서 32비트 Windows를 구동한다'는 의미의 약자입니다. 32비트 응용 프로그램이 64비트 환경에서 실행될 수 있도록 지원한다는 뜻에서 이런 이름이 탄생했습니다.
Microsoft도 이런 상황을 미처 예상하지 못했던 것이 분명합니다. 그렇지 않았다면 System32라는 이름 자체가 붙지 않았을 테니까요. 하지만 폴더 이름을 바꾸는 대신 리디렉션 방식을 채택한 것은 훌륭한 결정이었습니다. 덕분에 소비자와 개발자 모두 64비트 환경으로 전환하면서도 기존 응용 프로그램을 그대로 사용할 수 있었습니다.
현재 32비트 시스템은 점차 사라지고 64비트 컴퓨터로 대체되고 있지만, 완전한 전환에는 아직 시간이 더 필요합니다. 어쩌면 미래에 Microsoft가 이 문제를 근본적으로 해결할지도 모릅니다. 그때는 64비트 코드에 이런 하드코딩된 관습이 남아 있지 않기를 바랄 뿐입니다.