맨위로가기

DPMI

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

DPMI(DOS Protected Mode Interface)는 1990년대 초반에 개발된, MS-DOS 환경에서 프로텍트 모드 애플리케이션을 실행하기 위한 규격이다. 마이크로소프트, 인텔 등 주요 IT 기업들의 협력을 통해 DPMI 0.9 버전이 처음 발표되었으며, 이후 1.0 버전이 공개되었다. DPMI는 VCPI(Virtual Control Program Interface)의 단점을 보완하고, 멀티태스킹 환경에서 시스템 보호 기능을 제공하는 것을 목표로 했다. DPMI 호스트는 운영 체제 또는 DOS 확장자에서 제공되며, 윈도우 3.x 및 윈도우 9x의 사용자 모드 커널에서 DPMI API를 사용했다. DPMI는 윈도우 애플리케이션의 등장으로 인해 한계에 직면했지만, 기존 DOS 익스텐더 및 프로텍트 모드 애플리케이션의 수명을 연장하는 데 기여했다.

더 읽어볼만한 페이지

  • 도스 확장자 - DJGPP
    DJGPP는 DOS 환경에서 32비트 프로그램을 개발하기 위한 자유 소프트웨어 개발 도구 모음으로, GNU 컴파일러 모음(GCC)과 여러 GNU 유틸리티를 포함하여 ANSI C 및 C99 표준, DOS API와 POSIX 유사 환경을 제공한다.
  • 도스 확장자 - DOS/32
    DOS/32는 x86 기반 PC에서 32비트 보호 모드를 제공하여 DOS 프로그램이 4GB 메모리에 접근하고 32비트 명령어 집합으로 실행 속도를 높이는 DOS 확장기이다.
  • 도스 기술 - EXE
    EXE 파일 형식은 운영 체제에 따라 다양한 종류가 있는 실행 파일의 한 형태로, DOS MZ 실행 파일에서 PE, PE32+까지 발전해 왔으며, 코드, 데이터, 스택을 별도 관리하고 재배치 항목을 통해 실행 환경에 유연하게 대응하는 특징을 가진다.
  • 도스 기술 - COM 파일
    COM 파일은 CP/M 및 MS-DOS 운영체제에서 사용된 실행 파일 형식으로, 메타데이터 없이 코드와 데이터로 구성되어 64KB 크기 제한을 가지며, 단순한 구조로 극소의 실행 파일을 만들 수 있지만 보안 취약점도 존재한다.
DPMI
DOS 보호 모드 인터페이스 정보
명칭DOS 보호 모드 인터페이스
약칭DPMI
분류응용 프로그램 프로그래밍 인터페이스
시작 연도1989년
관련 표준해당 사항 없음
웹사이트해당 사항 없음
조직DPMI 위원회
상태게시됨
버전해당 사항 없음
버전 날짜해당 사항 없음

2. 역사

1989년, 마이크로소프트의 랄프 라이프(Ralph Lipe)가 DPMI 규격 초안을 발표했다. 이 초안은 윈도우 3.0의 386 확장 모드에 대한 DPMI 시제품 버전을 기반으로 했다. 1990년, DPMI 위원회가 결성되어 DPMI 버전 0.9 규격을 발표했다. 이 규격은 VCPI의 단점을 극복하고, 보호 모드 응용 프로그램 개발을 위한 표준을 제공하기 위해 제정되었다.

DPMI 위원회는 인텔, 마이크로소프트, 볼랜드, 로터스 등 주요 IT 기업들로 구성되었다. 1991년, DPMI 위원회는 DPMI 1.0 규격을 발표했으나, 윈도우에서 구현된 "진정한 DPMI"의 일부 기능은 포함되지 않았다.

DPMI는 확장된 DOS 응용 프로그램 소프트웨어를 보호 모드와 확장 메모리에서 실행하도록 맞춤화되었지만, 상주 시스템 확장에는 적합하지 않았다. 1992년경, 디지털 리서치/노벨에서 개발한 DPMS라는 또 다른 규격은 수정된 DOS 드라이버 소프트웨어를 확장 메모리로 쉽게 재배치하고 보호 모드에서 실행하여 기존 메모리 풋프린트를 작은 DOS 메모리 스텁으로 줄이는 요구 사항을 구체적으로 해결했다.

DPMI는 MS-DOS의 차세대 운영 체제가 될 멀티태스킹 OS (또는 의사 멀티태스킹 OS)의 가상 DOS 머신 환경에서 메모리 보호 등 멀티태스킹 환경에 필수적인 시스템 보호를 수행한 후, 프로텍트 모드 애플리케이션의 실행 환경을 제공하는 규격이다. DPMI 서버가 모든 프로텍트 모드에 관한 관리를 담당하기 때문에 VCPI에 비해 많은 펑션 콜을 제공한다. 그 결과, DPMI는 VCPI보다 훨씬 무거운 환경이 되었다. 하지만, DPMI 서버가 무거워진 대신, DPMI 전용 클라이언트는 기존의 일반적인 DOS 확장기보다 훨씬 가벼워졌다는 장점도 있었다.

DPMI 1.0 위원회는 1990년부터 1991년까지 활동했으며, 다음과 같은 12개의 그룹으로 구성되었다.

참여 기업
볼랜드(볼랜드 C, 터보 파스칼)
IBM(PC DOS, OS/2)
AI 아키텍츠/에르고 컴퓨터 솔루션즈/이클립스 컴퓨터 솔루션즈/에르고 컴퓨팅(OS/286, OS/386 DOS 확장기)
인텔리전트 그래픽스 코퍼레이션(VM/386 멀티 유저 DOS)
인텔(286, 386, 486 마이크로프로세서)
로커스 컴퓨팅 코퍼레이션(Merge)
로터스 디벨롭먼트 코퍼레이션(로터스 1-2-3)
마이크로소프트(MS-DOS, 마이크로소프트 윈도우)
파 라 소프트웨어(DOS, DOS, TNT)
피닉스 테크놀로지스(피닉스 BIOS, PMate, PForCe, Plink-86)
쿼터덱 오피스 시스템즈(QEMM, DESQview, DESQview/X)
래셔널 시스템즈/텐베리 소프트웨어(DOS/16M, DOS/4G, DOS/4GW DOS 확장기)


2. 1. VCPI와의 관계

VCPI(가상 제어 프로그램 인터페이스)는 DPMI와 같은 기능을 수행하기 위해 더 일찍 만들어졌지만, 서로 호환되지 않는 방식이었다. VCPI는 32비트 모드에서만 작동하는 제한이 있었다. VCPI는 CEMM, QEMM, EMM386과 같은 도스의 확장 메모리 관리자가 제공했다.

DPMI가 등장하면서 VCPI는 점차 사용되지 않게 되었는데, 다음과 같은 주요한 단점들이 있었기 때문이다.

  • 윈도우 3.0의 네이티브 보호 모드(386 확장 모드)에서 실행되는 도스 프로그램을 지원하지 않았다.
  • VCPI는 Ring 0에서 프로그램을 실행하여 x86 보호의 목적을 무효화했다.
  • OS/2 2.0 이후에서는 작동하지 않았다. 윈도우 3.x만 VCPI를 표준/리얼 모드에서 지원했다.
  • 공간 제약이 있었다. 보호 모드 도스 프로그램이 가상 8086 모드 작업 안에서 이미 실행되고 있는 도스에서 프로그램이 시작했을 때에만 실행을 허용했다.


이러한 문제점들을 해결하기 위해 DPMI 규격이 개발되었다. DPMI는 VCPI를 확장한 규격이라는 오해가 있지만, 실제로는 VCPI와 호환성이 없으며 독립적인 규격이다. VCPI는 가상 86 모드를 이용한 규격이므로 386 이상의 CPU (IA-32)가 반드시 필요했지만, DPMI는 일부 기능을 제외하고 80286에서도 동작하는 규격이다. DPMI는 시스템 보호를 위해 프로텍트 모드 애플리케이션을 특권 레벨 1-3에서 실행시키고, DPMI 서버가 모든 프로텍트 모드 관리를 담당하여 VCPI보다 많은 펑션 콜을 제공한다.

3. 기능

DPMI는 80286 시리즈 이상의 프로세서에서 프로그램이 보호 모드로 실행될 수 있도록 하고, 실 모드에서 호출할 수 있는 API를 제공한다. DPMI는 메모리 등 다양한 리소스를 관리하는 기능을 제공하며, DPMI를 사용하는 프로그램은 멀티태스킹 운영 체제에서 작동할 수 있다. 이때 OS 커널은 여러 애플리케이션 간에 리소스를 분배한다. DPMI 서비스는 16비트, 32비트 또는 "유니버설"일 수 있으며, ''DPMI 커널'', ''DPMI 호스트'', ''DPMI 서버''라고 불린다.

DPMI는 슈퍼바이저 모드에서 구현되어야 하는 기능만 제공하며, 싱글 태스킹 마이크로커널과 유사하다. 나머지 기능은 DPMI를 사용하는 프로그램에서 실 모드 DOS 및 BIOS 서비스를 호출하여 사용할 수 있다. DPMI API 자체는 DOS에 거의 의존하지 않으며, DOS 메모리를 관리하는 3가지 함수와 "DPMI"의 "D"만이 DOS에 종속되게 만든다.

DPMI API의 주요 용도는 DOS 확장자가 호스트 OS에 구애받지 않는 환경을 제공하도록 하는 것이다. DOS 확장자는 DPMI 커널의 존재 여부를 확인하고, 아직 설치되지 않은 경우에만 자체 커널을 설치한다. 이를 통해 DOS 확장 프로그램은 자체 DPMI 커널을 제공하는 멀티태스킹 OS에서 실행되거나, 베어 메탈 DOS에서 직접 실행될 수 있으며, 이 경우 DOS 확장자는 자체 DPMI 커널을 사용한다.

DPMI는 시스템 보호를 위해 프로텍트 모드 애플리케이션을 특권 레벨 1-3에서 실행시킨다. DPMI 애플리케이션은 특권 명령을 직접 사용할 수 없으므로, DPMI 서버가 모든 프로텍트 모드 관리를 담당한다. 따라서 VCPI보다 많은 펑션 콜을 제공하고, 더 무거운 환경이 되었다.[1] 하지만 DPMI 전용 클라이언트는 기존의 일반적인 DOS 확장기보다 훨씬 가벼워졌다는 장점이 있다.[1] DPMI는 VCPI를 확장한 규격이 아니라 VCPI와 호환성이 없는 독립적인 규격이다. VCPI는 가상 86 모드를 이용하는 규격이므로 386 이상의 CPU (IA-32)가 필수이지만, DPMI는 일부 기능을 제외하고 80286에서도 동작한다.[1]

4. DPMI 호스트

DPMI 호스트는 운영 체제(''가상 DPMI 호스트'') 또는 DOS 확장자(''실제 DPMI 호스트'')에서 제공된다. DPMI 커널은 DOS/4GW, DOS/32A와 같은 DOS 확장자의 일부이거나 CWSDPMI 또는 HDPMI와 같이 별도로 존재할 수 있다. Windows 3.x 및 9x의 사용자 모드 커널은 DOS 확장자로 구축되어 있으므로, Windows의 링 0 커널에서 제공하는 DPMI API에 전적으로 의존한다.

퀄리타스 386MAX의 베타 버전은 "진정한 DPMI"를 구현했지만, 정식 출시 제품에서는 이 기능이 비활성화되었다. 그러나 386MAX 코드를 기반으로 한 밥 스미스(Bob Smith)의 DPMIONE은 이를 수행할 수 있다.

DR DOS "Panther", "StarTrek"[1], 노벨 DOS 7, 칼데라 오픈도스 및 DR-DOS 7.02 이상 버전의 EMM386.EXE 메모리 관리자는 `/DPMI[=ON]` 옵션으로 로드될 때 DPMI를 내장 지원한다. 멀티유저 DOS, 시스템 매니저 및 REAL/32도 DPMI를 지원한다.

가장 유명한 별도의 DPMI 커널은 CWSDPMI이다. "TRAN" aka 토마스 파이텔(Thomas Pytel)의 PMODE라는 또 다른 변종은 1990년대 데모 씬 동안 32비트 프로그래머들에게 인기가 있었다. 많은 게임은 Rational Systems가 DOS/4G의 하위 집합으로 개발하여 Watcom C 컴파일러와 함께 배포된 DOS/4GW를 사용했다.

HDPMI (HX DOS 익스텐더의 일부)는 "DOS API 변환"을 제공하며 거의 완전한 DPMI 1.0 구현을 제공한다.

5. 한계 및 문제점

DPMI의 가장 큰 문제점은 등장 시기가 너무 늦었다는 것이다. Windows 3.0의 등장으로 GUI 환경이 부상하면서, DPMI 애플리케이션보다는 Windows 애플리케이션으로 개발하는 것이 더 바람직한 상황이 되었다.

처음에 공개된 사양의 버전이 0.9라는 점도 문제였다. DPMI 0.9는 기능이 부족하여, 각 DOS 익스텐더 벤더들은 자체 DOS 익스텐더를 DPMI 0.9에 대응시키면서도 부족한 기능을 보완하기 위해 가상 장치 드라이버(VxD)를 동시에 개발해야 했다.

DPMI는 DOS와 IBM PC에 특화된 "메서드"였다. 다른 컴퓨터 유형은 16비트에서 32비트로 업그레이드되었으며, 새로운 32비트 API와 새로운 메모리 관리/주소 지정 기능을 갖춘 운영 체제로 업그레이드하여 고급 프로그램 지원을 제공했다.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com