Làm thế nào đa tác vụ có thể có trong các phiên bản Windows cũ hơn?
Xem xét rằng DOS là một hệ điều hành đơn nhiệm vụ và các mối quan hệ của nó với các phiên bản Windows đầu tiên, làm thế nào các phiên bản Windows trước đó quản lý để thực hiện đa tác vụ? Bài hỏi và trả lời của SuperUser hôm nay xem xét các câu trả lời cho câu hỏi này.
Phiên hỏi và trả lời hôm nay đến với chúng tôi nhờ sự hỗ trợ của SuperUser - một phân ngành của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều khiển.
Ảnh chụp màn hình Windows 95 do Wikipedia cung cấp.
Câu hỏi
Trình đọc siêu người dùng LeNoob muốn biết các phiên bản Windows cũ hơn có thể chạy như các hệ thống đa tác vụ như thế nào?:
Tôi đọc được rằng DOS là một hệ điều hành đơn. Nhưng nếu các phiên bản Windows cũ hơn (bao gồm cả Windows 95?) Chỉ là các trình bao bọc cho DOS, thì làm sao chúng có thể chạy như một hệ điều hành đa tác vụ?
Câu hỏi hay! Các phiên bản Windows cũ hơn đã quản lý như thế nào để chạy như các hệ thống đa tác vụ?
Câu trả lời
Những người đóng góp cho SuperUser Bob và Pete có câu trả lời cho chúng tôi. Đầu tiên, Bob:
Windows 95 không chỉ đơn thuần là một trình bao bọc cho MS-DOS. Trích dẫn Raymond Chen:
- MS-DOS đã phục vụ hai mục đích trong Windows 95: 1.) Nó phục vụ như bộ tải khởi động. & 2.) Nó hoạt động như lớp trình điều khiển thiết bị cũ 16 bit.
Windows 95 thực sự đã kết nối / khắc phục tất cả các MS-DOS, giữ nó như một lớp tương thích trong khi thực hiện tất cả các công việc nặng nhọc. Nó cũng đã triển khai đa tác vụ ưu tiên cho các chương trình 32 bit.
Tiền Windows 95
Windows 3.x trở lên chủ yếu là 16 bit (ngoại trừ Win32, một loại lớp tương thích bắc cầu 16 và 32, nhưng chúng tôi sẽ bỏ qua điều đó ở đây), phụ thuộc nhiều hơn vào DOS và chỉ sử dụng đa tác vụ hợp tác - đó là nơi mà họ không buộc một chương trình đang chạy phải tắt; họ chờ chương trình đang chạy để mang lại quyền kiểm soát (về cơ bản, giả sử là tôi đã thực hiện được bằng cách yêu cầu HĐH chạy chương trình tiếp theo đang chờ).
- Đa tác vụ là hợp tác, giống như trong các phiên bản cũ của MacOS (mặc dù không giống như Multi-tasking DOS 4.x, có chức năng đa tác vụ được ưu tiên). Một nhiệm vụ phải nhường cho HĐH để lên lịch cho một nhiệm vụ khác. Sản lượng được tích hợp vào các lệnh gọi API nhất định, đáng chú ý là xử lý tin nhắn. Miễn là một nhiệm vụ xử lý tin nhắn kịp thời, mọi thứ đều tuyệt vời. Nếu một tác vụ dừng xử lý tin nhắn và đang bận thực hiện một số vòng lặp xử lý, thì đa tác vụ sẽ không còn nữa.
Kiến trúc Windows 3.x
Về việc các chương trình Windows sớm sẽ mang lại quyền kiểm soát như thế nào:
- Windows 3.1 sử dụng đa tác vụ hợp tác - có nghĩa là mỗi ứng dụng đang trong quá trình chạy được hướng dẫn kiểm tra định kỳ hàng đợi tin nhắn để tìm hiểu xem có ứng dụng nào khác đang yêu cầu sử dụng CPU hay không, và nếu vậy, để mang lại quyền kiểm soát ứng dụng đó. Tuy nhiên, nhiều ứng dụng Windows 3.1 sẽ chỉ kiểm tra hàng đợi tin nhắn không thường xuyên hoặc hoàn toàn không kiểm soát độc quyền CPU trong bao nhiêu thời gian mà chúng yêu cầu. Một hệ thống đa tác vụ được ưu tiên như Windows 95 sẽ lấy quyền điều khiển CPU khỏi một ứng dụng đang chạy và phân phối nó cho những ứng dụng có mức độ ưu tiên cao hơn dựa trên nhu cầu của hệ thống.
Nguồn
Tất cả các DOS sẽ thấy là ứng dụng đơn này (Windows hoặc khác) đang chạy, sẽ vượt qua sự kiểm soát mà không cần thoát. Về lý thuyết, dù sao thì đa tác vụ ưu tiên có thể được triển khai trên DOS bằng cách sử dụng đồng hồ thời gian thực và các ngắt phần cứng để buộc phải kiểm soát bộ lập lịch. Như Tonny nhận xét, điều này thực sự được thực hiện bởi một số HĐH chạy trên DOS.
Chế độ nâng cao 386?
Lưu ý: đã có một số nhận xét về chế độ nâng cao của Windows 3.x là 32 bit và hỗ trợ đa tác vụ ưu tiên.
Đây là một trường hợp thú vị. Để tóm tắt bài đăng trên blog được liên kết, chế độ nâng cao 386 về cơ bản là một trình ảo hóa 32 bit, chạy các máy ảo. Bên trong một trong những máy ảo đó chạy chế độ tiêu chuẩn Windows 3.x, thực hiện tất cả những thứ được liệt kê ở trên.
MS-DOS cũng sẽ chạy bên trong các máy ảo đó và rõ ràng là chúng hoạt động đa năng trước - do đó, có vẻ như trình ảo hóa chế độ nâng cao 386 sẽ chia sẻ các lát thời gian CPU giữa các máy ảo (một trong số đó chạy bình thường 3.x và những người khác chạy MS-DOS) và mỗi VM sẽ làm việc riêng của mình - 3.x sẽ hợp tác đa tác vụ, trong khi MS-DOS sẽ hoạt động đơn.
MS-DOS
Bản thân DOS chỉ hoạt động đơn lẻ trên giấy, nhưng nó đã hỗ trợ các chương trình TSR sẽ ở trong nền cho đến khi được kích hoạt bởi một ngắt phần cứng. Khác xa với đa tác vụ thực sự, nhưng cũng không hoàn toàn đơn nhiệm.
Tất cả điều này nói về bit-ness? Tôi hỏi về đa tác vụ!
Vâng, nói đúng ra, tính năng bit và đa tác vụ không phụ thuộc vào nhau. Có thể thực hiện bất kỳ chế độ đa tác vụ nào trong mọi chế độ bit. Tuy nhiên, việc chuyển từ bộ xử lý 16 bit sang bộ xử lý 32 bit cũng giới thiệu các chức năng phần cứng khác có thể giúp thực hiện đa tác vụ trước dễ dàng hơn.
Ngoài ra, vì các chương trình 32 bit là mới, nên chúng dễ dàng hoạt động hơn khi chúng bị tắt - điều này có thể đã phá vỡ một số chương trình 16 bit cũ.
Tất nhiên, đây là tất cả suy đoán. Nếu bạn thực sự muốn biết lý do tại sao MS không triển khai đa tác vụ ưu tiên trong Windows 3.x (mặc dù chế độ nâng cao 386), bạn sẽ phải hỏi ai đó làm việc ở đó.
Ngoài ra, tôi muốn sửa lại giả định của bạn rằng Windows 95 chỉ là một trình bao bọc cho DOS.
Tiếp theo là câu trả lời từ Pete:
Trong một hệ điều hành hiện đại, hệ điều hành này kiểm soát tất cả các tài nguyên phần cứng và các ứng dụng đang chạy được giữ trong hộp cát. Một ứng dụng không được phép truy cập vào bộ nhớ mà HĐH chưa phân bổ cho ứng dụng đó và nó không thể truy cập trực tiếp vào các thiết bị phần cứng trong máy tính. Nếu cần truy cập phần cứng, ứng dụng phải giao tiếp thông qua trình điều khiển thiết bị.
HĐH có thể thực thi điều khiển này, vì nó buộc CPU phải vào chế độ được bảo vệ.
Mặt khác, DOS không bao giờ vào chế độ được bảo vệ mà vẫn ở chế độ thực (*xem bên dưới). Trong chế độ thực, các ứng dụng đang chạy có thể thực hiện bất cứ điều gì nó muốn, tức là truy cập trực tiếp vào phần cứng. Nhưng một ứng dụng chạy ở chế độ thực cũng có thể yêu cầu CPU vào chế độ được bảo vệ.
Và phần cuối cùng này cho phép các ứng dụng như Windows 95 bắt đầu một môi trường đa luồng mặc dù về cơ bản chúng đã được khởi chạy từ DOS.
Theo như tôi biết thì DOS (Hệ điều hành đĩa) không nhiều hơn một hệ thống quản lý tập tin. Nó cung cấp một hệ thống tệp, các cơ chế để điều hướng hệ thống tệp, một vài công cụ và khả năng khởi chạy các ứng dụng. Nó cũng cho phép một số ứng dụng ở lại, ví dụ như trình điều khiển chuột và trình giả lập EMM. Nhưng nó đã không cố gắng kiểm soát phần cứng trong máy tính theo cách mà một hệ điều hành hiện đại làm.
*Khi DOS lần đầu tiên được tạo ra vào những năm 1970, chế độ được bảo vệ không tồn tại trong CPU. Mãi đến bộ xử lý 80286 vào giữa những năm 1980, chế độ được bảo vệ mới trở thành một phần của CPU.
Hãy chắc chắn duyệt qua chủ đề ban đầu và đọc qua các cuộc thảo luận sôi nổi về chủ đề này bằng liên kết dưới đây!
Có một cái gì đó để thêm vào lời giải thích? Tắt âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange am hiểu công nghệ khác? Kiểm tra chủ đề thảo luận đầy đủ ở đây.