DOS

DOS (, ) là từ viết tắt độc lập với nền tảng của Disk Operating System, sau này trở thành từ viết tắt phổ biến cho các hệ điều hành dựa trên đĩa trên máy tính tương thích của IBM. DOS chủ yếu bao gồm MS-DOS của Microsoft và một phiên bản được đổi tên thành IBM PC DOS, cả hai đều được giới thiệu vào năm 1981. Các hệ thống tương thích sau này của các nhà sản xuất khác bao gồm DR DOS (1988), ROM-DOS (1989), PTS-DOS (1993) và FreeDOS (1998). MS-DOS thống trị thị trường tương thích PC IBM từ năm 1981 đến 1995.

Hàng chục hệ điều hành khác cũng sử dụng từ viết tắt "DOS", bao gồm mainframe DOS/360 từ năm 1966. Một số khác là Apple DOS, Apple ProDOS, Atari DOS, Commodore DOS, TRSDOS và AmigaDOS.

== Lịch sử ==
===Nguồn gốc===
IBM PC DOS (và phiên bản bán riêng MS-DOS) và phiên bản trước đó, 86-DOS, đã được dựa trên CP/M của Digital Research-hệ điều hành đĩa chủ yếu cho dòng vi xử lý 8-bit Intel 8080 và Zilog Z80 cho máy vi tính nhưng lại sử dụng vi xử lý 16-bit Intel 8086

Khi IBM giới thiệu IBM PC, được chế tạo bằng bộ vi xử lý Intel 8088, họ cần một hệ điều hành. Tìm kiếm một bản dựng CP/M tương thích với 8088, IBM ban đầu đã tiếp cận với Giám đốc điều hành Microsoft Bill Gates (có thể tin rằng Microsoft sở hữu CP/M do Microsoft Z-80 SoftCard, cho phép CP/M chạy trên Apple II). IBM được cử đến gặp công ty Digital Research và một cuộc họp đã được thiết lập. Tuy nhiên, các cuộc đàm phán ban đầu về việc sử dụng CP/M đã đổ vỡ; Digital Research muốn bán CP/M trên cơ sở tiền bản quyền, trong khi IBM tìm kiếm một giấy phép duy nhất và đổi tên thành "PC DOS ”. Người sáng lập Digital Research Gary Kildall đã từ chối và IBM đã rút lui.

IBM lại tiếp cận Bill Gates. Gates lần lượt tiếp cận Seattle Computer Products. Tại đó, lập trình viên Tim Paterson đã phát triển một biến thể của CP/M-80, nhằm mục đích là một sản phẩm nội bộ để thử nghiệm thẻ CPU 16-bit Intel 8086 mới của SCP cho bus S-100. Hệ thống này ban đầu được đặt tên là QDOS (Hệ điều hành nhanh và bẩn), trước khi được đưa ra thương mại với tên gọi 86-DOS. Microsoft đã mua 86-DOS, được cho là với số tiền 50,000 USD. Hệ điều hành này trở thành Microsoft Disk Operating System, MS-DOS, được đưa ra thị trường vào năm 1981. Trong vòng một năm, Microsoft đã cấp phép MS-DOS cho hơn 70 công ty khác, công ty cung cấp hệ điều hành cho phần cứng của riêng họ, đôi khi dưới tên riêng của họ. Microsoft sau đó đã yêu cầu sử dụng tên MS-DOS, ngoại trừ biến thể IBM. IBM tiếp tục phát triển phiên bản của họ, PC DOS, cho IBM PC. Digital Research nhận thấy rằng một hệ điều hành tương tự như CP/M đang được IBM bán ra (dưới cùng tên mà IBM đã yêu cầu cho CP/M) và đe dọa hành động pháp lý. IBM đáp lại bằng cách đưa ra một thỏa thuận: họ sẽ cho người tiêu dùng PC lựa chọn PC DOS hoặc CP/M-86, phiên bản 8086 của Kildall. Tại cùng thời điểm, CP/M đắt hơn 200 USD so với PC DOS và doanh số bán hàng thấp. CP/M lụi tàn dần, với MS-DOS và PC DOS trở thành hệ điều hành được bán trên thị trường cho PC và PC tương thích.

Microsoft ban đầu chỉ bán MS-DOS cho các nhà sản xuất thiết bị gốc (OEM). Một lý do chính cho điều này là không phải tất cả các PC đời đầu đều tương thích 100% với IBM PC. DOS được cấu trúc để có sự tách biệt giữa mã trình điều khiển thiết bị cụ thể của hệ thống (IO.SYS) và nhân DOS (MSDOS.SYS). Microsoft đã cung cấp Bộ công cụ thích ứng OEM (OAK) cho phép các OEM tùy chỉnh mã trình điều khiển thiết bị cho hệ thống cụ thể của họ. Vào đầu những năm 1990, hầu hết các PC đều tuân theo các tiêu chuẩn PC của IBM nên Microsoft bắt đầu bán lẻ MS-DOS với MS-DOS 5.0.

Vào giữa những năm 1980, Microsoft đã phát triển một phiên bản đa nhiệm của DOS. Phiên bản DOS này thường được gọi là "European MS-DOS 4" vì nó được phát triển cho ICL và được cấp phép cho một số công ty châu Âu. Phiên bản DOS này hỗ trợ đa nhiệm preemptive, bộ nhớ dùng chung, dịch vụ trợ giúp thiết bị và các tệp thực thi định dạng New Executable ("NE"). Không có tính năng nào trong số này được sử dụng trong các phiên bản sau của DOS, nhưng chúng được sử dụng để tạo nền tảng cho nhân OS / 2 1.0. Phiên bản DOS này khác với PC được phát hành rộng rãi DOS 4.0 được phát triển bởi IBM và dựa trên DOS 3.3.

Digital Research đã cố gắng giành lại thị trường đã mất từ CP/M-86, ban đầu với Concurrent DOS, FlexOS và DOS Plus (cả hai đều tương thích với cả MS-DOS và phần mềm CP/M-86), sau đó là Multiuser DOS (tương thích với cả MS -DOS và phần mềm CP/M-86) và DR DOS (tương thích với phần mềm MS-DOS). Digital Research đã được Novell mua lại và DR DOS trở thành PalmDOS và Novell DOS; sau đó, nó là một phần của Caldera (dưới tên OpenDOS và DR-DOS 7.02 / 7.03), Lineo và DeviceLogics.

Gordon Letwin đã viết vào năm 1995 rằng "DOS, khi chúng tôi viết nó lần đầu tiên, là một sản phẩm dùng một lần sau đó bỏ đi nhằm mục đích giữ cho IBM hài lòng để họ mua ngôn ngữ của chúng tôi". Microsoft kỳ vọng rằng nó sẽ là một giải pháp tạm thời trước Xenix. Công ty đã lên kế hoạch theo thời gian cải tiến MS-DOS để nó gần như không thể phân biệt được với Xenix cho một người dùng hay XEDOS, cũng sẽ chạy trên Motorola 68000, Zilog Z-8000 và LSI-11; chúng sẽ tương thích trở lên với Xenix, mà "BYTE" năm 1983 mô tả là "MS-DOS nhiều người dùng của tương lai".

Tuy nhiên, IBM không muốn thay thế DOS. Sau khi AT&T bắt đầu bán Unix, Microsoft và IBM bắt đầu phát triển OS/2 như một giải pháp thay thế. Hai công ty sau đó đã xảy ra một loạt bất đồng về hai hệ điều hành kế nhiệm DOS là OS / 2 và Windows. Do đó, họ chia rẽ việc phát triển hệ thống DOS của mình. Phiên bản bán lẻ cuối cùng của MS-DOS là MS-DOS 6.22; sau đó, MS-DOS trở thành một phần của Windows 95, 98 và Me. Phiên bản bán lẻ cuối cùng của PC DOS là PC DOS 2000 (còn gọi là PC DOS 7 bản sửa đổi 1), mặc dù IBM sau đó đã phát triển PC DOS 7.10 dành cho OEM và sử dụng nội bộ.

Dự án FreeDOS bắt đầu vào ngày 26 tháng 6 năm 1994, khi Microsoft thông báo sẽ không bán hoặc hỗ trợ MS-DOS nữa. Jim Hall sau đó đã đăng một tuyên ngôn đề xuất sự phát triển của một mã nguồn mở thay thế. Trong vòng vài tuần, các lập trình viên khác bao gồm Pat Villani và Tim Norman đã tham gia dự án. Một chương trình hạt nhân, trình thông dịch dòng lệnh COMMAND.COM (shell) và các tiện ích cốt lõi được tạo ra bằng cách gộp các mã mà họ đã viết hoặc tìm thấy có sẵn. Đã có một số bản phân phối trước khi phát hành chính thức của FreeDOS trước khi bản phân phối FreeDOS 1.0 được phát hành vào ngày 3 tháng 9 năm 2006. Được cung cấp theo Giấy phép Công cộng GNU (GPL), FreeDOS không yêu cầu phí cấp phép hoặc tiền bản quyền.

=== Thoái trào ===
Các phiên bản đầu tiên của Microsoft Windows chạy trên một phiên bản MS-DOS riêng biệt. Vào đầu những năm 1990, giao diện đồ họa của Windows được sử dụng nhiều trên các hệ thống DOS mới. Năm 1995, Windows 95 được đóng gói như một hệ điều hành độc lập không yêu cầu giấy phép DOS riêng biệt. Windows 95 (và Windows 98 và ME, theo sau nó) đã thay thế làm nhân hệ điều hành mặc định, mặc dù thành phần MS-DOS vẫn để tương thích. Với Windows 95 và 98, nhưng không phải ME, thành phần MS-DOS có thể chạy mà không cần khởi động Windows. Với việc DOS không còn cần thiết để có thể sử dụng Windows, phần lớn người dùng đã ngừng sử dụng nó

=== Tiếp tục sử dụng ===
Các hệ thống DOS có sẵn trong năm 2012 là FreeDOS, DR-DOS, ROM-DOS, PTS-DOS, RxDOS và REAL / 32. Một số nhà sản xuất máy tính, bao gồm Dell và HP, bán máy tính với FreeDOS và DR-DOS dưới dạng hệ điều hành OEM.

==== Những hệ thống nhúng ====
Cấu trúc truy cập trực tiếp phần cứng của DOS khiến nó trở nên lý tưởng để sử dụng trong các thiết bị nhúng. Các phiên bản cuối cùng của DR-DOS vẫn hướng đến thị trường này. ROM-DOS được sử dụng làm hệ thống nhúng trên Canon PowerShot Pro 70.

==== Mô phỏng ====
Trên Linux, có thể chạy các bản sao của DOS và nhiều bản sao của nó trên "DOSEMU", một máy ảo gốc Linux để chạy các chương trình DOS với tốc độ gần như nguyên bản. Có một số trình giả lập khác để chạy DOS trên các phiên bản Unix và Microsoft Windows khác nhau như DOSBox. DOSBox được thiết kế để chơi game kế thừa (ví dụ: "King's Quest", "Doom") trên các hệ điều hành hiện đại.

== Thiết kế ==
MS-DOS và IBM PC Hệ điều hành liên quan đến DOS thường được kết hợp với các máy sử dụng Intel x86 hoặc các CPU tương thích, chủ yếu là các máy tương thích IBM PC. Các phiên bản phụ thuộc vào máy của MS-DOS được sản xuất cho nhiều máy dựa trên x86 không tương thích với IBM, với các biến thể từ việc gắn nhãn lại bản phân phối Microsoft dưới tên nhà sản xuất, đến các phiên bản được thiết kế đặc biệt để hoạt động với phần cứng không tương thích với PC của IBM. Miễn là các chương trình ứng dụng sử dụng API DOS thay vì truy cập phần cứng trực tiếp, chúng có thể chạy trên cả máy tính tương thích và không tương thích với IBM-PC. Nhân FreeDOS ban đầu, DOS-C, có nguồn gốc từ DOS/NT cho dòng CPU Motorola 68000 vào đầu những năm 1990. Trong khi các hệ thống này giống với kiến trúc DOS một cách lỏng lẻo, các ứng dụng không tương thích nhị phân do các tập lệnh không tương thích của các CPU không phải x86 này. Tuy nhiên, các ứng dụng được viết bằng ngôn ngữ cấp cao có thể được chuyển đổi dễ dàng.

DOS là một hệ điều hành một người dùng, một tác vụ với các chức năng nhân cơ bản không sử dụng lại: chỉ một chương trình tại một thời điểm có thể sử dụng chúng và bản thân DOS không có chức năng cho phép nhiều chương trình thực thi cùng một lúc. Nhân DOS cung cấp các chức năng khác nhau cho các chương trình (một "giao diện chương trình ứng dụng"), như nhập xuất ký tự, quản lý tệp, quản lý bộ nhớ, tải và kết thúc chương trình.

DOS cung cấp khả năng tạo kịch bản shell thông qua các tệp hàng loạt (với phần mở rộng tên tệp codice_1 codice_2). Mỗi dòng của một tệp loạt được hiểu là một chương trình để chạy. Các tệp hàng loạt cũng có thể sử dụng các lệnh nội bộ, chẳng hạn như GOTO và các câu lệnh điều kiện.

Hệ điều hành này cung cấp giao diện lập trình ứng dụng cho phép phát triển các ứng dụng dựa trên ký tự, nhưng không phải để truy cập hầu hết phần cứng, chẳng hạn như card đồ họa, máy in hoặc chuột. Điều này bắt buộc các lập trình viên phải truy cập trực tiếp vào phần cứng, thường dẫn đến việc mỗi ứng dụng có một bộ trình điều khiển thiết bị riêng cho từng thiết bị ngoại vi phần cứng. Các nhà sản xuất phần cứng sẽ phát hành thông số kỹ thuật để đảm bảo có sẵn các trình điều khiển thiết bị cho các ứng dụng phổ biến.

=== Trình tự khởi động ===
- Bộ tải bootstrap trên máy tính tương thích với PC, bản ghi khởi động chính, được đặt bắt đầu ở khu vực khởi động, khu vực đầu tiên trên rãnh đầu tiên (rãnh số không), của đĩa khởi động. ROM BIOS sẽ tải khu vực này vào bộ nhớ tại địa chỉ0000h:7C00h và thường kiểm tra chữ ký "55h AAh "ở độ lệch+1FEh. Nếu sector không được coi là hợp lệ, ROM BIOS sẽ thử đĩa vật lý tiếp theo trong hàng, nếu không nó sẽ nhảy đến địa chỉ tải với một số thanh ghi đã được thiết lập.
- Nếu khu vực khởi động được tải tình cờ là Bản ghi Khởi động Chính (MBR), như được tìm thấy trên phương tiện được phân vùng, nó sẽ tự chuyển đến0000h:0600h trong bộ nhớ, [29] nếu không thì bước này bị bỏ qua. Mã MBR sẽ quét bảng phân vùng, nằm trong khu vực này, để tìm phân vùng hoạt động (MBR hiện đại sẽ kiểm tra xem bit 7 có được đặt ở vị trí bù không+1BEh+10h*n, trong khi MBR cũ chỉ cần kiểm tra giá trị là80h), và nếu được tìm thấy, hãy tải khu vực đầu tiên của phân vùng tương ứng, nơi chứa Bản ghi Khởi động Khối lượng (VBR) của ổ đĩa đó, vào bộ nhớ tại0000h:7C00h theo cách tương tự như nó đã được tải bởi chính ROM BIOS. MBR sau đó sẽ chuyển việc thực thi đến phần được tải với các thanh ghi nhất định được thiết lập.
- Nội dung khu vực được tải tại0000h:7C00h tạo thành VBR ngay bây giờ. VBR là hệ điều hành cụ thể và không thể được trao đổi giữa các phiên bản DOS khác nhau nói chung, vì hành vi chính xác khác nhau giữa các phiên bản DOS khác nhau. Trong các phiên bản rất cũ của DOS như DOS 1.x, VBR sẽ tải toàn bộ IO. SYS / IBMBIO. Tập tin COM được đưa vào bộ nhớ tại 0000h:0600h. Để làm việc này, các sector này phải được SYS lưu trữ theo thứ tự liên tiếp trên đĩa. Trong các số phát hành sau này, nó sẽ định vị và lưu trữ nội dung của hai mục nhập đầu tiên trong thư mục gốc tại 0000h:0500h và nếu chúng phản ánh đúng tệp khởi động được ghi trong VBR, VBR sẽ tải 3 cung liên tiếp đầu tiên của IO. SYS / IBMBIO. Tập tin COM vào bộ nhớ tại 0070h:0000h. VBR cũng phải quan tâm đến việc bảo quản nội dung của Bảng thông số đĩa (DPT). Cuối cùng, nó chuyển quyền kiểm soát cho phần đã tải bằng cách chuyển đến điểm vào của nó với một số thanh ghi nhất định được thiết lập (với sự khác biệt đáng kể giữa các phiên bản DOS khác nhau).
- Trong các phiên bản DOS hiện đại, VBR chỉ tải 3 cung đầu tiên của IO.SYS / IBMBIO. Tệp COM vào bộ nhớ, phần được tải chứa một bộ tải khởi động khác, sau đó sẽ tải phần còn lại của chính nó vào bộ nhớ, sử dụng thông tin thư mục gốc được lưu trữ tại0000h:0500h. Đối với hầu hết các phiên bản, nội dung tệp vẫn cần được lưu trữ theo thứ tự liên tiếp trên đĩa. Trong các phiên bản cũ hơn của DOS, vẫn được tải toàn bộ, bước này được bỏ qua.
- Mã khởi tạo hệ thống DOS sẽ khởi tạo các trình điều khiển thiết bị tích hợp của nó và sau đó tải nhân DOS, nằm trong MSDOS.SYS trên hệ thống MS-DOS, vào bộ nhớ. Trong Windows 9x, mã khởi tạo hệ thống DOS và trình điều khiển thiết bị tích hợp sẵn và nhân DOS được kết hợp thành một IO duy nhất. Tệp SYS trong khi MSDOS. SYS được sử dụng như một tệp cấu hình văn bản.
- Sau đó, tệp CONFIG.SYS được đọc để phân tích cú pháp các tham số cấu hình. Biến SHELL chỉ định vị trí của shell được mặc định là COMMAND. COM.
- Trình shell được tải và thực thi.
- Tệp lô khởi động AUTOEXEC. BAT sau đó được trình shell thực thi.

Các tệp hệ thống DOS được tải bởi khu vực khởi động phải liền kề và là hai mục nhập thư mục đầu tiên. Do đó, việc xóa và thêm tệp này có khả năng khiến phương tiện không thể khởi động được. Tuy nhiên, có thể thay thế shell theo ý muốn, một phương pháp có thể được sử dụng để bắt đầu thực thi các ứng dụng chuyên dụng nhanh hơn. Giới hạn này không áp dụng cho bất kỳ phiên bản DR nào DOS, nơi các tệp hệ thống có thể được đặt ở bất kỳ đâu trong thư mục gốc và không cần phải liền nhau. Do đó, các tệp hệ thống có thể được sao chép đơn giản vào đĩa miễn là khu vực khởi động là tương thích với DR DOS.

Trong PC DOS và DR DOS 5.0 trở lên, các tệp hệ thống DOS được đặt tên là IBMBIO.COM thay vì IO.SYS và IBMDOS.COM thay vì MSDOS.SYS. Phiên bản DR DOS cũ hơn đã sử dụng tên file DRBIOS.SYS và DRBDOS.SYS thay thế.

Bắt đầu với MS-DOS 7.0, các tệp hệ thống nhị phân IO.SYS và MSDOS.SYS được kết hợp thành một tệp IO.SYS duy nhất trong khi MSDOS.SYS trở thành một tệp cấu hình tương tự như CONFIG.SYS và AUTOEXEC.BAT. Nếu chỉ thị BootGUI trong MSDOS.SYS được đặt thành codice_3, quá trình khởi động sẽ dừng với bộ xử lý lệnh (thường là COMMAND. COM) được tải, thay vì thực thi WIN.COM một cách tự động.

=== Hệ thống file ===
DOS sử dụng hệ thống tệp hỗ trợ tên tệp 8.3: 8 ký tự cho tên tệp và 3 ký tự cho phần mở rộng. Bắt đầu với DOS 2, thư mục phân cấp được hỗ trợ. Mỗi tên thư mục cũng có định dạng 8.3 nhưng độ dài đường dẫn thư mục tối đa là 64 ký tự do các bảng cấu trúc thư mục hiện tại nội bộ (CDS) mà DOS duy trì. Bao gồm cả tên ổ đĩa, độ dài tối đa của tên tệp đủ điều kiện mà DOS hỗ trợ là 80 ký tự sử dụng định dạng drive:\path\filename.ext theo sau là một byte rỗng.

DOS sử dụng hệ thống Bảng phân bổ tệp (FAT). Đây là FAT12 ban đầu hỗ trợ lên đến 4078 cụm mỗi ổ đĩa. DOS 3.0 đã thêm hỗ trợ cho FAT16 sử dụng các mục phân bổ 16-bit và hỗ trợ tới 65518 cụm trên mỗi ổ đĩa. Compaq MS-DOS 3.31 đã thêm hỗ trợ cho FAT16B, loại bỏ 32 Giới hạn ổ đĩa MB và có thể hỗ trợ lên đến 512 MB. Cuối cùng MS-DOS 7.1 (thành phần DOS của Windows 9x) đã bổ sung hỗ trợ cho FAT32 sử dụng các mục phân bổ 32-bit và có thể hỗ trợ ổ cứng lên đến 137 GB và hơn thế nữa.

Bắt đầu với DOS 3.1, hỗ trợ trình chuyển hướng tệp đã được thêm vào DOS. Điều này ban đầu được sử dụng để hỗ trợ mạng nhưng sau đó được sử dụng để hỗ trợ ổ đĩa CD-ROM với MSCDEX. Máy tính IBM DOS 4.0 cũng có hỗ trợ hệ thống tệp có thể cài đặt sơ bộ (IFS) nhưng điều này không được sử dụng và bị loại bỏ trong DOS 5.0. DOS cũng hỗ trợ Block Devices (thiết bị "Disk Drive") được tải từ CONFIG.SYS có thể được sử dụng trong hệ thống tệp DOS để hỗ trợ các thiết bị mạng.

==== Lược đồ đặt tên ổ đĩa ====
Trong DOS, các ổ đĩa được gọi bằng cách xác định các chữ cái. Thực hành tiêu chuẩn là dành "A" và "B" cho ổ đĩa mềm. Trên các hệ thống chỉ có một ổ đĩa mềm, DOS sẽ gán cả hai ký tự cho ổ đĩa, nhắc người dùng hoán đổi các đĩa khi các chương trình truy cập xen kẽ giữa chúng. Điều này tạo điều kiện thuận lợi cho việc sao chép từ đĩa mềm này sang đĩa mềm khác hoặc có một chương trình chạy từ một đĩa mềm trong khi truy cập dữ liệu của nó trên một đĩa mềm khác. Ổ cứng ban đầu được gán các chữ cái "C" và "D". DOS chỉ có thể hỗ trợ một phân vùng hoạt động trên mỗi ổ đĩa. Khi hỗ trợ nhiều ổ đĩa cứng hơn, điều này được phát triển thành việc đầu tiên gán ký tự ổ đĩa cho phân vùng chính đang hoạt động của mỗi ổ đĩa, sau đó thực hiện lần chuyển thứ hai qua các ổ đĩa để phân bổ ký tự cho các ổ đĩa logic trong phân vùng mở rộng, sau đó chuyển sang lần thứ ba để cung cấp bất kỳ các phân vùng chính không hoạt động khác tên của chúng (trong đó các phân vùng bổ sung đó tồn tại và chứa hệ thống tệp hỗ trợ DOS). Cuối cùng, DOS phân bổ các ký tự cho ổ đĩa quang, đĩa RAM và phần cứng khác. Việc gán chữ cái thường xảy ra theo thứ tự các trình điều khiển được tải, nhưng các trình điều khiển có thể hướng dẫn DOS gán một chữ cái khác; chẳng hạn như trình điều khiển cho ổ đĩa mạng, thường gán các chữ cái gần cuối bảng chữ cái.

Vì các ứng dụng DOS sử dụng trực tiếp các ký tự ổ đĩa này (không giống như thư mục/dev trong các hệ thống tương tự Unix), chúng có thể bị gián đoạn bằng cách thêm phần cứng mới cần ký tự ổ đĩa. Một ví dụ là việc bổ sung một ổ cứng mới có phân vùng chính trong đó ổ cứng tồn tại từ trước chứa các ổ đĩa logic trong các phân vùng mở rộng; ổ đĩa mới sẽ được gán một ký tự mà trước đó đã được gán cho một trong các ổ đĩa logic phân vùng mở rộng. Hơn nữa, ngay cả khi thêm một ổ cứng mới chỉ có các ổ đĩa logic trong một phân vùng mở rộng vẫn sẽ làm gián đoạn các ký tự của đĩa RAM và ổ đĩa quang. Sự cố này vẫn tồn tại qua các phiên bản Windows 9x dựa trên DOS của Microsoft cho đến khi chúng được thay thế bằng các phiên bản dựa trên dòng NT, giữ nguyên các ký tự của ổ đĩa hiện có cho đến khi người dùng thay đổi chúng. Trong DOS, vấn đề này có thể được khắc phục bằng cách xác định ổ SUBST và cài đặt chương trình DOS vào ổ logic này. Việc gán ổ đĩa này sau đó sẽ được thay đổi trong một công việc hàng loạt bất cứ khi nào ứng dụng khởi động. Trong một số phiên bản của Concurrent DOS, cũng như trong Multiuser DOS, System Manager và REAL/32, ký tự ổ đĩa dành riêng L: sẽ tự động được gán cho ổ đĩa tải tương ứng bất cứ khi nào ứng dụng khởi động.

==== Tên thiết bị dành riêng ====
Có những tên thiết bị dành riêng trong DOS không thể được sử dụng làm tên tệp bất kể phần mở rộng nào vì chúng bị chiếm bởi các thiết bị ký tự tích hợp. Những hạn chế này cũng ảnh hưởng đến một số phiên bản Windows, trong một số trường hợp có thể gây ra sự cố và lỗ hổng bảo mật.

Các tên dành riêng là:

- codice_4, dành cho bảng điều khiển
- codice_5, để phụ trợ
- codice_6, dành cho máy in
- codice_7, dành cho trình nghe; được giới thiệu với 86-DOS 0.74.
- codice_8, cho các thiết bị null; được thêm vào 86-DOS 1.10 và PC DOS 1.0.

Những tên này (ngoại trừ NUL) tiếp tục được hỗ trợ trong tất cả các phiên bản MS-DOS, PC DOS và DR-DOS kể từ đó. codice_7 cũng có sẵn trong một số phiên bản OEM của MS-DOS 1.25, trong khi các phiên bản OEM khác của MS-DOS 1.25 đã sử dụng codice_10 (máy in dòng đầu tiên) và codice_11 (thiết bị giao tiếp nối tiếp đầu tiên), như được giới thiệu với PC DOS. Ngoài codice_10 và codice_13 cũng như codice_11 đến codice_15, MS-DOS 2.11 của Hewlett-Packard dành cho HP Portable Plus cũng hỗ trợ codice_7 làm bí danh cho codice_13 và codice_18 làm bí danh cho codice_19; nó cũng hỗ trợ codice_20 cho máy vẽ. codice_19, thiết bị đồng hồ codice_19, codice_13, codice_24 và codice_25 (vẫn được đặt tên là codice_26 trong một số vấn đề của MS-DOS 2.11 ) thiết bị đồng hồ được giới thiệu với DOS 2.0 và codice_15 và codice_28 đã được thêm vào với DOS 3.3. Chỉ MS-DOS 4 đa nhiệm mới hỗ trợ codice_29 và codice_30. DR DOS 5.0 trở lên và Multiuser DOS hỗ trợ thiết bị codice_31 để phát hiện động khi không hoạt động nhằm tiết kiệm năng lượng và cải thiện đa nhiệm. codice_32 là trình điều khiển tích hợp tùy chọn cho máy in dòng thứ tư được hỗ trợ trong một số phiên bản DR-DOS kể từ 7.02. codice_33 cấu thành trình quản lý PnP ở chế độ thực trong MS-DOS 7.0-8.0.

codice_5 thường được mặc định thành codice_11 và codice_6 thành codice_10 (codice_7), nhưng những mặc định này có thể được thay đổi trong một số phiên bản của DOS để trỏ đến các thiết bị nối tiếp hoặc song song khác. codice_20 cũng có thể cấu hình lại.

Tên tệp kết thúc bằng dấu hai chấm () như codice_40 thông thường chỉ ra tên thiết bị, nhưng dấu hai chấm không phải là thực sự là một phần của tên của các trình điều khiển thiết bị tích hợp. Không cần thiết phải nhập dấu hai chấm trong một số trường hợp, ví dụ:
ECHO This achieves nothing > NUL
Vẫn có thể tạo tệp hoặc thư mục bằng cách sử dụng các tên thiết bị dành riêng này, chẳng hạn như thông qua chỉnh sửa trực tiếp cấu trúc dữ liệu thư mục trong các ngành đĩa. Việc đặt tên như vậy, chẳng hạn như bắt đầu tên tệp bằng khoảng trắng, đôi khi đã bị vi-rút hoặc các chương trình hack sử dụng để che khuất tệp khỏi những người dùng không biết cách truy cập các vị trí này.

=== Quản lý bộ nhớ ===
DOS ban đầu được thiết kế cho bộ xử lý Intel 8086/8088 và do đó chỉ có thể truy cập trực tiếp tối đa 1 MB RAM. Do kiến trúc PC, chỉ có tối đa 640 KB (được gọi là bộ nhớ thông thường) và 384 KB bộ nhớ trên được dự trữ.

Các thông số kỹ thuật được phát triển để cho phép truy cập vào bộ nhớ bổ sung. Đầu tiên là Expanded Memory Specification (EMS) ban đầu cho phép bộ nhớ trên thẻ bổ trợ được truy cập vượt qua khung trang 64 KB trong vùng bộ nhớ phía trên dành riêng. Các hệ thống 80386 trở lên có thể sử dụng trình quản lý bộ nhớ chế độ 8086 chế độ (V86) ảo như EMM386 để tạo bộ nhớ mở rộng từ bộ nhớ mở rộng mà không cần thẻ bổ trợ. Thông số kỹ thuật thứ hai là Extended Memory Specification (XMS) cho hệ thống 80286 trở lên. Điều này cung cấp một cách để sao chép dữ liệu đến và từ bộ nhớ mở rộng, truy cập vào Vùng bộ nhớ cao (HMA) 65520 byte ngay trên megabyte bộ nhớ đầu tiên và vùng bộ nhớ trên (UMB). Nói chung hỗ trợ XMS được cung cấp bởi HIMEM.SYS hoặc trình quản lý bộ nhớ chế độ V86 như QEMM hoặc 386MAX cũng hỗ trợ EMS.

Bắt đầu với DOS 5, DOS có thể trực tiếp tận dụng HMA bằng cách tải mã hạt nhân và bộ đệm đĩa của nó ở đó thông qua câu lệnh DOS = HIGH trong CONFIG. SYS. DOS 5+ cũng cho phép sử dụng các UMB có sẵn thông qua câu lệnh DOS = UMB trong CONFIG.SYS.

=== DOS trong OS/2 và Windows ===
Mô phỏng DOS trong OS/2 và Windows chạy theo cách giống như các ứng dụng gốc. Chúng có thể truy cập tất cả các ổ đĩa và dịch vụ, thậm chí có thể sử dụng dịch vụ khay nhớ tạm của máy chủ. Bởi vì trình điều khiển cho hệ thống tệp và tương tự nằm trong hệ thống máy chủ, mô phỏng DOS chỉ cần cung cấp một lớp dịch DOS API để chuyển đổi các lệnh gọi DOS thành các lệnh gọi hệ thống OS/2 hoặc Windows. Lớp dịch nói chung cũng chuyển đổi các lệnh gọi BIOS và ảo hóa các truy cập cổng I/O thông thường mà nhiều chương trình DOS thường sử dụng.

Trong Windows 3.1 và 9x, máy ảo DOS được cung cấp bởi WINOLDAP. WinOldAp tạo một máy ảo dựa trên tệp PIF của chương trình và trạng thái hệ thống khi Windows được tải. Chế độ đồ họa DOS, cả nhân vật và đồ họa, có thể được chụp và chạy trong cửa sổ. Các ứng dụng DOS có thể sử dụng khay nhớ tạm của Windows bằng cách truy cập các lệnh gọi bổ sung được xuất bản trong WinOldAp và người ta có thể dán văn bản qua đồ họa WinOldAp.

DOS giả lập trong OS/2 và Windows NT dựa trên DOS 5. Mặc dù có cấu hình mặc định (config.sys và autoexec.bat), người ta có thể sử dụng các tệp thay thế trên cơ sở từng phiên. Có thể tải trình điều khiển trong các tệp này để truy cập hệ thống máy chủ, mặc dù chúng thường là của bên thứ ba.

Trong OS/2 2.x trở lên, giả lập DOS được cung cấp bởi DOSKRNL. Đây là tệp đại diện cho IBMBIO kết hợp. COM và IBMDOS. COM, các cuộc gọi hệ thống được chuyển đến các dịch vụ cửa sổ OS / 2. Các chương trình DOS chạy trong môi trường riêng của chúng, phần lớn các tiện ích DOS được cung cấp bởi các ứng dụng DOS / OS2 bị ràng buộc trong thư mục \ OS2. OS / 2 có thể chạy các ứng dụng Windows 3.1 bằng cách sử dụng bản sao đã sửa đổi của Windows (Win-OS/2). Các sửa đổi cho phép các chương trình Windows 3.1 chạy liền mạch trên máy tính để bàn OS / 2 hoặc người ta có thể khởi động máy tính để bàn WinOS / 2, tương tự như khởi động Windows từ DOS.

OS / 2 cho phép 'DOS từ Ổ A:', (VMDISK). Đây là một DOS thực, như MS-DOS 6.22 hoặc PC DOS 5.00. Người ta tạo một đĩa mềm có khả năng khởi động của DOS, thêm một số trình điều khiển từ OS/2, rồi tạo một hình ảnh đặc biệt. DOS khởi động theo cách này có toàn quyền truy cập vào hệ thống, nhưng cung cấp các trình điều khiển riêng cho phần cứng. Người ta có thể sử dụng một đĩa như vậy để truy cập các ổ đĩa cdrom mà không có trình điều khiển OS/2.

Trong tất cả các phiên bản 32-bit (IA-32) của dòng Windows NT kể từ năm 1993, giả lập DOS được cung cấp bởi một máy DOS ảo (NTVDM). Phiên bản Windows 64-bit (IA-64) không hỗ trợ NTVDM và không thể chạy trực tiếp các ứng dụng DOS 16-bit; Trình giả lập của bên thứ ba như DOSbox có thể được sử dụng để chạy các chương trình DOS trên các máy đó.

== Giao diện người dùng ==
Hệ thống DOS sử dụng giao diện dòng lệnh. Một chương trình được bắt đầu bằng cách nhập tên tệp của nó tại dấu nhắc lệnh. Hệ thống DOS bao gồm các chương trình tiện ích và cung cấp các lệnh nội bộ không tương ứng với các chương trình.

Trong nỗ lực cung cấp một môi trường thân thiện hơn với người dùng, nhiều nhà sản xuất phần mềm đã viết các chương trình quản lý tệp cung cấp cho người dùng các giao diện dựa trên menu và/hoặc biểu tượng. trở thành trình tải chương trình độc lập và thay thế DOS làm trình tải chương trình tương thích với PC được sử dụng nhiều nhất. Các chương trình giao diện người dùng văn bản bao gồm Norton Commander, DOS Navigator, Volkov Commander, Quarterdesk DESQview và Sidekick. Các chương trình giao diện người dùng đồ họa bao gồm GEM của Digital Research (ban đầu được viết cho CP/M) và GEOS.

Cuối cùng, các nhà sản xuất hệ thống DOS lớn bắt đầu bao gồm các nhà quản lý môi trường của riêng họ. MS-DOS / IBM DOS 4 bao gồm DOS Shell; DR DOS 5.0, được phát hành vào năm sau, bao gồm ViewMAX, dựa trên GEM.

=== Terminate and Stay Resident ===
DOS không phải là một hệ điều hành đa nhiệm. Tuy nhiên, DOS đã cung cấp chức năng Chấm dứt và Ở lại Thường trú (Terminate and Stay Resident, TSR) cho phép các chương trình nằm thường trú trong bộ nhớ. Các chương trình này có thể móc bộ đếm thời gian hệ thống và/hoặc ngắt bàn phím để cho phép chúng chạy các tác vụ ở chế độ nền hoặc được gọi bất kỳ lúc nào trước khi chương trình đang chạy hiện tại thực hiện một cách hiệu quả hình thức đa nhiệm đơn giản trên cơ sở chương trình cụ thể. Lệnh PRINT đã thực hiện việc này để triển khai bộ đệm in nền. Borland Sidekick, một chương trình quản lý thông tin cá nhân popup (PIM), cũng sử dụng kỹ thuật này.

Các chương trình TSR cũng được sử dụng để cung cấp các tính năng bổ sung không có sẵn theo mặc định. Các chương trình như CED và DOSKEY cung cấp các phương tiện chỉnh sửa dòng lệnh ngoài những gì có sẵn trong COMMAND. COM. Các chương trình như Microsoft CD-ROM Extensions (MSCDEX) cung cấp quyền truy cập vào các tệp trên đĩa CD-ROM.

Một số TSR thậm chí có thể thực hiện một dạng chuyển đổi nhiệm vụ thô sơ. Ví dụ, chương trình phần mềm chia sẻ Back and Forth (1990) có một phím nóng để lưu trạng thái của chương trình hiện đang chạy vào đĩa, tải một chương trình khác và chuyển sang chương trình đó, do đó có thể chuyển đổi "qua lại" "giữa các chương trình, mặc dù chậm do yêu cầu quyền truy cập đĩa. Tuy nhiên, Back and Forth không thể kích hoạt xử lý nền; cần DESQview (ít nhất trên 386).

==Tham khảo==
- Notes

- IBM Corp., IBM, (January 1984). "IBM DOS Release 2.10 Cloth bound retail hard board box". 1st edition. IBM Corp. Item Number. 6183946
- IBM Corp., IBM, (January 1984). "Disk Operating System User's guide (DOS Release 2.10)". 1st edition. Microsoft Corp. (100 pages including colour illustrations) Item Number. 6183947
- IBM Corp., IBM, (January 1984). "Disk Operating System Manual (DOS Release 2.10)". 1st edition. Microsoft Corp. (574 looseleaf pages in 3 ring folder) Item No. 6183940