맨위로가기

도스 API

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의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 버전과 윈도우 버전은 다음과 같다.

MS-DOS 버전포함된 윈도우 버전
7.0윈도우 95
7.1윈도우 95 OSR2, 윈도우 98, 윈도우 98 SE
8.0윈도우 미


3. 윈도우 NT와 DOS API

윈도우 NT 계열 운영 체제(윈도우 XP, 윈도우 비스타, 윈도우 7, 윈도우 8 등)는 MS-DOS 기반은 아니지만 가상 머신 NTVDM을 사용하여 도스 API를 처리한다.[1] NTVDM은 가상 8086 모드(80386 이상의 프로세서에서 이용할 수 있는 보호 모드 안의 리얼 모드의 에뮬레이션)에서 도스 프로그램을 실행함으로써 동작하며, 도스 5.0 API를 지원한다.[1] 리눅스DOSEMU는 비슷한 접근 방식을 사용한다.[1]

4. DOS API의 구성

DOS API는 인터럽트 벡터를 통해 호출되는 함수들의 집합으로 구성된다. 각 함수는 특정 인터럽트 벡터에 연결되어 있으며, 해당 인터럽트를 호출하면 연결된 함수가 실행된다. 주요 인터럽트 벡터와 INT 21h 서비스에 대한 자세한 내용은 하위 섹션에서 확인할 수 있다.

4. 1. 인터럽트 벡터

다양한 프로그램(PRINT, MSCDEX, DOSKEY, APPEND 등)에 추가됨


4. 2. INT 21h 서비스

`INT 21h`는 도스 API의 핵심적인 인터럽트이며, 다양한 기능을 제공하는 함수들을 호출하는 데 사용된다. `INT 21h`를 호출할 때, AH 레지스터에 기능 번호를 설정하고, 필요한 경우 다른 레지스터에 추가적인 매개변수를 설정한다.

다음은 `INT 21h`를 통해 제공되는 주요 기능들이다.

AH 값설명버전
00h프로그램 끝내기1.0 이상
01h문자 입력1.0 이상
02h문자 출력1.0 이상
03h보조 입력1.0 이상
04h보조 출력1.0 이상
05h프린터 출력1.0 이상
06h직접 콘솔 입출력1.0 이상
07hecho 없이 직접 콘솔 입력1.0 이상
08hecho 없이 콘솔 입력1.0 이상
09h문자열 표시1.0 이상
0Ah버퍼 처리된 키보드 입력1.0 이상
0Bh입력 상태 가져오기1.0 이상
0Ch입력 버퍼 및 입력 플러시(flush) 처리1.0 이상
0Dh디스크 초기화1.0 이상
0Eh기본 드라이브 설정1.0 이상
0Fh파일 열기1.0 이상
10h파일 닫기1.0 이상
11h첫 번째 파일 찾기1.0 이상
12h다음 파일 찾기1.0 이상
13h파일 삭제1.0 이상
14h연속 읽기1.0 이상
15h연속 쓰기1.0 이상
16h파일 만들기/끊기1.0 이상
17h파일 이름 변경1.0 이상
19h기본 드라이브 가져오기1.0 이상
1Ah디스크 전송 주소 설정1.0 이상
1Bh기본 드라이브에 대한 할당 정보 가져오기1.0 이상
1Ch지정된 드라이브에 대한 할당 정보 가져오기1.0 이상
1Fh기본 드라이브에 대한 디스크 변수 블록 가져오기1.0 이상
21h랜덤 읽기1.0 이상
22h랜덤 쓰기1.0 이상
23h레코드의 파일 크기 가져오기1.0 이상
24h랜덤 레코드 번호 설정1.0 이상
25h인터럽트 벡터 설정1.0 이상
26hPSP 만들기1.0 이상
27h랜덤 블록 읽기1.0 이상
28h랜덤 블록 쓰기1.0 이상
29h파일 이름 분석(Parse)1.0 이상
2Ah날짜 가져오기1.0 이상
2Bh날짜 설정1.0 이상
2Ch시간 가져오기1.0 이상
2Dh시간 설정1.0 이상
2Eh유효 플래그 설정1.0 이상
2Fh디스크 전송 주소 가져오기2.0 이상
30h도스 버전 가져오기2.0 이상
31h종료 후 상주2.0 이상
32h지정된 드라이브에 대한 디스크 변수 블록 가져오기2.0 이상
33hCtrl-Break 가져오기 또는 설정2.0 이상
34hInDOS 플래그 포인터 가져오기2.0 이상
35h인터럽트 벡터 가져오기2.0 이상
36h디스크 남은 공간 가져오기2.0 이상
37h스위치 문자 가져오기 또는 설정2.0 이상
38h국가 정보 가져오기 또는 설정2.0 이상
39h하위 디렉터리 만들기2.0 이상
3Ah하위 디렉터리 제거2.0 이상
3Bh현재 디렉터리 변경2.0 이상
3Ch파일 만들기 또는 끊기2.0 이상
3Dh파일 열기2.0 이상
3Eh파일 닫기2.0 이상
3Fh파일 또는 장치 읽기2.0 이상
40h파일 또는 장치 쓰기2.0 이상
41h파일 삭제2.0 이상
42h파일 포인터 이동2.0 이상
43h파일 특성 가져오기 또는 설정2.0 이상
44h장치에 대한 입출력 제어2.0 이상
45h핸들 복제2.0 이상
46h핸들 우회2.0 이상
47h현재 디렉터리 가져오기2.0 이상
48h메모리 할당2.0 이상
49h메모리 해제2.0 이상
4Ah메모리 다시 할당2.0 이상
4Bh프로그램 실행2.0 이상
4Ch반환 코드로 끝내기2.0 이상
4Dh프로그램 반환 코드 가져오기2.0 이상
4Eh첫 번째 파일 찾기2.0 이상
4Fh다음 파일 찾기2.0 이상
50h현재의 PSP 설정2.0 이상
51h현재의 PSP 가져오기2.0 이상
52h도스 내부 포인터 가져오기 (SYSVARS)2.0 이상
53h디스크 변수 블록 만들기2.0 이상
54h유효 플래그 가져오기2.0 이상
55h프로그램 PSP 만들기2.0 이상
56h파일 이름 변경2.0 이상
57h파일 날짜 및 시간 가져오기 또는 설정2.0 이상
58h할당 전략 가져오기 또는 설정2.11 이상
59h확장 오류 정보 가져오기3.0 이상
5Ah고유 파일 만들기3.0 이상
5Bh파일 새로 만들기3.0 이상
5Ch파일 잠금 / 잠금 해제3.0 이상
5Dh파일 공유 기능3.0 이상
5Eh네트워크 기능3.0 이상
5Fh네트워크 우회 기능3.0 이상
60h파일 이름 제한3.0 이상
62h현재의 PSP 가져오기3.0 이상
63hDBCS 리드 바이트 테이블 포인터(lead byte table pointer) 가져오기3.0 이상
64h외부 이벤트 플래그 대기 설정3.2 이상
65h확장 국가 정보 가져오기3.3 이상
66h코드 페이지 가져오기 또는 설정3.3 이상
67h핸들 수 설정3.3 이상
68h파일 위탁(commit)3.3 이상
69h미디어 ID 가져오기 또는 설정4.0 이상
6Ah파일 위탁(commit)4.0 이상
6Ch파일 확장 열기/만들기4.0 이상


5. DOS API 지원 운영체제

다음은 DOS API를 지원하는 운영 체제 목록이다.



윈도우 9x에서는 DOS가 프로텍트 모드 시스템과 GUI 셸을 로드하는 부트 로더로 사용되었다. DOS는 일반적으로 VDM에서 액세스되었지만, 윈도우를 로드하지 않고 리얼 모드 MS-DOS 7.0으로 부팅하는 것도 가능했다. DOS API는 확장 국제화 지원과 LFN 지원으로 확장되었지만, LFN은 VDM에서만 이용 가능했다. 윈도우 95 OSR2에서는 DOS가 7.1로 업데이트되어 FAT32 지원이 추가되었으며, DOS API에 기능이 추가되었다.

6. 평가 및 영향

DOS API는 초기 86-DOS 및 MS-DOS 1.0에서 CP/M과 호환되도록 설계되었다. 파일은 파일 제어 블록(FCB)을 사용하여 접근했다. MS-DOS 2.0에서는 유닉스의 여러 개념을 도입하여 크게 확장되었는데, 파일 핸들을 사용한 파일 접근, 계층적 디렉터리, 장치 입출력(I/O) 제어 등이 추가되었다.[1] DOS 3.1에서는 네트워크 리디렉터 지원이 추가되었고, MS-DOS 3.31에서는 INT 25h/26h 함수가 개선되어 32MB보다 큰 하드 디스크를 지원하게 되었다. MS-DOS 5는 상위 메모리 블록(UMB) 사용을 지원했다. MS-DOS 5 이후 DOS API는 후속 DOS 단독 릴리스에서 변경되지 않았다.

참조

[1] 서적 Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers https://archive.org/[...] Microsoft Press
[2] 서적 Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers Microsoft Press



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

문의하기 : help@durumis.com