도스 API
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
도스 API는 86-DOS 및 MS-DOS 운영체제에서 사용된 시스템 호출 집합으로, CP/M과의 호환성을 위해 설계되었다. MS-DOS 2.0에서 유닉스 개념을 도입하여 확장되었으며, MS-DOS 5 이후 변경 사항 없이 유지되었다. 윈도우 9x는 부트로더로 도스를 사용하고, 윈도우 NT 계열 운영체제는 가상 머신을 통해 도스 API를 지원한다. DOS API는 인터럽트 벡터와 INT 21h 서비스를 통해 다양한 기능을 제공하며, MS-DOS 및 호환 운영체제에서 지원된다.
더 읽어볼만한 페이지
- 운영 체제 API - GEM (소프트웨어)
GEM은 Digital Research가 개발한 GUI로, MS-DOS 환경에서 매킨토시와 유사한 경험을 제공하려 했으나, 애플과의 소송과 오픈 소스화 이후 FreeGEM, OpenGEM 등의 파생 프로젝트로 개발이 이어졌다. - 운영 체제 API - IBM 탑뷰
IBM TopView는 1985년 IBM이 출시한 MS-DOS 기반 멀티태스킹 운영 환경으로, 프로그램 동시 실행 기능과 PIF 파일 형식을 제공했으나, 메모리 문제, 호환성 문제, 사용자 인터페이스 문제 등으로 경쟁력을 잃어 단종되었고, 이후 MS-DOS와 윈도우 개발에 영향을 미쳤다. - 인터럽트 - 프로그래머블 인터럽트 컨트롤러
프로그래머블 인터럽트 컨트롤러(PIC)는 컴퓨터 시스템에서 인터럽트 요청을 관리하며, 인터럽트 요청 레지스터 등을 사용하여 인터럽트를 처리하고 다양한 우선순위 체계를 지원하며, x86 아키텍처에서는 인텔 8259가 널리 사용되었다. - 인터럽트 - 인텔 8259
인텔 8259는 하드웨어 장치의 인터럽트 요청을 관리하여 CPU에 전달하는 인터럽트 컨트롤러이며, 최대 64개의 IRQ를 제공하기 위해 캐스케이딩될 수 있고, DOS 및 Windows와의 호환성을 위해 다양한 작동 모드를 지원한다. - 도스 기술 - EXE
EXE 파일 형식은 운영 체제에 따라 다양한 종류가 있는 실행 파일의 한 형태로, DOS MZ 실행 파일에서 PE, PE32+까지 발전해 왔으며, 코드, 데이터, 스택을 별도 관리하고 재배치 항목을 통해 실행 환경에 유연하게 대응하는 특징을 가진다. - 도스 기술 - COM 파일
COM 파일은 CP/M 및 MS-DOS 운영체제에서 사용된 실행 파일 형식으로, 메타데이터 없이 코드와 데이터로 구성되어 64KB 크기 제한을 가지며, 단순한 구조로 극소의 실행 파일을 만들 수 있지만 보안 취약점도 존재한다.
| 도스 API | |
|---|---|
| MS-DOS API | |
| 유형 | API |
| 운영 체제 | MS-DOS |
| 플랫폼 | x86 |
| 첫 출시 | 1981년 |
| 최신 버전 | 7.1 (Windows 98) |
| 라이선스 | 독점 소프트웨어 |
2. 역사
DOS API는 1981년 MS-DOS 1.0과 함께 처음 등장하여 1990년대 중반까지 발전했다. 초기에는 CP/M과의 호환성을 위해 설계되었으며, 파일 제어 블록(FCB)을 이용하여 파일에 접근했다. 이후 MS-DOS 2.0에서 파일 핸들, 계층 디렉터리, 장치 입출력 제어와 같은 유닉스 개념이 도입되면서 크게 확장되었다.[1] MS-DOS 3.1에서는 네트워크 리다이렉터 지원이, MS-DOS 3.31에서는 32MB 이상의 하드 디스크 지원이 추가되었다. MS-DOS 5에서는 상위 메모리 블록(UMB) 사용 지원이 추가되었고, 이후 DOS API에는 큰 변화가 없었다.
2. 1. 초기 (MS-DOS 1.x ~ 2.x)
86-DOS와 MS-DOS 1.0의 초기 DOS API는 CP/M과 기능적으로 호환되도록 설계되었다. 파일은 파일 제어 블록(FCB)을 사용하여 접근했다. DOS API는 MS-DOS 2.0에서 파일 핸들을 사용한 파일 접근, 계층적 디렉터리, 장치 입출력 제어 등 유닉스의 여러 개념을 포함하여 크게 확장되었다.[1]2. 2. 발전 (MS-DOS 3.x ~ 6.x)
MS-DOS 2.0에서는 파일 핸들을 사용한 파일 접근, 계층적 디렉터리, 장치 입출력 제어 등 유닉스의 여러 개념을 도입하여 도스 API가 크게 확장되었다.[1] DOS 3.1에서는 네트워크 리디렉터 지원이 추가되었다. MS-DOS 3.31에서는 32MB보다 큰 하드 디스크를 지원하도록 INT 25h/26h 함수가 개선되었다. MS-DOS 5에서는 상위 메모리 블록(UMB) 사용 지원이 추가되었다. 이후 독립적인 DOS 운영 체제 개발이 중단되면서 MS-DOS 5 이후 DOS API는 변경되지 않았다.2. 3. 윈도우와의 통합 (MS-DOS 7.x ~ 8.0)
윈도우 9x에서 도스는 보호 모드 운영 체제와 그래픽 셸(GUI)을 불러들이는 부트로더로 사용되었다. 가상 도스 머신(VDM)을 통해 접근할 수 있었으나, 윈도우를 로드하지 않고 리얼 모드 MS-DOS 7.0으로 직접 시동할 수도 있었다. 도스 API는 강화된 국제화 지원 및 긴 파일 이름 지원으로 강화되었는데, 긴 파일 이름 지원은 VDM을 통해서만 이용할 수 있었다. 윈도우 95 OSR2부터는 도스가 7.1로 업데이트되면서 FAT32 지원이 추가되었으며, DOS API가 이를 지원하는 기능이 추가되었다. 윈도우 98 및 윈도우 미 또한 MS-DOS 7.1 API를 포함하고 있었지만, MS-DOS 8.0을 표방했다.MS-DOS 버전과 윈도우 버전은 다음과 같다.
윈도우 NT 계열 운영 체제(윈도우 XP, 윈도우 비스타, 윈도우 7, 윈도우 8 등)는 MS-DOS 기반은 아니지만 가상 머신 NTVDM을 사용하여 도스 API를 처리한다.[1] NTVDM은 가상 8086 모드(80386 이상의 프로세서에서 이용할 수 있는 보호 모드 안의 리얼 모드의 에뮬레이션)에서 도스 프로그램을 실행함으로써 동작하며, 도스 5.0 API를 지원한다.[1] 리눅스용 DOSEMU는 비슷한 접근 방식을 사용한다.[1]
DOS API는 인터럽트 벡터를 통해 호출되는 함수들의 집합으로 구성된다. 각 함수는 특정 인터럽트 벡터에 연결되어 있으며, 해당 인터럽트를 호출하면 연결된 함수가 실행된다. 주요 인터럽트 벡터와 INT 21h 서비스에 대한 자세한 내용은 하위 섹션에서 확인할 수 있다.
3. 윈도우 NT와 DOS API
4. DOS API의 구성
4. 1. 인터럽트 벡터
다양한 프로그램(PRINT, MSCDEX, DOSKEY, APPEND 등)에 추가됨