Windows vẫn dựa vào MS-DOS?


71

Tôi sắp bắt đầu một khóa học về HĐH và là một người dùng Apple, tôi không quen lắm với các chi tiết cơ bản của HĐH Windows. Tôi đã tự hỏi, MS DOS vẫn được sử dụng với Windows đang chạy trên đầu hay CHỈ Windows được sử dụng như là HĐH? Tôi hơi bối rối vì tôi đã đọc ở đâu đó rằng MS-DOS được sử dụng để khởi động nhưng Windows có tất cả các khả năng HĐH khác được tích hợp trong đó và do đó được sử dụng cho tất cả các hoạt động khác của HĐH ...


Kết thúc của cuộc thảo luận này có vẻ thú vị.
dùng2284570

Không nó không. HĐH tiêu dùng cuối cùng dựa trên MS-DOS là Windows Me. Windows XP, Vista, 7 và sau này đều được xây dựng trên kiến ​​trúc Windows NT.
bwDraco

Câu trả lời:


140

Có hai dòng dõi riêng biệt khi nói đến Microsoft Windows, và nó không giúp ích gì khi mọi người viết những điều về một dòng mà họ đã tìm hiểu về dòng kia.

  • Dòng sản phẩm DOS + Windows bao gồm DOS + Windows tất cả các phiên bản cho đến phiên bản 3.11, DOS + Windows 95, DOS + Windows 98 và DOS + Windows Millennium Edition. Nó có Windows xếp lớp trên cùng của DOS. Toàn bộ sách đã được viết về chủ đề của lớp này, và nó là chủ đề của một số cuộc tranh cãi, không chỉ bởi vì nhiều người vì một hội chợ trong khi đầu những năm 1990 muốn thế giới tin rằng DOS đã biến mất và Windows đã biến mất hệ điều hành.

    Đây là quá trình bootstrap của DOS + Windows.

  • Dòng Windows NT bao gồm Windows NT 3.x, Windows NT 4.0, Windows NT 5.0 ("Windows 2000"), Windows NT 5.1 ("Windows XP"), Windows NT 5.2 (một số phiên bản Windows XP và "Windows Server 2003" ), Windows NT 6.0 ("Windows Vista") và Windows NT 6.1 ("Windows 7"). Nó không nằm trên DOS, hoạt động theo cách hoàn toàn khác với DOS và có thể chạy các ứng dụng DOS bằng máy ảo Virtual NT (NTVDM), một máy ảo chạy trên Windows NT chứ không phải máy khác cách xung quanh.

    Đây là quá trình bootstrap của Windows NT 6.x.

Điều cũng không có ích là khi mọi người nói nhầm về "Dấu nhắc DOS" trong Windows NT, như đã xảy ra trong các câu trả lời ở đây. Ngoài thực tế, đó là trình thông dịch lệnh nhắc nhở, không phải hệ điều hành , điều này kết hợp "DOS" với "giao diện người dùng văn bản" và "trình thông dịch lệnh", cả hai đều không đồng nghĩa với DOS. DOS là một họ các hệ điều hành: MS-DOS, PC-DOS, DR-DOS, FreeDOS, OpenDOS, et cetera.

Nếu một cửa sổ có dấu nhắc lệnh mở trên Windows NT thì một cửa sổ hầu như luôn chạy CMD, đó là trình thông dịch lệnh mặc định của Microsoft được cung cấp trong hộp và là giao diện người dùng văn bản thông thường, chương trình Win32. Không có "DOS", cũng không có NTVDM. Chỉ có một chương trình Win32 nói chuyện với đối tượng giao diện điều khiển Win32. Và trên thực tế đối với nhiều chương trình TUI mà một người có thể chạy trên Windows NT, bao gồm tất cả các công cụ trong Bộ tài nguyên khác nhau của Microsoft, vẫn không có DOS nào ở trong hình, vì đây đều là những chương trình Win32 thông thường thực hiện bảng điều khiển Win32 I / O, quá.

Trớ trêu thay, khi Windows NT 3.1 được phát hành vào năm 1993, dòng Windows NT thực sự là hệ thống Windows-is-the-điều hành không dựa trên DOS mà tất cả những người ở giữa những năm 1990 đang cố gắng thuyết phục thế giới mà DOS + Windows 95 là.

Và, mười tám năm sau, chúng tôi vẫn đang cố gắng thông qua một số người rằng Windows NT không hoạt động như DOS và không bao giờ có . ☺

đọc thêm

  • Jonathan de Boyne Pollard (2006). Một danh sách sách cho các nhà phát triển nhân hệ điều hành và nhà văn trình điều khiển thiết bị . Câu trả lời thường xuyên.
  • Mark E. Russinovich, David A. Solomon, Alex Ionescu (2009). Windows Internals (Phiên bản thứ 5) . Báo chí Microsoft. SỐ TIẾNG VIỆT
  • Walter Oney (1996). Lập trình hệ thống cho Windows 95 . Báo chí Microsoft. SỐ 1 55615 949 8.
  • Matt Pietrek (tháng 11 năm 1995). Bí mật lập trình hệ thống Windows 95 . Sách IDG. SỐ 1-56884-318-6.
  • Andrew Schulman (1994). Windows 95 trái phép . Sách IDG trên toàn thế giới. SỐNG68841694.
  • Matt Pietrek (1993). Windows bên trong: việc thực hiện môi trường vận hành Windows . Addison-Wesley. ISBN YAM2016201622171.
  • Andrew Schulman, David Maxey, Matt Pietrek (1992). Windows không có giấy tờ: Hướng dẫn lập trình cho các chức năng Api của Microsoft dành riêng . Addison-Wesley. ISBN YAM201608342.

11
Nó chỉ trở nên tốt hơn. Tôi vẫn đang dạy mọi người rằng bạn có thể Alt-Tab giữa các ứng dụng. . .
Surfasb

2
Không phải sự thật là đối với Windows 95+, DOS đang được sử dụng như một bộ tải khởi động chứ không phải là một lớp hệ điều hành. tức là Windows 95+ không gọi các dịch vụ DOS ngoại trừ trong quá trình khởi động.
Winston Ewert

3
@Winston Ewert, theo hiểu biết của tôi, các chương trình windows vẫn dựa vào dos INT 21h trong windows 95. Ví dụ: hàm INT 21h 55h để khởi tạo và hàm INT 21h 4Ch để kết thúc. Tôi không thể trả lời cho 98 và ME. Nhưng 95 đã làm.
artifex

6
Tuy nhiên, bạn vẫn không thể sử dụng tên thiết bị DOS dành riêng trong Windows 7 trong explorer.exe!
LawrenceC

5
Mọi người! Bạn biết làm thế nào trang web này hoạt động. Nếu bạn muốn đặt câu hỏi về chế độ DOS, ý nghĩa của các tùy chọn msdos.sys và tại sao người ta không thể sử dụng một số tên làm tên tệp trong Win32, thì hãy sử dụng siêu liên kết Hỏi Câu hỏi ở đầu trang này . Bắt đầu, hơn nữa, bằng cách đọc các câu hỏi từ những người đã .
JdeBP

23

Ngoài ra, Windows 95 không hoàn toàn là một GUI trên DOS. Đọc thêm tại đây:

http://bloss.msdn.com/b/oldnewthing/archive/2007/12/24/6849530.aspx


1
Tôi nhớ điều này, toàn bộ giao diện VxD và bộ chuyển đổi VMM. Đó là một cách thú vị để tiến lên một chút trên HĐH và vẫn có nhiều khả năng tương thích ngược.
Rich Homolka

Mặc dù vậy, Windows 95 đã đi kèm với MS-DOS 7 và người ta chỉ có thể sử dụng phần DOS để tạo một đĩa khởi động chỉ dành cho DOS và có một cái gì đó giống như một phiên bản bị hỏng nhẹ của MS-DOS 6 (nhưng cũng có thêm một vài bổ sung mới đặc trưng).
Randolf Richardson

4
Câu trả lời đúng nhất: Windows đã không dựa vào DOS kể từ Windows 95. Và nói đúng ra Windows 3.11 không cần DOS khi trình điều khiển 32 bit đã qua. Nhưng 3.11 không đi kèm với bộ tải khởi động; Vì vậy, nó cần DOS để đưa nó đến điểm khởi đầu.
Ian Boyd

1
Blog đó là một trang đọc khá tốt, cảm ơn vì liên kết
crasic

20

Không. Tất cả các phiên bản Windows trước những phiên bản có "hạt nhân NT" giống như một GUI trên DOS. Với NT, đã trở nên đặc biệt phổ biến với việc giới thiệu Windows XP (và cả Windows Vista và Windows 7 đều sử dụng kernel NT), nhu cầu sử dụng DOS làm HĐH cơ bản đã bị loại bỏ .

Các phiên bản Windows 32 bit vẫn có dấu nhắc DOS, có thể chạy bằng cách nhập vào command.comhộp thoại chạy và nó có thể chạy hầu hết các chương trình DOS cũ. Tất cả các phiên bản Windows đều có dấu nhắc lệnh có thể được sử dụng để chạy các tệp bó và các lệnh giống như DOS (thường là các ứng dụng Windows gốc được thiết kế để tương tác với bảng điều khiển kiểu DOS). Windows 64 bit không thể chạy các ứng dụng DOS vì nó không hỗ trợ các quy trình 16 bit.

Có lẽ bạn nên xem dấu nhắc lệnh giống như một ứng dụng chuyên dụng có thể được sử dụng để chạy các chương trình DOS và / hoặc khởi động các chương trình Windows từ dòng lệnh.

Lưu ý: Thuật ngữ "Dấu nhắc DOS" thường được sử dụng để mô tả "dấu nhắc lệnh" trước khi giới thiệu hạt nhân NT. Mặc dù ngày nay nhiều người vẫn sử dụng thuật ngữ "nhắc nhở DOS" (vì họ sử dụng nó để chạy nhiều lệnh tương tự, ban đầu được gọi là "lệnh DOS", thường có sẵn trong môi trường DOS), thuật ngữ "lệnh" prompt "đúng về mặt kỹ thuật trong các biến thể NT của Windows.


13
Các ứng dụng DOS cũ (16 bit) cũ được chạy trong NTVDM, được mô phỏng bên trong hệ thống con dấu nhắc lệnh. NTVDM không có sẵn trong các hệ thống Windows 64 bit, vì vậy bạn cần một trình giả lập bên thứ 3 để chạy các ứng dụng DOS 16 bit, chẳng hạn như DOSBox hoặc VirtualBox.
afrazier

11
Lý do tại sao NTVDM không có sẵn trong Windows 64 bit là vì nó chỉ là một trình bao bọc mỏng chuyển CPU sang chế độ 16 bit trước khi chạy mã. Ở chế độ 64 bit, CPU chỉ có thể tạm thời chuyển sang chế độ 32 bit để chạy mã 32 bit; nó không thể chạy mã 16 bit mà không cần khởi động lại lạnh.
Hello71

2
Lưu ý cho tất cả: Nhận xét đã được làm sạch từ bài đăng này. Đối với những người liên quan: Vui lòng giữ thông tin công khai và nhớ rằng các cuộc thảo luận mở rộng nên được chuyển sang trò chuyện bất cứ khi nào có thể - những bình luận quá mức về một bài đăng trở nên rất ồn ào đối với những khách truy cập khác.
DMA57361

Vì mọi người tiếp tục tranh cãi kịch liệt về bài đăng này, chúng tôi sẽ khóa nó ngay bây giờ. Bình luận đã được gỡ bỏ, một lần nữa.
nhinkle

@ Xin chào 71 sai. Trong Linux chẳng hạn, nó có thể. Và bạn có thể chạy các ứng dụng DOS và Win 3.1 16 bit trong Linux 64 bit.
Anixx

5

Giống như một anwer cho Randolf, nhưng anh ta không phải là người duy nhất, giao diện dòng lệnh khó hiểu và DOS lặp đi lặp lại.

Lưu ý, rằng nhiều [DOS] và [MS-DOS] thẻ bị sai lầm giống nhau: MS-DOS ban đầu chỉ có một textmode, một giao diện dòng lệnh gọi command.com+ huy norton đối với nhiều người trong chúng ta, và một cửa sổ textmode cây nhà lá vườn với khung , được vẽ bằng ansi.sys, nhưng có thể điều khiển không chỉ bằng bàn phím, mà bằng chuột, mà còn dễ dàng hơn với các mũi tên và phím nóng, quá.

Sau đó, các cửa sổ được xây dựng trên đỉnh của DOS (2.0, 3.0, 3.1, 3.11), trong đó một biểu tượng cho DOS-Box xuất hiện lại bên trong các cửa sổ, như một tên cho giao diện lệnh bên trong các cửa sổ.

Nhưng trong Windows-NT và trong Windows-95 hoặc -98 MS-DOS đã bị bỏ rơi, nhưng một trình thông dịch lệnh, cmd.exe(cmd32.exe) vẫn tồn tại, với cùng một hoặc gần như cùng một cú pháp và từ khóa. Nhưng đây là một chương trình, chạy bên trong Windows, như các trình thông dịch lệnh kiểu văn bản khác, như BASIC, irb (Ruby), scala-repl, psql (Postgresql), sqlplus (oracle), bc, R, rhino, v.v. và như vậy, chạy trên một số nền tảng.

Gọi kiểu MS-DOS này là sai lệch, vì DOS hoặc MS-DOS không phải là những người đầu tiên nghĩ ra nó. Nó già hơn nhiều.

Ngay cả trên Windows, nó cũng không bị hạn chế để chạy các lệnh DOS - một cách thực hành phổ biến của việc viết tệp bó là, để chỉ định một số tham số, trước khi bắt đầu một chương trình Windows. Ví dụ: đặt CLASSPATH, JAVA_HOME, các tham số java như -Xmx, v.v. cho chương trình Java.

Nhiều người nghĩ rằng giao diện dòng lệnh là một đang bị diệt vong của cựu lần - người không biết sức mạnh xử lý hàng ngàn file với một vài tổ hợp phím. Họ cũng không biết về wsh và monad. Nhưng đối với các chuyên gia, một trình thông dịch lệnh trên các cửa sổ gần như hữu ích như trên Unix hoặc Linux. Nó không được biết đến nhiều, nhưng nó rất cần thiết cho nhiều quản trị viên.

Thậm chí còn có một cổng của gnu-toolchain, với sh.exe và sed, awk, bc, tail, rev, cat và tất cả những thứ đó là ứng dụng win32 gốc.

Có thể bạn có thể chạy các chương trình DOS cũ dưới cmd.exe, nhưng bạn không thể chạy các chương trình Windows ở chế độ DOS, vì vậy đừng nói với mọi người rằng cmd.exe DOS - không phải vậy. Và nó không giống như DOS . Ý bạn là gì interactive command-line program, a, a command-line interface.

  • Dấu nhắc DOS
  • Các tệp tin DOS
  • Các lệnh giống như DOS
  • Bảng điều khiển kiểu DOS
  • Ứng dụng DOS

hầu như luôn luôn là thuật ngữ sai lệch . Nó có thể phù hợp với một người nghiệp dư, nhưng nếu bạn muốn khán giả của mình hiểu, bạn đang nói về điều gì, bạn nên tự hỏi: Nó có bị giới hạn trong một hệ điều hành đặc biệt, đối với DOS không? Kiểu CLI có tên tốt nhất là 'Phong cách DOS' không? Điều này có đúng trong lịch sử không? Khán giả của bạn có biết DOS không? Có hữu ích trong việc hiểu? Những chương trình đó có thực sự chạy trên DOS không?

Bạn cần những biểu cảm đúng đắn, sắc bén như con dao của bác sĩ phẫu thuật, để giải thích những điều phức tạp. Biểu hiện sai gây ra ấn tượng sai trong não của khán giả của bạn. Biểu hiện cẩu thả là tồi tệ hơn không có gì. Tránh chúng. Sử dụng CLInếu giao diện dòng lệnh là dài để bạn gõ.

Sửa các thẻ sai lệch trên SU, SE và các mặt khác.


Nói hay lắm. Rất nhiều thuật ngữ xấu xung quanh.
Milind R

Trong Win95 và Win98 không có cmd.exe.
Anixx

2

Trong gia đình Windows NT (NT, 2000, XP, 2003, Vista, 2008, 7) nó độc lập với DOS. Chỉ có các trình giả lập DOS để tương thích ngược.

Tuy nhiên, vẫn còn một số hạn chế là hậu quả của việc tương thích với DOS trong những ngày đầu NT. Ví dụ: bạn không thể tạo tệp hoặc thư mục có tên "CON" hoặc "PRN" vì đó là những tên dành riêng để đại diện cho các thiết bị trong DOS.


1

Trên thực tế, bây giờ Windows không sử dụng DOS nữa. Nhắc đến DOS (hoặc cmd) được mô phỏng qua Windows XP, Vista hoặc Seven. Windows khởi động từ tài nguyên của chính nó.


9
-1: Sai. Không phải vậy to DOS (or cmd). Có một trình thông dịch lệnh, cmd.exe, nhưng đó không phải là DOS. DOS cũng có một trình thông dịch lệnh, lệnh.com, rất giống nhau về cú pháp, từ khóa và cách sử dụng, nhưng giao diện lệnh chỉ là một phần của DOS; Nó không phải là DOS.
người dùng không xác định

Yep consoleLoại trong tiêu đề PE là một phần của hệ thống con Win32 / Win64. Nó hoàn toàn không phải là 16 bit.
dùng2284570
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.