본문 바로가기

컴퓨터 이야기/IT 이야기

Windows 레지스트리(Registry)

  레지스트리(Registry)를 사전에서 찾아보면 '등록, 등기, 등기소'라고 풀이되어 있는데, 컴퓨터에서 말하는 레지스트리란 윈도우즈 환경 설정과 관련된 각종 정보가 등록된 곳입니다. 이곳에 윈도우즈 환경을 비롯해 관련 정보가 등록되어 있지 않으면 윈도우즈가 제대로 동작할 수 없습니다.

  레지스트리를 한마디로 정의하자면 '시스템의 모든 설정 자료를 모아두는 중앙 저장소'라고 할 수 있습니다. 윈도우즈가 작동하는 데 필요한 각종 구성과 설정, 프로그램 관련 정보 등을 모두 저장하고 있기 때문입니다. 따라서 윈도우즈의 부팅에서 로그인, 응용 프로그램의 실행에 이르기까지, 윈도우즈와 관련된 모든 작업은 레지스트리에 기록된 정보를 바탕으로 이루어집니다. 레지스트리를 윈도우즈 운영체제의 핵심이라고 말하는 것이 이 때문입니다.

  그렇다면, 레지스트리는 어떤 내용을 담고 있는지 좀 더 구체적으로 알아보겠습니다. 우선 만약 윈도우즈에 설치한 각종 프로그램이 설정 자료를 저마다 다른 파일에 저장한다면 어떤 일이 벌어질지 상상해 보세요. 아마 특정 프로그램과 관련된 설정 값을 수정할 때마다 어떤 파일을 열어야 할지 몰라 갈팡질팡하게 될 것입니다. 이런 문제를 해결하려고 등장한 것이 바로 레지스트리입니다. 앞에서도 언급했듯이 레지스트리는 윈도우즈 및 윈도우즈용 응용 프로그램의 설정 자료를 모두 담고 있어 PC에 설치된 모든 프로그램을 한꺼번에 관리할 수 있다는 장점을 가지고 있습니다. 반면 윈도우즈 부팅 과정에서 사용되는 시스템 설정 데이터까지 모두 보관하고 있다 보니 일단 손상되면 윈도우즈 자체가 먹통이 되어 버리는 단점도 가지고 있습니다.

  윈도우즈는 부팅될 때마다 시스템에 설치된 장치를 검색해 바뀌거나 추가된 정보를 레지스트리에 기록합니다. 윈도우즈 2000이나 윈도우즈 XP에서는 하드웨어 인식기인 'Ntdetect.com'과 윈도우즈 커널인 'Ntoskrnl.exe'에 저장합니다. 윈도우즈 커널은 윈도우즈가 부팅될 때 레지스트리에서 장치 드라이버(디바이스 드라이버)에 대한 정보를 읽어들여 윈도우즈의 실행 환경을 구성합니다. 이 과정에서 플러그&플레이 관리자는 레지스트리에서 장치마다 사용하는 시스템 자원에 대한 정보를 검색하고 적당한 INF 파일을 선택한 뒤 드라이버를 구동합니다. 장치 구동에 필요한 INF 파일이 없을 때는 새로 드라이버를 설치하도록 안내하기도 합니다. 이런 과정을 거쳐 부팅이 끝나면 바뀌거나 추가된 시스템 정보를 다시 레지스트리에 기록합니다. 이 때문에 레지스트리가 손상되면 윈도우즈가 부팅조차 안 됩니다.

  물론 부팅 과정에만 레지스트리가 필요한 것은 아닙니다. 윈도우즈가 실행된 이후에도 윈도우즈 및 각종 응용 프로그램은 끊임없이 레지스트리에 등록된 정보를 참조합니다. 또 응용 프로그램을 새로 설치하는 때도 해당 프로그램이 실행되는 데 필요한 정보가 레지스트리에 기록됩니다. 이 때문에 윈도우즈에서 프로그램을 삭제하면 레지스트리에 기록되어 있는 프로그램 관련 정보도 함께 지워지는 것입니다.

레지스트리의 탄생과 발전 과정

  레지스트리라는 개념이 처음 도입된 것은 GUI(Graphic User Interface) 방식의 운영체제인 윈도우즈 3.1이 등장하면서부터입니다. 그 후 윈도우즈 운영체제가 버전업을 거듭하면서 레지스트리도 점차 지금과 같은 모습으로 발전해 왔습니다.

  도스 시절에는 레지스트리라는 개념 자체가 없었기 때문에 도스용 응용 프로그램들은 하드웨어와 운영체제 설정 정보를 모두 'config.sys', 'autoexec.bat' 등 별도의 파일로 보관했습니다. 그러다가 윈도우즈 3.0이 개발되면서 운영체제의 선택 사항과 설정 자료같이 시스템에 영향을 줄 수 있는 정보를 하나로 묶는 '묶음(set)'이라는 개념이 도입되었습니다. 시스템의 하드웨어 설정과 장치 드라이버, 응용 프로그램 설정 등 비슷한 성격의 정보를 묶어서 'progman.ini', 'control.ini', 'win.ini', 'system.ini' 파일에 담아두는 것이었습니다. 이런 4개의 파일을 초기화(INItial) 파일 즉, 'INI 파일'이라고 부르는데, 이 파일은 메모장이나 워드 패드 같은 일반 문서 편집 프로그램에서도 내용을 수정할 수 있다는 것이 레지스트리와 다릅니다.

  윈도우즈 3.0에 응용 프로그램을 설치하면 각종 설정과 사용 환경을 저장하려고 1~2개 이상의 INI 파일이 생성됩니다. 가령 윈도우즈에 5개의 프로그램을 설치한다면 무려 10개 이상의 INI 파일이 새로 만들어지는 셈입니다. 이처럼 응용 프로그램마다 별도로 INI 파일을 만들다 보니 관리에 어려움이 많았습니다. 또 쉽게 편집할 수 있는 만큼 손상되기도 쉽고 크기가 64KB로 제한적이라 오직 한 사람의 사용 환경만 담을 수 있다는 한계가 있었습니다.

  윈도우즈 3.1에는 응용 프로그램 사이에 자료 공유가 가능하게 해주는 OLE(Object Linking and Embededing) 기능과 드래그&드롭(Drag and Drop) 기능이 추가되었습니다. 이런 기능들을 제대로 사용하려면 운영체제에 설치된 응용 프로그램이 같은 정보를 제공해야 합니다. 그래서 등장한 것이 바로 레지스트리의 원조로 불리는 '등록 데이터베이스(Registration Database)'입니다. 윈도우즈 3.1의 레지스트리는 편집이 불가능하고 'reg.dat'라는 파일 하나에만 자료를 저장하는 등, 이전의 INI 파일에 비해 훨씬 진화된 모습을 보여 주었습니다.

  운영체제뿐만 아니라 각종 응용 프로그램도 레지스트리에 등록된 정보를 통해 작업을 수행하게 되면서 좀 더 강력하고 유연한 레지스트리가 필요해졌습니다. 1993년 선보인 마이크로소프트의 윈도우즈 NT라는 사무용 운영체제는 여러 명이 한 대의 PC를 사용할 수 있도록 작업 공간은 물론이고 프린터와 스캐너 같은 장치까지 공유하는 유닉스와 경쟁하려면 보다 발전된 형태의 레지스트리를 담아야 했습니다. 윈도우즈 NT에서는 하나의 컴퓨터를 여러 명의 사용자가 사용하는 다중 사용자 환경이 구현되었는데, 이에 따라 보안과 관련된 문제가 발생했습니다. 결국, 윈도우즈 NT 컴퓨터를 사용하는 모든 사용자는 각각 보안 ID를 하나씩 가지게 되었고, 사용자별로 환경을 저장할 수 있는 곳이 필요해졌습니다. 여러 명의 사용자와 관련된 설정을 담으려고 레지스트리의 크기 제한이 없어지고 하나의 파일에 의존하지 않고 여러 개의 파일에 나누어 저장하게 된 것입니다.